aboutsummaryrefslogtreecommitdiff
path: root/drivers/makefile
blob: 65bf22de05b6d66ee2444aa3cce85c34e1f20620 (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
39
40
include ../common.mk

CXX_OBJ = cga.o serial.o keyboard.o
CXX_OBJ := $(addprefix $(OBJ_DIR)/libd/, $(CXX_OBJ))
CXX_DEP = $(CXX_OBJ:%.o=%.d)
CXX_JSON = $(CXX_OBJ:.o=.json)

HWH := drivers/hardware.h
autogen := $(autogen) $(HWH)

.PHONY: all clean
all: $(OBJ_DIR)/libd.a

$(HWH): .config
	@echo "  GEN  $@"
	@echo \/\* autogenerated hardware description \*\/ > $(HWH)
	@echo \#pragma once >> $(HWH)
ifdef CONFIG_video0_enable
	@echo \#define HAS_VIDEO0 >> $(HWH)
	@echo $(CONFIG_VIDEO0_CLASS) video0\; >> $(HWH)
	@echo constexpr bool video0_console = true\; >> $(HWH)
endif
ifdef CONFIG_serial0_enable
	@echo \#define HAS_SERIAL0 >> $(HWH)
	@echo $(CONFIG_SERIAL0_CLASS) serial0\; >> $(HWH)
	@echo constexpr bool serial0_console = true\; >> $(HWH)
endif

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

$(OBJ_DIR)/libd.a: $(CXX_OBJ)
	@echo "  AR   $(@F)"
	@$(AR) $(AR_FLAGS) rcs $@ $(CXX_OBJ)

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