TP 11 exo1: Makefile: differenciate the compiliator flags for libraries
[TD_C.git] / TP_11 / exo2 / Makefile
index 50191de500f748c8923002c3d6175f2f082a35f3..6f840e6e8bcda47f43c28d7a98d3c071b9197695 100644 (file)
 # Automatic dependencies code from:
 # http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/#tldr
 BINARY_NAME=exo2
-LIBOBJS=clist.o ui.o# object to put in the library
+LIBOBJS=clist.o ui.o # object to put in the library
 LIBRARY_NAME=libtpC
-#LDLIBS=-L. -ltpC
 BUILD_TYPE=debug
 
 # ====================================
 # DO NOT CHANGE STUFF BEYOND THIS LINE
 # ====================================
 
-all: $(BINARY_NAME) $(BINARY_NAME).dynamic $(BINARY_NAME).staticlocal
+all: $(BINARY_NAME) $(BINARY_NAME).static $(BINARY_NAME).staticlocal $(BINARY_NAME).dynamic
 
 CC=gcc
 LD=gcc
@@ -39,13 +38,14 @@ else
 BUILDDIR := .build/release
 DEBUG_FLAG =
 STRIP_FLAG = -s
-OPTIFLAG = -O3
+OPTI_FLAG = -O3
 endif
 
 #FIXME: Add a way to better control the library build
 CFLAGS := -fPIC $(CFLAGS) $(WARN_FLAGS) $(STD_FLAG) $(OPTI_FLAG) $(DEBUG_FLAG)
 LDFLAGS := $(LDFLAGS) $(STRIP_FLAG)
 LIBLDFLAGS := -shared $(LDFLAGS)
+STATICLDFLAGS := -static $(LDFLAGS)
 
 OBJDIR := $(BUILDDIR)/objs
 $(shell mkdir -p $(OBJDIR))
@@ -65,13 +65,17 @@ $(LIBRARY_NAME).a: $(OBJSLIB)
 
 $(LIBRARY_NAME).so: $(OBJSLIB)
        @echo "[LD ShO] $@"
-       @$(LD) $(CFLAGS) $(LIBLDFLAGS) $^ $(LDLIBS) -o $@
+       @$(LD) $(CFLAGS) $(LIBLDFLAGS) $^ -o $@
 
 $(BINARY_NAME): $(OBJS)
        @echo "[LD ] $@"
        @$(LD) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
 
 LOCALLDLIBS=-L. -ltpC
+$(BINARY_NAME).static: $(OBJDIR)/$(BINARY_NAME).o $(LIBRARY_NAME).a
+       @echo "[LD ] $@"
+       @$(LD) $(CFLAGS) $(STATICLDFLAGS) $^ $(LOCALLDLIBS) $(LDLIBS) -o $@
+
 $(BINARY_NAME).staticlocal: $(OBJDIR)/$(BINARY_NAME).o $(LIBRARY_NAME).a
        @echo "[LD ] $@"
        @$(LD) $(CFLAGS) $(LDFLAGS) $^ $(LOCALLDLIBS) $(LDLIBS) -o $@
@@ -95,10 +99,11 @@ clean:
        @echo "[CLN]"
        -@rm -r $(BUILDDIR)
        -@rm $(BINARY_NAME)
+       -@rm $(BINARY_NAME).static
        -@rm $(BINARY_NAME).staticlocal
        -@rm $(BINARY_NAME).dynamic
-       -@rm $(LIBRARY_NAME).so
        -@rm $(LIBRARY_NAME).a
+       -@rm $(LIBRARY_NAME).so
 
 disassemble: $(BINARY_NAME)
        objdump -d $< | less