summaryrefslogtreecommitdiff
blob: 6259d429852ecfc79aacefd3a9fa99379a4a8df7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
################################################################################
LIBIRCCLIENT_LIB_FLAGS =
include Makefile_libircclient
################################################################################
CFLAGS += -O3
CFLAGS += -Wall -Wextra -pedantic -Werror
CFLAGS += -D_POSIX_SOURCE
CFLAGS += -D_POSIX_C_SOURCE=200809L
CFLAGS += $(LIBIRCCLIENT_LIB_FLAGS)
################################################################################
EXECUTABLE ?= jh-irc
BASE_DIR ?= $(CURDIR)
SRC_DIR ?= $(BASE_DIR)/src
COMPILE_DIR ?= $(BASE_DIR)/compilation_data
################################################################################
SRC_FILES ?= $(shell find $(SRC_DIR) -type f -name *.c)
OBJ_FILES ?= $(patsubst $(SRC_DIR)/%.c,$(COMPILE_DIR)/%.o,$(SRC_FILES))
DEP_FILES ?= $(patsubst %.o,%.d,$(OBJ_FILES))
################################################################################

build: $(EXECUTABLE)

$(OBJ_FILES): $(COMPILE_DIR)/%.o : $(SRC_DIR)/%.c $(COMPILE_DIR)/%.d
	$(CC) $(CFLAGS) -c -o $@ $<

$(DEP_FILES): $(COMPILE_DIR)/%.d: $(SRC_DIR)/%.c
	mkdir -p $(dir $@)
	@set -e; rm -f $@; \
		$(CC) -M $(CFLAGS) $< > $@.$$$$; \
		sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
		rm -f $@.$$$$

$(EXECUTABLE): $(OBJ_FILES)
	$(CC) $(CFLAGS) -o $@ $^

clean:
	rm -fr $(EXECUTABLE) $(COMPILE_DIR)