make rule for user header file install
[lunaix-os.git] / lunaix-os / kernel.mk
1 include kbuild_deps.mkinc
2
3 kbin_dir := $(BUILD_DIR)
4 kbin := $(BUILD_NAME)
5
6 tmp_kbin  := $(BUILD_DIR)/tmpk.bin
7 klinking  := link/lunaix.ld
8
9 CFLAGS += $(kcflags) -MMD -MP
10
11 all_linkable = $(filter-out $(klinking),$(1))
12
13 %.S.o: %.S $(khdr_files) kernel.mk
14         $(call status,AS,$<)
15         @$(CC) $(CFLAGS) -c $< -o $@
16
17 %.c.o: %.c kernel.mk
18         $(call status,CC,$<)
19         @$(CC) $(CFLAGS) -c $< -o $@
20
21
22 $(klinking): link/lunaix.ldx
23         $(call status,PP,$<)
24         @$(CC) $(CFLAGS) -x c -E -P $< -o $@
25
26
27 $(tmp_kbin): $(klinking) $(ksrc_objs)
28         $(call status,LD,$@)
29
30         @$(CC) -T $(klinking) $(config_h) $(LDFLAGS) -o $@ \
31                         $(call all_linkable,$^)
32
33 ksymtable := lunaix_ksyms.o
34 ksecsmap  := lunaix_ksecsmap.o
35
36 kautogen  := $(ksecsmap) $(ksymtable)
37
38 $(ksymtable): $(tmp_kbin)
39         $(call status,KSYM,$@)
40         @ARCH=$(ARCH) scripts/gen-ksymtable DdRrTtAGg $< > lunaix_ksymtable.S
41
42         @$(CC) $(CFLAGS) -c lunaix_ksymtable.S -o $@
43
44 $(ksecsmap): $(tmp_kbin)
45         $(call status,KGEN,$@)
46         @scripts/elftool.tool -p -i $< > lunaix_ksecsmap.S
47
48         @$(CC) $(CFLAGS) -c lunaix_ksecsmap.S -o $@
49
50 .PHONY: __do_relink
51
52 __do_relink: $(klinking) $(ksrc_objs) $(kautogen)
53         $(call status,LD,$(kbin))
54
55         @$(CC) -T $(klinking) $(config_h) $(LDFLAGS) -o $(kbin) \
56                         $(call all_linkable,$^)
57         
58         @rm $(tmp_kbin)
59
60
61 .PHONY: all
62 all: __do_relink
63
64
65 clean:
66         @rm -f $(ksrc_objs)
67         @rm -f $(ksrc_deps)
68         @rm -f $(klinking)
69         @rm -f lunaix_ksymtable.S $(ksymtable)