optimize the menuconfig redrawing
[lunaix-os.git] / lunaix-os / kernel.mk
1 include toolchain.mkinc
2 include lunabuild.mkinc
3
4 include $(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 $(lbuild_config_h)
14
15 tmp_kbin  := $(BUILD_DIR)/tmpk.bin
16 ksymtable := lunaix_ksyms.o
17 klinking  := link/lunaix.ld
18
19 CFLAGS += $(khdr_opts) $(kinc_opts) $(config_h) -MMD -MP
20
21 -include $(ksrc_deps)
22
23 all_linkable = $(filter-out $(klinking),$(1))
24
25 %.S.o: %.S $(khdr_files) kernel.mk
26         $(call status_,AS,$<)
27         @$(CC) $(CFLAGS) -c $< -o $@
28
29 %.c.o: %.c kernel.mk
30         $(call status_,CC,$<)
31         @$(CC) $(CFLAGS) -c $< -o $@
32
33
34 $(klinking): link/lunaix.ldx
35         $(call status_,PP,$<)
36         @$(CC) $(CFLAGS) -x c -E -P $< -o $@
37
38
39 $(tmp_kbin): $(klinking) $(ksrc_objs)
40         $(call status_,LD,$@)
41
42         @$(CC) -T $(klinking) $(config_h) $(LDFLAGS) -o $@ \
43                         $(call all_linkable,$^)
44
45
46 $(ksymtable): $(tmp_kbin)
47         $(call status_,KSYM,$@)
48         @ARCH=$(ARCH) scripts/gen_ksymtable.sh DdRrTtAGg $< > lunaix_ksymtable.S
49
50         @$(CC) $(CFLAGS) -c lunaix_ksymtable.S -o $@
51
52
53 .PHONY: __do_relink
54 __do_relink: $(klinking) $(ksrc_objs) $(ksymtable)
55         $(call status_,LD,$(kbin))
56
57         @$(CC) -T $(klinking) $(config_h) $(LDFLAGS) -o $(kbin) \
58                         $(call all_linkable,$^)
59         
60         @rm $(tmp_kbin)
61
62
63 .PHONY: all
64 all: __do_relink
65
66
67 clean:
68         @rm -f $(ksrc_objs)
69         @rm -f $(ksrc_deps)
70         @rm -f $(klinking)
71         @rm -f lunaix_ksymtable.S $(ksymtable)