TP 11 exo1: Fix the Makefile to produce the shared and the static
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 6 Mar 2017 20:21:17 +0000 (21:21 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 6 Mar 2017 20:21:17 +0000 (21:21 +0100)
library for linked list

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
.gitignore
TP_11/exo1/Makefile

index 019d038c89430c9922cbfdb53d7570ce06208749..332de4f3a44966531c0c97523a6d3c41a12fc990 100644 (file)
@@ -2,6 +2,9 @@
 # for cygwin  
 *.exe
 
+*.so
+*.a
+
 # editor trash
 *.swp
 *.~
index 6f138af0bfe5368352baf015e4962e56551dea48..d287ee24f6754405c474aa6089686fe006cc09ab 100644 (file)
@@ -20,7 +20,7 @@ BUILD_TYPE=debug
 # DO NOT CHANGE STUFF BEYOND THIS LINE
 # ====================================
 
-all: $(LIBRARY_NAME).a $(BINARY_NAME)
+all: $(LIBRARY_NAME).a $(LIBRARY_NAME).so $(BINARY_NAME)
 
 CC=gcc
 LD=gcc
@@ -41,7 +41,8 @@ STRIP_FLAG = -s
 OPTIFLAG = -O3
 endif
 
-CFLAGS := $(CFLAGS) $(WARN_FLAGS) $(STD_FLAG) $(OPTI_FLAG) $(DEBUG_FLAG)
+#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)
 
@@ -57,17 +58,17 @@ $(shell mkdir -p $(DEPDIR))
 DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
 POSTCOMPILE = mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d
 
-$(BINARY_NAME): $(OBJS)
-       @echo "[LD ] $@"
-       @$(LD) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
+$(LIBRARY_NAME).a: $(OBJSLIB)
+       @echo "[AR StO] $@"
+       @$(AR) rcs $@ $^
 
-$(LIBRARY_NAME).so: $(OBJSLIB) $(BINARY_NAME)
+$(LIBRARY_NAME).so: $(OBJSLIB)
        @echo "[LD ShO] $@"
-       @$(LD) $(CFLAGS) $(LDLIBFLAGS) $^ $(LDLIBS) -o $@
+       @$(LD) $(CFLAGS) $(LIBLDFLAGS) $^ -o $@
 
-$(LIBRARY_NAME).a: $(OBJS)
-       @echo "[AR StO] $@"
-       @$(AR) rcs $@ $^
+$(BINARY_NAME): $(OBJS)
+       @echo "[LD ] $@"
+       @$(LD) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
 
 $(OBJDIR)/%.o: %.c $(DEPDIR)/%.d
        @echo "[C  ] $*"