1
- # Basic build configuration
2
- verbose ?= n
3
- config ?= .config
4
-
5
- ifeq (,$(filter $(MAKECMDGOALS ) ,configure clean distclean) )
6
- -include $(config )
7
- endif
8
-
9
-
10
- # Applications
11
- CHAOS_BIN := chaos
12
- CHAOS_OBJ :=
13
- CHAOS_OBJ += bin/chaos.src/config.o
14
- CHAOS_OBJ += bin/chaos.src/cmdline.o
15
- CHAOS_OBJ += bin/chaos.src/chaos.o
16
-
17
- # Tests
18
-
19
- # Libraries
20
- LIBH2_A := libh2.a
21
- LIBH2_SO := libh2.so
22
- LIBH2_SO_M := $(LIBH2_SO ) .$(LIBH2_V_MAJOR )
23
- LIBH2_SO_Mm := $(LIBH2_SO ) .$(LIBH2_V_MAJOR ) .$(LIBH2_V_MINOR )
24
- LIBH2_SO_MmB := $(LIBH2_SO ) .$(LIBH2_V_MAJOR ) .$(LIBH2_V_MINOR ) .$(LIBH2_V_BUGFIX )
25
-
26
- LIBH2_OBJ :=
27
- LIBH2_OBJ += lib/h2/xen/xc.o
28
- LIBH2_OBJ += lib/h2/xen/dev.o
29
- LIBH2_OBJ += lib/h2/xen/vif.o
30
- LIBH2_OBJ += lib/h2/xen/xs.o
31
- LIBH2_OBJ += lib/h2/xen/console.o
32
- LIBH2_OBJ += lib/h2/h2.o
33
- LIBH2_OBJ += lib/h2/xen.o
34
- ifeq ($(CONFIG_H2_XEN_NOXS ) ,y)
35
- LIBH2_OBJ += lib/h2/xen/noxs.o
36
- endif
37
-
38
- # cscope
39
- CSCOPE_FILES := cscope.files cscope.out cscope.in.out cscope.po.out
1
+ include smk/s.mk
40
2
41
3
# Default build flags
42
- CFLAGS += -Iinc
43
- ifneq ($(LINUX_HEADERS ) ,)
44
- CFLAGS += -I$(LINUX_HEADERS )
45
- endif
46
4
CFLAGS += -std=gnu11
47
- CFLAGS += -Wall -MD -MP - g
5
+ CFLAGS += -Wall -g
48
6
ifeq ($(CONFIG_H2_XEN_NOXS ) ,y)
49
7
CFLAGS += -DCONFIG_H2_XEN_NOXS
50
8
endif
51
9
52
- LDFLAGS += -Llib
10
+ ifneq ($(LINUX_HEADERS ) ,)
11
+ CFLAGS += -I$(LINUX_HEADERS )
12
+ endif
53
13
54
14
XEN_CFLAGS :=
55
15
XEN_CFLAGS += -I$(XEN_ROOT ) /tools/include
@@ -58,107 +18,36 @@ XEN_CFLAGS += -I$(XEN_ROOT)/dist/install/$(XEN_PREFIX)/include
58
18
59
19
XEN_LDFLAGS :=
60
20
XEN_LDFLAGS += -L$(XEN_ROOT ) /dist/install/$(XEN_PREFIX ) /lib
61
- XEN_LDFLAGS += -lxenctrl -lxenstore -lxenguest -lxentoollog
62
-
63
- LIBH2_DEP_CFLAGS :=
64
- LIBH2_DEP_CFLAGS += $(XEN_CFLAGS )
65
-
66
- LIBH2_DEP_LDFLAGS :=
67
- LIBH2_DEP_LDFLAGS += -lh2
68
- LIBH2_DEP_LDFLAGS += -Wl,-rpath-link,$(XEN_ROOT ) /dist/install/$(XEN_PREFIX ) /lib
69
-
70
-
71
- # Targets
72
- all : libh2 chaos
73
-
74
- tests :
75
-
76
- install : libh2 chaos
77
- $(call cmd, "INSTALL", "include/h2" , cp -r , inc/h2 $(PREFIX ) /include/)
78
- $(call cmd, "INSTALL", $(LIBH2_SO_MmB ) , cp -f , lib/$(LIBH2_SO ) $(PREFIX ) /lib/$(LIBH2_SO_MmB ) )
79
- $(call cmd, "INSTALL", $(LIBH2_SO_M ) , ln -sf, $(LIBH2_SO_MmB ) $(PREFIX ) /lib/$(LIBH2_SO_M ) )
80
- $(call cmd, "INSTALL", $(LIBH2_SO ) , ln -sf, $(LIBH2_SO_MmB ) $(PREFIX ) /lib/$(LIBH2_SO ) )
81
- $(call cmd, "INSTALL", $(LIBH2_A ) , cp -f , lib/$(LIBH2_A ) $(PREFIX ) /lib/$(LIBH2_A ) )
82
- $(call cmd, "LDCONFIG", "", ldconfig)
83
- $(call cmd, "INSTALL", $(CHAOS_BIN ) , cp -f , bin/$(CHAOS_BIN ) $(PREFIX ) /bin/$(CHAOS_BIN ) )
84
-
85
- uninstall :
86
- $(call cmd, "UNINSTALL", "include/h2" , rm -rf, $(PREFIX ) /include/h2)
87
- $(call cmd, "UNINSTALL", $(LIBH2_SO_MmB ) , rm -f , $(PREFIX ) /lib/$(LIBH2_SO_MmB ) )
88
- $(call cmd, "UNINSTALL", $(LIBH2_SO_M ) , rm -f , $(PREFIX ) /lib/$(LIBH2_SO_M ) )
89
- $(call cmd, "UNINSTALL", $(LIBH2_SO ) , rm -f , $(PREFIX ) /lib/$(LIBH2_SO ) )
90
- $(call cmd, "UNINSTALL", $(LIBH2_A ) , rm -f , $(PREFIX ) /lib/$(LIBH2_A ) )
91
- $(call cmd, "LDCONFIG", "", ldconfig)
92
- $(call cmd, "UNINSTALL", $(CHAOS_BIN ) , rm -f , $(PREFIX ) /bin/$(CHAOS_BIN ) )
93
-
94
- configure : $(config )
95
-
96
- cscope :
97
- $(call cmd, "CSCOPE", "", find . -name '* .c' -or -name '* .h' > cscope.files; cscope -b -q -k)
98
-
99
- clean :
100
- $(call cmd, "CLEAN", "* .o", rm -rf, $(shell find -name "* .o") )
101
- $(call cmd, "CLEAN", "* .d", rm -rf, $(shell find -name "* .d") )
102
-
103
- distclean : clean
104
- $(call cmd, "CLEAN", $(LIBH2_A ) , rm -f, lib/$(LIBH2_A ) )
105
- $(call cmd, "CLEAN", $(LIBH2_SO ) , rm -f, lib/$(LIBH2_SO ) )
106
- $(call cmd, "CLEAN", $(CHAOS_BIN ) , rm -f, bin/$(CHAOS_BIN ) )
107
- $(call cmd, "CLEAN", $(config ) , rm -f, $(config ) )
108
- $(call cmd, "CLEAN", "cscope files", rm -f, $(CSCOPE_FILES ) )
109
-
110
- .PHONY : all tests install uninstall configure cscope clean distclean
111
-
112
-
113
- libh2 : lib/$(LIBH2_SO ) lib/$(LIBH2_A )
114
-
115
- chaos : bin/$(CHAOS_BIN )
116
-
117
- .PHONY : libh2 chaos
118
-
119
-
120
- # Build rules
121
- $(config ) : config.in
122
- $(call cmd, "CONFIG", $@ , cp -n, $^ $@ )
123
-
124
- bin/$(CHAOS_BIN ) : LDFLAGS += -ljansson
125
- bin/$(CHAOS_BIN ) : LDFLAGS += $(LIBH2_DEP_LDFLAGS )
126
- bin/$(CHAOS_BIN ) : $(CHAOS_OBJ ) lib/$(LIBH2_SO )
127
- $(call clink, $(CHAOS_OBJ ) , $@ )
128
-
129
- $(CHAOS_OBJ ) : CFLAGS += $(LIBH2_DEP_CFLAGS )
130
-
131
- lib/$(LIBH2_SO ) : LDFLAGS += -shared
132
- lib/$(LIBH2_SO ) : LDFLAGS += -Wl,-soname,$(LIBH2_SO_M )
133
- # Because lib/$(LIBH2_SO) may be built as a dependency of bin/$(CHAOS_BIN) $(LDFLAGS) might contain
134
- # $(LIBH2_DEP_LDFLAGS). We must ensure that is removed before linking lib/$(LIBH2_SO).
135
- lib/$(LIBH2_SO ) : LDFLAGS += $(XEN_LDFLAGS )
136
- lib/$(LIBH2_SO ) : LDFLAGS := $(filter-out $(LIBH2_DEP_LDFLAGS ) , $(LDFLAGS ) )
137
- lib/$(LIBH2_SO ) : $(LIBH2_OBJ )
138
- $(call clink, $^ , $@ )
139
-
140
- lib/$(LIBH2_A ) : $(LIBH2_OBJ )
141
- $(call cmd, "AR", $@ , ar rcs, $@ $^ )
142
-
143
- $(LIBH2_OBJ ) : CFLAGS += -fPIC
144
- $(LIBH2_OBJ ) : CFLAGS += $(XEN_CFLAGS )
145
-
146
- % .o : % .c $(config )
147
- $(call ccompile, $< , $@ )
148
-
149
-
150
- # Define verbose command
151
- ifneq ($(verbose ) ,y)
152
- cmd = @printf " %-10s %s\n" $(1 ) $(2 ) && $(3 ) $(4 )
153
- else
154
- cmd = $(3 ) $(4 )
21
+ XEN_LDFLAGS += -Wl,-rpath-link,$(XEN_ROOT ) /dist/install/$(XEN_PREFIX ) /lib
22
+
23
+ # Chaos
24
+ chaos_obj :=
25
+ chaos_obj += bin/chaos.src/config.o
26
+ chaos_obj += bin/chaos.src/cmdline.o
27
+ chaos_obj += bin/chaos.src/chaos.o
28
+
29
+ $(eval $(call smk_binary,chaos,$(chaos_obj)))
30
+ $(eval $(call smk_depend,chaos,h2))
31
+
32
+ $(chaos_bin ) : LDFLAGS += -ljansson -lh2
33
+ $(chaos_bin ) : LDFLAGS += $(XEN_LDFLAGS )
34
+ $(chaos_obj ) : CFLAGS += $(XEN_CFLAGS )
35
+
36
+ # LibH2
37
+ libh2_obj :=
38
+ libh2_obj += lib/h2/xen/xc.o
39
+ libh2_obj += lib/h2/xen/dev.o
40
+ libh2_obj += lib/h2/xen/vif.o
41
+ libh2_obj += lib/h2/xen/xs.o
42
+ libh2_obj += lib/h2/xen/console.o
43
+ libh2_obj += lib/h2/h2.o
44
+ libh2_obj += lib/h2/xen.o
45
+ ifeq ($(CONFIG_H2_XEN_NOXS ) ,y)
46
+ libh2_obj += lib/h2/xen/noxs.o
155
47
endif
156
48
157
- # Compile and link commands
158
- ccompile = $(call cmd, "CC", $2, $(CC ) , $(CFLAGS ) -c $(1 ) -o $(2 ) )
159
- clink = $(call cmd, "LD", $2, $(CC ) , $(CFLAGS ) $(1 ) $(LDFLAGS ) -o $(2 ) )
160
-
49
+ $(eval $(call smk_library,h2,$(LIBH2_V_MAJOR),$(LIBH2_V_MINOR),$(LIBH2_V_BUGFIX),$(libh2_obj)))
161
50
162
- # Include auto-generated prerequisites
163
- -include $( CHAOS_OBJ : % .o= % .d )
164
- -include $( LIBH2_OBJ : % .o= % .d )
51
+ $( libh2_so ) : LDFLAGS += -lxenctrl -lxenstore -lxenguest -lxentoollog -lxenforeignmemory
52
+ $( libh2_so ) : LDFLAGS += $( XEN_LDFLAGS )
53
+ $( libh2_obj ) : CFLAGS += $( XEN_CFLAGS )
0 commit comments