refactor: clean up Makefiles
							parent
							
								
									fb4a9a3b2e
								
							
						
					
					
						commit
						0229db027d
					
				| 
						 | 
					@ -1,6 +1,4 @@
 | 
				
			||||||
*
 | 
					data/
 | 
				
			||||||
 | 
					build/
 | 
				
			||||||
!src/
 | 
					trie/build/
 | 
				
			||||||
!Makefile
 | 
					.git/
 | 
				
			||||||
!thirdparty/
 | 
					 | 
				
			||||||
!include/
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,8 +18,9 @@ RUN curl -Lo - "https://github.com/Yelp/dumb-init/archive/refs/tags/v${DI_VER}.t
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY . ./
 | 
					COPY . ./
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN make CFLAGS='-O3 -static' LDFLAGS='-flto' && \
 | 
					RUN make CFLAGS='-O3' LDFLAGS='-static -flto' && \
 | 
				
			||||||
    strip build/lander && \
 | 
					    strip build/lander && \
 | 
				
			||||||
 | 
					    readelf -d build/lander && \
 | 
				
			||||||
    [ "$(readelf -d build/lander | grep NEEDED | wc -l)" = 0 ]
 | 
					    [ "$(readelf -d build/lander | grep NEEDED | wc -l)" = 0 ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										34
									
								
								Makefile
								
								
								
								
							| 
						 | 
					@ -1,18 +1,10 @@
 | 
				
			||||||
# https://spin.atomicobject.com/2016/08/26/makefile-c-projects/ was a great
 | 
					# https://spin.atomicobject.com/2016/08/26/makefile-c-projects/ was a great
 | 
				
			||||||
# base for this Makefile
 | 
					# base for this Makefile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VERSION := 0.1.0
 | 
					-include config.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BIN_FILENAME ?= lander
 | 
					export CFLAGS
 | 
				
			||||||
 | 
					export LDFLAGS
 | 
				
			||||||
BUILD_DIR ?= build
 | 
					 | 
				
			||||||
SRC_DIR ?= src
 | 
					 | 
				
			||||||
TEST_DIR ?= test
 | 
					 | 
				
			||||||
THIRDPARTY_DIR ?= thirdparty
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INC_DIRS ?= include $(THIRDPARTY_DIR)/include trie/include
 | 
					 | 
				
			||||||
LIBS ?= trie m
 | 
					 | 
				
			||||||
LIB_DIRS ?= ./trie/build
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
BIN := $(BUILD_DIR)/$(BIN_FILENAME)
 | 
					BIN := $(BUILD_DIR)/$(BIN_FILENAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,23 +23,11 @@ BINS_TEST := $(OBJS_TEST:%.c.o=%)
 | 
				
			||||||
TARGETS_TEST := $(BINS_TEST:%=test-%)
 | 
					TARGETS_TEST := $(BINS_TEST:%=test-%)
 | 
				
			||||||
TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%)
 | 
					TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
INC_FLAGS := $(addprefix -I,$(INC_DIRS))
 | 
					_CFLAGS := $(addprefix -I,$(INC_DIRS)) $(CFLAGS) -Wall -Wextra -DLANDER_VERSION=\"$(VERSION)\"
 | 
				
			||||||
 | 
					 | 
				
			||||||
# -MMD: generate a .d file for every source file. This file can be imported by
 | 
					 | 
				
			||||||
#  make and makes make aware that a header file has been changed, ensuring an
 | 
					 | 
				
			||||||
#  object file is also recompiled if only a header is changed.
 | 
					 | 
				
			||||||
# -MP: generate a dummy target for every header file (according to the  docs it
 | 
					 | 
				
			||||||
#  prevents some errors when removing header files)
 | 
					 | 
				
			||||||
CFLAGS ?= -MMD -MP -g
 | 
					 | 
				
			||||||
_CFLAGS := $(INC_FLAGS) $(CFLAGS) -Wall -Wextra -DLANDER_VERSION=\"$(VERSION)\"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_LDFLAGS := $(addprefix -L,$(LIB_DIRS)) $(addprefix -l,$(LIBS)) $(LDFLAGS)
 | 
					_LDFLAGS := $(addprefix -L,$(LIB_DIRS)) $(addprefix -l,$(LIBS)) $(LDFLAGS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export CFLAGS
 | 
					 | 
				
			||||||
export LDFLAGS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.PHONY: all
 | 
					.PHONY: all
 | 
				
			||||||
all: bin
 | 
					all: $(BIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# =====COMPILATION=====
 | 
					# =====COMPILATION=====
 | 
				
			||||||
| 
						 | 
					@ -60,8 +40,7 @@ libtrie:
 | 
				
			||||||
	$(MAKE) -C trie
 | 
						$(MAKE) -C trie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: bin
 | 
					.PHONY: bin
 | 
				
			||||||
bin: $(BIN)
 | 
					$(BIN): libtrie $(OBJS)
 | 
				
			||||||
$(BIN): $(OBJS) libtrie
 | 
					 | 
				
			||||||
	$(CC) -o $@ $(OBJS) $(_LDFLAGS)
 | 
						$(CC) -o $@ $(OBJS) $(_LDFLAGS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(BUILD_DIR)/$(SRC_DIR)/%.c.o: $(SRC_DIR)/%.c
 | 
					$(BUILD_DIR)/$(SRC_DIR)/%.c.o: $(SRC_DIR)/%.c
 | 
				
			||||||
| 
						 | 
					@ -111,6 +90,7 @@ $(BUILD_DIR)/$(TEST_DIR)/%.c.o: $(TEST_DIR)/%.c
 | 
				
			||||||
		-I$(dir $(@:$(BUILD_DIR)/$(TEST_DIR)/%=$(SRC_DIR)/%)) \
 | 
							-I$(dir $(@:$(BUILD_DIR)/$(TEST_DIR)/%=$(SRC_DIR)/%)) \
 | 
				
			||||||
		-c $< -o $@
 | 
							-c $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# =====MAINTENANCE=====
 | 
					# =====MAINTENANCE=====
 | 
				
			||||||
.PHONY: lint
 | 
					.PHONY: lint
 | 
				
			||||||
lint:
 | 
					lint:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					VERSION := 0.1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BIN_FILENAME = lander
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUILD_DIR      = build
 | 
				
			||||||
 | 
					SRC_DIR        = src
 | 
				
			||||||
 | 
					TEST_DIR       = test
 | 
				
			||||||
 | 
					THIRDPARTY_DIR = thirdparty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INC_DIRS  = include $(THIRDPARTY_DIR)/include trie/include
 | 
				
			||||||
 | 
					LIBS      = trie m
 | 
				
			||||||
 | 
					LIB_DIRS  = ./trie/build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -MMD: generate a .d file for every source file. This file can be imported by
 | 
				
			||||||
 | 
					#  make and makes make aware that a header file has been changed, ensuring an
 | 
				
			||||||
 | 
					#  object file is also recompiled if only a header is changed.
 | 
				
			||||||
 | 
					# -MP: generate a dummy target for every header file (according to the  docs it
 | 
				
			||||||
 | 
					#  prevents some errors when removing header files)
 | 
				
			||||||
 | 
					CFLAGS = -MMD -MP -g
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# When compiling release builds, these flags are better
 | 
				
			||||||
 | 
					# CLAGS = -O3
 | 
				
			||||||
 | 
					# LDFLAGS = -flto
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,7 @@
 | 
				
			||||||
# https://spin.atomicobject.com/2016/08/26/makefile-c-projects/ was a great
 | 
					# https://spin.atomicobject.com/2016/08/26/makefile-c-projects/ was a great
 | 
				
			||||||
# base for this Makefile
 | 
					# base for this Makefile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIB_FILENAME ?= libtrie.a
 | 
					-include config.mk
 | 
				
			||||||
 | 
					 | 
				
			||||||
BUILD_DIR ?= build
 | 
					 | 
				
			||||||
SRC_DIR ?= src
 | 
					 | 
				
			||||||
TEST_DIR ?= test
 | 
					 | 
				
			||||||
INC_DIRS ?= include
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
LIB := $(BUILD_DIR)/$(LIB_FILENAME)
 | 
					LIB := $(BUILD_DIR)/$(LIB_FILENAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,15 +18,7 @@ BINS_TEST := $(OBJS_TEST:%.c.o=%)
 | 
				
			||||||
TARGETS_TEST := $(BINS_TEST:%=test-%)
 | 
					TARGETS_TEST := $(BINS_TEST:%=test-%)
 | 
				
			||||||
TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%)
 | 
					TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
INC_FLAGS := $(addprefix -I,$(INC_DIRS))
 | 
					_CFLAGS := $(addprefix -I,$(INC_DIRS)) $(CFLAGS) -Wall -Wextra
 | 
				
			||||||
 | 
					 | 
				
			||||||
# -MMD: generate a .d file for every source file. This file can be imported by
 | 
					 | 
				
			||||||
#  make and makes make aware that a header file has been changed, ensuring an
 | 
					 | 
				
			||||||
#  object file is also recompiled if only a header is changed.
 | 
					 | 
				
			||||||
# -MP: generate a dummy target for every header file (according to the  docs it
 | 
					 | 
				
			||||||
#  prevents some errors when removing header files)
 | 
					 | 
				
			||||||
CFLAGS ?= -MMD -MP -g
 | 
					 | 
				
			||||||
_CFLAGS := $(INC_FLAGS) $(CFLAGS) -Wall -Wextra
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: all
 | 
					.PHONY: all
 | 
				
			||||||
all: lib
 | 
					all: lib
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					LIB_FILENAME = libtrie.a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUILD_DIR = build
 | 
				
			||||||
 | 
					SRC_DIR = src
 | 
				
			||||||
 | 
					TEST_DIR = test
 | 
				
			||||||
 | 
					INC_DIRS = include
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# -MMD: generate a .d file for every source file. This file can be imported by
 | 
				
			||||||
 | 
					#  make and makes make aware that a header file has been changed, ensuring an
 | 
				
			||||||
 | 
					#  object file is also recompiled if only a header is changed.
 | 
				
			||||||
 | 
					# -MP: generate a dummy target for every header file (according to the  docs it
 | 
				
			||||||
 | 
					#  prevents some errors when removing header files)
 | 
				
			||||||
 | 
					CFLAGS = -MMD -MP -g
 | 
				
			||||||
		Loading…
	
		Reference in New Issue