aboutsummaryrefslogtreecommitdiff
path: root/libk/makefile
blob: 9063f72040fa0c1665f3813b7d74a9b05a5aeb59 (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
38
CXX_OBJ = string/string.o string/integerview.o \
	  stdlib/abort.o stdlib/console.o stdlib/memory.o
CXX_OBJ := $(addprefix $(OBJ_DIR)/, $(CXX_OBJ))
CXX_DEP = $(CXX_OBJ:%.o=%.d)
CXX_JSON = $(CXX_OBJ:.o=.json)

TEST_CXX_OBJ = test/types.o test/string.o test/result.o test/quicksort.o
TEST_CXX_OBJ := $(addprefix $(OBJ_DIR)/, $(TEST_CXX_OBJ))
TEST_CXX_DEP = $(TEST_CXX_OBJ:%.o=%.d)

.PHONY: all test clean
all: $(OBJ_DIR)/libk.a
test: $(TEST_CXX_OBJ)

-include $(CXX_DEP)
$(CXX_OBJ) : $(OBJ_DIR)/%.o : %.cc
	@mkdir -p $(@D)
	@echo "  CXX  $<"
	@$(CXX) -target $(TARGET) $(CXX_FLAGS) $(CXX_INCLUDE) -MMD -MJ$(subst .o,.json,$@) -c $< -o $@

%/libk.a: $(CXX_OBJ)
	@echo "  AR   $(@F)"
	@$(AR) $(AR_FLAGS) rcs $@ $(CXX_OBJ)

# constexpr tests
-include $(TEST_CXX_DEP)
$(TEST_CXX_OBJ): $(OBJ_DIR)/%.o : %.cc
	@mkdir -p $(@D)
	@echo "  TEST $<"
	@$(TEST_CXX) -target $(TARGET) $(TEST_CXX_FLAGS) $(CXX_INCLUDE) -MMD -c $< -o $@

compile_commands.json: $(CXX_JSON)
	@echo [ > $@
	@cat $(CXX_JSON) >> $@
	@echo ] >> $@

clean:
	@rm -f $(CXX_OBJ) $(CXX_TEST_OBJ) $(OBJ_DIR)/libk.a