summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile33
1 files changed, 20 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index d3fca0f..6259d42 100644
--- a/Makefile
+++ b/Makefile
@@ -1,30 +1,37 @@
################################################################################
-PTHREADS_LIB_FLAGS = -pthread
LIBIRCCLIENT_LIB_FLAGS =
include Makefile_libircclient
################################################################################
CFLAGS += -O3
+CFLAGS += -Wall -Wextra -pedantic -Werror
CFLAGS += -D_POSIX_SOURCE
CFLAGS += -D_POSIX_C_SOURCE=200809L
-CFLAGS += $(PTHREADS_LIB_FLAGS)
CFLAGS += $(LIBIRCCLIENT_LIB_FLAGS)
################################################################################
-EXECUTABLE = jh-irc
-SRC_DIR = ./src
+EXECUTABLE ?= jh-irc
+BASE_DIR ?= $(CURDIR)
+SRC_DIR ?= $(BASE_DIR)/src
+COMPILE_DIR ?= $(BASE_DIR)/compilation_data
################################################################################
-export
+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)
-$(EXECUTABLE): $(SRC_DIR)/export.a
- $(CC) $(CFLAGS) -o $@ $<
+$(OBJ_FILES): $(COMPILE_DIR)/%.o : $(SRC_DIR)/%.c $(COMPILE_DIR)/%.d
+ $(CC) $(CFLAGS) -c -o $@ $<
-$(SRC_DIR)/export.a: .JUST_CHECK
- $(MAKE) -C $(SRC_DIR) export.a
+$(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 $@.$$$$
-clean:
- $(MAKE) -C $(SRC_DIR) clean
- rm -f $(EXECUTABLE)
+$(EXECUTABLE): $(OBJ_FILES)
+ $(CC) $(CFLAGS) -o $@ $^
-.JUST_CHECK:
+clean:
+ rm -fr $(EXECUTABLE) $(COMPILE_DIR)