| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 33 |
1 files changed, 20 insertions, 13 deletions
@@ -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) |


