From b3867d1d28968cf0790fbfa4413d0a8aec7949ef Mon Sep 17 00:00:00 2001 From: M.Gergő Date: Tue, 26 May 2020 17:39:24 +0200 Subject: Make dynamic lib --- makefile | 51 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'makefile') 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) -- cgit v1.2.3