86f4668910c098fcb70610f4b93a859d5226fb73
[lunaix-os.git] / lunaix-os / kernel.mk
1 include os.mkinc
2 include toolchain.mkinc
3
4 include .builder/lbuild.mkinc
5
6 kbin_dir := $(BUILD_DIR)
7 kbin := $(BUILD_NAME)
8
9 ksrc_objs := $(addsuffix .o,$(_LBUILD_SRCS))
10 ksrc_deps := $(addsuffix .d,$(_LBUILD_SRCS))
11 khdr_opts := $(addprefix -include ,$(_LBUILD_HDRS))
12 kinc_opts := $(addprefix -I,$(_LBUILD_INCS))
13 config_h += -include.builder/configs.h
14
15 tmp_kbin  := $(BUILD_DIR)/tmpk.bin
16 ksymtable := lunaix_ksyms.o
17
18 CFLAGS += $(khdr_opts) $(kinc_opts) $(config_h) -MMD -MP
19
20 -include $(ksrc_deps)
21
22 %.S.o: %.S kernel.mk
23         $(call status_,AS,$<)
24         @$(CC) $(CFLAGS) -c $< -o $@
25
26 %.c.o: %.c kernel.mk
27         $(call status_,CC,$<)
28         @$(CC) $(CFLAGS) -c $< -o $@
29
30 $(tmp_kbin): $(ksrc_objs)
31         $(call status_,LD,$@)
32         @$(CC) -T link/linker.ld $(config_h) $(LDFLAGS) -o $@ $^
33
34 $(ksymtable): $(tmp_kbin)
35         $(call status_,KSYM,$@)
36         @scripts/gen_ksymtable.sh DdRrTtAGg $< > .lunaix_ksymtable.S
37         @$(CC) $(CFLAGS) -c .lunaix_ksymtable.S -o $@
38
39 .PHONY: __do_relink
40 __do_relink: $(ksrc_objs) $(ksymtable)
41         $(call status_,LD,$(kbin))
42         @$(CC) -T link/linker.ld $(config_h) $(LDFLAGS) -o $(kbin) $^
43         @rm $(tmp_kbin)
44
45 .PHONY: all
46 all: __do_relink
47
48 clean:
49         @rm -f $(ksrc_objs)
50         @rm -f $(ksrc_deps)
51         @rm -f .lunaix_ksymtable.S $(ksymtable)