# 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
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))
$(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 $@
@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