3a6f4c project: added rules for install-headers, simplified include path scheme.

Authored and Committed by midipix 6 years ago
    project: added rules for install-headers, simplified include path scheme.
    
        
file modified
+2 -6
config.project CHANGED
@@ -1,7 +1,7 @@
1
1
# project
2
2
mb_package=c
3
3
mb_require_out_of_tree=no
4
- mb_custom_install_headers=no
4
+ mb_custom_install_headers=yes
5
5
mb_avoid_version=no
6
6
7
7
# config
@@ -34,13 +34,9 @@ mb_default_cflags_common="-std=c99 -pipe -D_XOPEN_SOURCE=700"
34
34
mb_default_cflags_common="$mb_default_cflags_common -ffreestanding -nostdinc"
35
35
mb_default_cflags_common="$mb_default_cflags_common -fomit-frame-pointer"
36
36
mb_default_cflags_common="$mb_default_cflags_common -Ibuild/include"
37
- mb_default_cflags_common="$mb_default_cflags_common -I\$(SOURCE_DIR)/arch/\$(ARCH)"
37
+ mb_default_cflags_common="$mb_default_cflags_common -I\$(PORT_DIR)/arch/\$(ARCH)"
38
- mb_default_cflags_common="$mb_default_cflags_common -I\$(PROJECT_DIR)/arch/\$(ARCH)"
39
- mb_default_cflags_common="$mb_default_cflags_common -I\$(SOURCE_DIR)/arch/\$(ARCH)/generic"
40
- mb_default_cflags_common="$mb_default_cflags_common -Iobj/src/internal"
41
38
mb_default_cflags_common="$mb_default_cflags_common -I\$(SOURCE_DIR)/src/include"
42
39
mb_default_cflags_common="$mb_default_cflags_common -I\$(SOURCE_DIR)/src/internal"
43
- mb_default_cflags_common="$mb_default_cflags_common -Iobj/include"
44
40
mb_default_cflags_common="$mb_default_cflags_common -I\$(SOURCE_DIR)/include"
45
41
mb_default_cflags_common="$mb_default_cflags_common -Ibuild"
46
42
file modified
+66 -8
project/headers.mk CHANGED
@@ -1,4 +1,7 @@
1
1
# alltypes.h, syscall.h
2
+ build/include/bits/:
3
+ mkdir -p $@
4
+
2
5
ALLTYPES_H = build/include/bits/alltypes.h
3
6
SYSCALL_H = build/include/bits/syscall.h
4
7
@@ -9,15 +12,17 @@ ALLTYPES_DEPS = \
9
12
$(SOURCE_DIR)/include/alltypes.h.in \
10
13
$(SOURCE_DIR)/tools/mkalltypes.sed
11
14
12
- $(ALLTYPES_H): build/headers.tag $(ALLTYPES_DEPS)
15
+ $(ALLTYPES_H): $(ALLTYPES_DEPS) build/include/bits/
13
16
sed -f $(SOURCE_DIR)/tools/mkalltypes.sed \
14
17
$(PORT_DIR)/arch/$(ARCH)/bits/alltypes.h.in \
15
18
$(SOURCE_DIR)/include/alltypes.h.in > $@
16
19
17
- syscall-copy: $(PORT_DIR)/arch/$(ARCH)/bits/syscall.h build/headers.tag
20
+ syscall-copy: | build/include/bits/
21
+ syscall-copy: $(PORT_DIR)/arch/$(ARCH)/bits/syscall.h
18
22
cp $< $(SYSCALL_H)
19
23
20
- syscall-gen: $(PORT_DIR)/arch/$(ARCH)/bits/syscall.h.in build/headers.tag
24
+ syscall-gen: | build/include/bits/
25
+ syscall-gen: $(PORT_DIR)/arch/$(ARCH)/bits/syscall.h.in
21
26
cp $< $(SYSCALL_H).tmp
22
27
sed -n -e 's/__NR_/SYS_/p' < $< >> $(SYSCALL_H).tmp
23
28
mv $(SYSCALL_H).tmp $(SYSCALL_H)
@@ -25,15 +30,68 @@ syscall-gen: $(PORT_DIR)/arch/$(ARCH)/bits/syscall.h.in build/headers.tag
25
30
$(SYSCALL_H): syscall-arch
26
31
27
32
33
+ # arch headers
34
+ libc_bits_h = $(sort $(wildcard $(SOURCE_DIR)/arch/generic/bits/*.h))
35
+ port_bits_h = $(sort $(wildcard $(PORT_DIR)/arch/$(ARCH)/bits/*.h))
36
+ port_substs_h = $(subst $(PORT_DIR)/arch/$(ARCH)/, \
37
+ $(SOURCE_DIR)/arch/generic/,\
38
+ $(port_bits_h))
39
+
40
+ ARCH_HEADERS = $(port_bits_h) $(filter-out $(port_substs_h), $(libc_bits_h))
41
+
42
+ src_bits_h = $(ARCH_GEN_H)
43
+ src_bits_h += $(subst $(SOURCE_DIR)/arch/generic/,build/include/,\
44
+ $(subst $(PORT_DIR)/arch/$(ARCH)/,build/include/, \
45
+ $(ARCH_HEADERS)))
46
+
47
+ dst_bits_h = $(src_bits_h:build/include/%=$(DESTDIR)$(INCLUDEDIR)/%)
48
+
49
+
50
+ # libc headers
51
+ src_header_dirs = $(filter %/,$(wildcard $(SOURCE_DIR)/include/*/))
52
+ dst_header_dirs = $(src_header_dirs:$(SOURCE_DIR)/include/%=$(DESTDIR)$(INCLUDEDIR)/%)
53
+
54
+ src_c_headers = $(sort $(wildcard $(SOURCE_DIR)/include/*.h))
55
+ src_c_headers += $(sort $(wildcard $(SOURCE_DIR)/include/*/*.h))
56
+
57
+ dst_c_headers = $(subst $(SOURCE_DIR)/include/, \
58
+ $(DESTDIR)$(INCLUDEDIR)/, \
59
+ $(src_c_headers))
60
+
61
+ $(dst_header_dirs):
62
+ mkdir -p $@
63
+
64
+ build/include/bits/%.h: build/headers.tag
65
+
66
+ $(DESTDIR)$(INCLUDEDIR)/bits/:
67
+ mkdir -p $@
68
+
69
+ $(DESTDIR)$(INCLUDEDIR)/bits/%.h: build/include/bits/%.h $(DESTDIR)$(INCLUDEDIR)/bits/
70
+ cp $< $@.tmp
71
+ chmod 0644 $@.tmp
72
+ mv $@.tmp $@
73
+
74
+ $(DESTDIR)$(INCLUDEDIR)/%.h: | $(dst_header_dirs)
75
+ $(DESTDIR)$(INCLUDEDIR)/%.h: $(SOURCE_DIR)/include/%.h
76
+ cp -p $< $@.tmp
77
+ chmod 0644 $@.tmp
78
+ mv $@.tmp $@
79
+
80
+ install-arch-headers: build/headers.tag $(src_bits_h) $(dst_bits_h)
81
+
82
+ install-libc-headers: $(dst_header_dirs) $(dst_c_headers)
83
+
84
+ install-headers: install-arch-headers install-libc-headers
85
+
28
86
29
87
# build/include
30
- build/headers.tag:
31
- mkdir -p build/include
32
- mkdir -p build/include/bits
33
- touch $@
88
+ build/headers.tag: | build/include/bits/
89
+ build/headers.tag: $(ARCH_HEADERS)
90
+ cp $(ARCH_HEADERS) build/include/bits/
91
+ touch $@
34
92
35
93
clean-headers:
36
- rm -f $(ARCH_GEN_H)
94
+ rm -f $(src_bits_h)
37
95
rm -f $(SYSCALL_H).tmp
38
96
rmdir build/include/bits 2>/dev/null || true
39
97
rmdir build/include 2>/dev/null || true