Be more explicit in Makefiles about external libraries linking
[TD_C.git] / TP_13 / exo1 / Makefile
index 14935a2fd8dc79e9181f3b6f5673762de50e7387..55808324352487727f845abb810d906d6d84f483 100644 (file)
 #
 # Automatic dependencies code from:
 # http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/#tldr
-BINARY_NAME=exo1
+BINARY_NAME:=exo1
 SRC_PATH:=src
-LIBRARY_NAME=libexo1
+LIBRARY_NAME:=lib$(BINARY_NAME)
 LIBRARY_PATH:=lib
-BUILD_TYPE=debug
+LDLIBS:=-l$(BINARY_NAME)
+BUILD_TYPE:=debug
 #BUILD_TYPE=release
 
 # ====================================
@@ -72,10 +73,11 @@ DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$(notdir $*).Td
 POSTCOMPILE = mv -f $(DEPDIR)/$(notdir $*).Td $(DEPDIR)/$(notdir $*).d
 
 ifeq ($(UNAME),Cygwin)
+CYGWIN_DLIBRARY_NAME := $(subst lib,cyg,$(LIBRARY_NAME))
 GOLD_SUPPORT = no
 BINARY_SUFFIX := .exe
 DLIB_SUFFIX := .dll
-CYGWIN_LDLIBS_NOARCHIVE =
+CYGWIN_LDLIBS_NOARCHIVE :=
 CYGWIN_LIBLDFLAGS := -Wl,--out-implib=$(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX).a \
     -Wl,--export-all-symbols \
     -Wl,--enable-auto-import
@@ -97,7 +99,7 @@ LIBCFLAGS := -fPIC $(CFLAGS)
 LDFLAGS := $(LDFLAGS) $(LDFLAGS_LTO) $(LDFLAGS_GOLD) $(STRIP_FLAG)
 LIBLDFLAGS := -shared $(LDFLAGS)
 STATICLIBLDFLAGS := -static $(LDFLAGS)
-LDLIBS := $(LDLIBS) -L$(LIBRARY_PATH) -l$(BINARY_NAME)
+LDLIBS := $(LDLIBS) -L$(LIBRARY_PATH)
 
 all: $(BINARY_NAME)$(BINARY_SUFFIX) $(BINARY_NAME).dynamic$(BINARY_SUFFIX) $(BINARY_NAME).static$(BINARY_SUFFIX)
 
@@ -106,8 +108,8 @@ $(LIBRARY_PATH)/$(SLIB_PREFIX)$(LIBRARY_NAME)$(SLIB_SUFFIX): $(LIBOBJS)
        @$(AR) rcs $@ $^
 
 ifeq ($(UNAME),Cygwin)
-$(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX).a: $(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX)
-$(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX): $(LIBOBJS)
+$(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX).a: $(LIBRARY_PATH)/$(DLIB_PREFIX)$(CYGWIN_DLIBRARY_NAME)$(DLIB_SUFFIX)
+$(LIBRARY_PATH)/$(DLIB_PREFIX)$(CYGWIN_DLIBRARY_NAME)$(DLIB_SUFFIX): $(LIBOBJS)
        @echo "[LD DLL] $@"
        @$(LD) $(LIBCFLAGS) $(LIBLDFLAGS) $(CYGWIN_LIBLDFLAGS) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(CYGWIN_LDLIBS_NOARCHIVE) -o $@
 else
@@ -163,9 +165,11 @@ clean:
        -@rm $(BINARY_NAME).static$(BINARY_SUFFIX)
        -@rm $(BINARY_NAME).dynamic$(BINARY_SUFFIX)
        -@rm $(LIBRARY_PATH)/$(SLIB_PREFIX)$(LIBRARY_NAME)$(SLIB_SUFFIX)
-       -@rm $(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX)
 ifeq ($(UNAME),Cygwin)
+       -@rm $(LIBRARY_PATH)/$(DLIB_PREFIX)$(CYGWIN_DLIBRARY_NAME)$(DLIB_SUFFIX)
        -@rm $(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX).a
+else
+       -@rm $(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX)
 endif
 
 disassemble: $(BINARY_NAME)$(BINARY_SUFFIX)