Makefile (1000B) download
1SOURCE_PATH := src
2OBJECT_PATH := dist
3BIN_PATH := bin
4EXECUTABLE := init
5EXEC_SRC_PATH := src/exec
6
7CC := gcc
8CFLAGS := -O2 -Wall -Wextra -Iincl
9LDFLAGS := -static
10
11EXEC_SRC_FILES := $(wildcard $(EXEC_SRC_PATH)/*.c)
12EXEC_FILES := $(patsubst $(EXEC_SRC_PATH)/%.c,$(BIN_PATH)/%,$(EXEC_SRC_FILES))
13
14SOURCE_FILES := $(wildcard $(SOURCE_PATH)/*.c)
15OBJECT_FILES := $(patsubst $(SOURCE_PATH)/%.c,$(OBJECT_PATH)/%.o,$(SOURCE_FILES))
16
17.PRECIOUS: $(OBJECT_PATH)/%.o
18
19all: compile_flags.txt $(EXEC_FILES)
20
21clean:
22 rm -rf $(BIN_PATH) $(OBJECT_PATH)
23
24$(BIN_PATH) $(OBJECT_PATH):
25 mkdir -p $@
26
27$(OBJECT_PATH)/%.o: $(SOURCE_PATH)/%.c Makefile $(HEADER_FILES) | $(OBJECT_PATH)
28 $(CC) -o $@ -c $(CFLAGS) $<
29
30$(BIN_PATH)/%: $(EXEC_SRC_PATH)/%.c $(OBJECT_FILES) $(HEADER_FILES) | $(BIN_PATH)
31 $(CC) -o $@ $(CFLAGS) $< $(OBJECT_FILES) $(LDFLAGS) $(LDFLAGS_$(patsubst $(BIN_PATH)/%,%,$@))
32
33compile_flags.txt: Makefile
34 echo $(CFLAGS) | tr " " "\n" > compile_flags.txt