aboutsummaryrefslogtreecommitdiffstats
path: root/makefile
diff options
context:
space:
mode:
authorM.Gergő2020-05-26 17:39:24 +0200
committerM.Gergő2020-05-26 17:39:24 +0200
commitb3867d1d28968cf0790fbfa4413d0a8aec7949ef (patch)
treee89440dee6ae98956885470caf2a6e7efb2a0c0a /makefile
parentfa19b34f49f6c85a4abf211762a15285d9f76310 (diff)
downloadlightconfini-b3867d1d28968cf0790fbfa4413d0a8aec7949ef.tar.gz
lightconfini-b3867d1d28968cf0790fbfa4413d0a8aec7949ef.zip
Make dynamic lib
Diffstat (limited to 'makefile')
-rw-r--r--makefile51
1 files changed, 39 insertions, 12 deletions
diff --git a/makefile b/makefile
index 8cab41f..e9d38df 100644
--- a/makefile
+++ b/makefile
@@ -1,4 +1,4 @@
-.PHONY: all clean debug distclean
+.PHONY: all clean install copylib ldconf lib debug distclean
# buid & link with gcc
CC = gcc
@@ -8,60 +8,87 @@ LD = gcc
MKD = /bin/mkdir -p
# A '-' jel miatt átugorja a hibát
RM = -/bin/rm
-
+CP = -/bin/cp
# fordíto általános flagek
-CFLAGS = -Wall
+CFLAGS = -Wall -c
LDFLAGS =
LDLIBS =
-
+# Ha libdir-be "lib"-et írunk, akkor körbeforgó fggőség lesz belőle
BINDIR = bin
+LIBDIR = libdir
OBJDIR = build
+
# .o fájlok
-OBJ = main.o ini_read.o
+OBJ = main.o ini_read.o ini_write.o
PROG = $(BINDIR)/lightconfini
+LIB = $(LIBDIR)/liblightconfini.so.1.0.1
+lib: OBJ := $(filter-out main.o, $(OBJ))
OBJS = $(addprefix $(OBJDIR)/,$(OBJ))
# ALL kell legyen legelőször!
+# Az sem mindegy, hogy mellette van, vagy alatta egy sorral!
all: $(PROG)
+lib: clean $(LIB)
+debug: clean all
+install: lib copylib
+testlib: clean all
# debug-hoz felüldefiniálva
-debug: CFLAGS = -Wall -g -g3 -ggdb -std=c89 -Wpedantic -Wmissing-prototypes
+debug: CFLAGS = -Wall -c -g -g3 -ggdb -std=c89 -Wpedantic -Wmissing-prototypes
debug: LDFLAGS =
debug: LDLIBS = -lefence
+# make lib FLAGS: not link: -c, relative addresses: -fPIC
+lib: CFLAGS = -fPIC -c -Wall
+lib: LDFLAGS = -shared -Wl,-soname,liblightconfini.so.1
+lib: LDLIBS = -lc
# nem mindegy, hogy mellette van, vagy alatta egy sorral!
-debug: clean all
# Ha még nem létezik az obj könyvtár, létrehozza
$(OBJS): | $(OBJDIR)
$(PROG): | $(BINDIR)
+$(LIB): | $(LIBDIR)
# Fordított sorrend: először a főprogram
$(PROG): $(OBJS)
- $(LD) $(LDFLAGS) $(OBJS) -o $(PROG) $(LDLIBS)
+ $(LD) $(LDFLAGS) -o $(PROG) $(OBJS) $(LDLIBS)
+ @echo ' '
+
+# For shared library
+$(LIB): $(OBJS)
+ $(LD) $(LDFLAGS) $(OBJS) -o $(LIB) $(LDLIBS)
@echo ' '
# Utána: A forrásfájlok fordítása egyesével
$(OBJS): $(OBJDIR)/%.o: ./src/%.c
- $(CC) $(CFLAGS) -c -o "$@" "$<"
+ $(CC) $(CFLAGS) -o "$@" "$<"
# OBJ létrehozáshoz
$(BINDIR):
$(MKD) $(BINDIR)
$(OBJDIR):
$(MKD) $(OBJDIR)
+$(LIBDIR):
+ $(MKD) $(LIBDIR)
rebuild: clean all
+copylib:
+ $(CP) -r $(LIBDIR)/* /usr/local/lib/
+ ldconfig
+
+ldconf:
+ ldconfig -n $(LIBDIR)
+
clean:
- $(RM) $(PROG) $(OBJS)
+ $(RM) $(OBJS)
-distclean:
- $(RM) -r $(PROG) $(OBJS) bin/ build/
+distclean: clean
+ $(RM) -r $(OBJS) $(LIBDIR) $(BINDIR) $(OBJDIR)