@@ -27,6 +27,7 @@ LIBDIR := $(PREFIX)/lib
27
27
BINDIR := $(PREFIX ) /bin
28
28
INCDIR := $(PREFIX ) /include
29
29
BASEDIR := $(CURDIR )
30
+ ROOTDIR := $(CURDIR )
30
31
BUILDDIR := $(BASEDIR ) /.build
31
32
TARGET_BUILDDIR := $(BUILDDIR ) /target
32
33
HOST_BUILDDIR := $(BUILDDIR ) /host
@@ -50,8 +51,11 @@ include $(BASEDIR)/dependencies.mk
50
51
include $(BASEDIR ) /project.mk
51
52
52
53
# Compute the full list of dependencies
53
- UNIQ_DEPENDENCIES := $(call uniq, $(DEPENDENCIES ) $(TEST_DEPENDENCIES ) )
54
- DEPENDENCIES = $(UNIQ_DEPENDENCIES )
54
+ MERGED_DEPENDENCIES := \
55
+ $(DEPENDENCIES ) \
56
+ $(TEST_DEPENDENCIES )
57
+ UNIQ_MERGED_DEPENDENCIES := $(call uniq, $(MERGED_DEPENDENCIES ) )
58
+ DEPENDENCIES = $(UNIQ_MERGED_DEPENDENCIES )
55
59
56
60
# Determine versions
57
61
ifeq ($(findstring -devel,$(ARTIFACT_VERSION ) ) ,-devel)
@@ -106,9 +110,9 @@ define optconfig =
106
110
$(if $(HOST_$(name ) _OBJ ) ,, $(eval HOST_$(name ) _OBJ :=) )
107
111
endef
108
112
109
- define srcconfig =
113
+ define _modconfig =
110
114
$(eval name=$(1 ) )
111
- $(eval builtin=$(patsubst $( ARTIFACT_NAME ) ,, $( $( name ) _NAME) ) )
115
+ $(eval builtin=$(2 ) )
112
116
113
117
$(if $($(name ) _DESC) ,, $(eval $(name ) _DESC := $($(name ) _DESC) ) )
114
118
$(if $($(name ) _URL) ,, $(eval $(name ) _URL := $($(name ) _URL$(X_URL_SUFFIX ) ) ) )
@@ -119,7 +123,7 @@ define srcconfig =
119
123
$(if $($(name ) _TEST) ,, $(eval $(name ) _TEST := $($(name ) _PATH) /test) )
120
124
$(if $($(name ) _TESTING) ,, $(eval $(name ) _TESTING := 0) )
121
125
$(if $($(name ) _BIN) ,, $(eval $(name ) _BIN := $(TARGET_BUILDDIR ) /$($(name ) _NAME) ) )
122
- $(if $($(name ) _CFLAGS) ,, $(eval $(name ) _CFLAGS := "-I\"$($(name ) _INC) \"" $(if $(builtin ) ,"-D$(name ) _BUILTIN") ) )
126
+ $(if $($(name ) _CFLAGS) ,, $(eval $(name ) _CFLAGS := "-I\"$($(name ) _INC) \""$(if $(builtin ) ," -D$(name ) _BUILTIN") ) )
123
127
$(if $($(name ) _LDLAGS) ,, $(eval $(name ) _LDFLAGS :=) )
124
128
$(if $($(name ) _OBJ) ,, $(eval $(name ) _OBJ := "$($(name ) _BIN) /$($(name ) _NAME) .o") )
125
129
$(if $($(name ) _OBJ_TEST) ,, $(eval $(name ) _OBJ_TEST := "$($(name ) _BIN) /$($(name ) _NAME) -test.o") )
@@ -131,13 +135,24 @@ define srcconfig =
131
135
$(if $(HOST_$(name ) _TEST ) ,, $(eval HOST_$(name ) _TEST := $(HOST_$(name ) _PATH ) /test) )
132
136
$(if $(HOST_$(name ) _TESTING ) ,, $(eval HOST_$(name ) _TESTING := 0) )
133
137
$(if $(HOST_$(name ) _BIN ) ,, $(eval HOST_$(name ) _BIN := $(HOST_BUILDDIR ) /$($(name ) _NAME) ) )
134
- $(if $(HOST_$(name ) _CFLAGS ) ,, $(eval HOST_$(name ) _CFLAGS := "-I\"$(HOST_$(name ) _INC ) \"" $(if $(builtin ) ,"-D$(name ) _BUILTIN") ) )
138
+ $(if $(HOST_$(name ) _CFLAGS ) ,, $(eval HOST_$(name ) _CFLAGS := "-I\"$(HOST_$(name ) _INC ) \""$(if $(builtin ) ," -D$(name ) _BUILTIN") ) )
135
139
$(if $(HOST_$(name ) _LDLAGS ) ,, $(eval HOST_$(name ) _LDFLAGS :=) )
136
140
$(if $(HOST_$(name ) _OBJ ) ,, $(eval HOST_$(name ) _OBJ := "$(HOST_$(name ) _BIN ) /$($(name ) _NAME) .o") )
137
141
$(if $(HOST_$(name ) _OBJ_TEST ) ,,$(eval HOST_$(name ) _OBJ_TEST:= "$(HOST_$(name ) _BIN ) /$($(name ) _NAME) -test.o") )
138
142
$(if $(HOST_$(name ) _MFLAGS ) ,, $(eval HOST_$(name ) _MFLAGS := $(if $(builtin ) ,"-D$(name ) _BUILTIN -fvisibility=hidden") ) )
139
143
endef
140
144
145
+ define srcconfig =
146
+ $(eval name=$(1 ) )
147
+ $(eval builtin=$(patsubst $(ARTIFACT_NAME ) ,,$($(name ) _NAME) ) )
148
+ $(eval $(call _modconfig,$(name ) ,$(builtin ) ) )
149
+ endef
150
+
151
+ define binconfig =
152
+ $(eval name=$(1 ) )
153
+ $(eval $(call _modconfig,$(1 ) ,) )
154
+ endef
155
+
141
156
define hdrconfig =
142
157
$(eval name=$(1 ) )
143
158
$(eval builtin=$(patsubst $(ARTIFACT_NAME ) ,,$($(name ) _NAME) ) )
@@ -148,13 +163,13 @@ define hdrconfig =
148
163
$(if $($(name ) _PATH) ,, $(eval $(name ) _PATH := $(MODULES ) /$($(name ) _NAME) ) )
149
164
$(if $($(name ) _INC) ,, $(eval $(name ) _INC := $($(name ) _PATH) /include) )
150
165
$(if $($(name ) _TESTING) ,, $(eval $(name ) _TESTING := 0) )
151
- $(if $($(name ) _CFLAGS) ,, $(eval $(name ) _CFLAGS := "-I\"$($(name ) _INC) \"" $(if $(builtin ) ,"-D$(name ) _BUILTIN") ) )
166
+ $(if $($(name ) _CFLAGS) ,, $(eval $(name ) _CFLAGS := "-I\"$($(name ) _INC) \""$(if $(builtin ) ," -D$(name ) _BUILTIN") ) )
152
167
$(if $($(name ) _MFLAGS) ,, $(eval $(name ) _MFLAGS := $(if $(builtin ) ,"-D$(name ) _BUILTIN -fvisibility=hidden") ) )
153
168
154
169
$(if $(HOST_$(name ) _PATH ) ,, $(eval HOST_$(name ) _PATH := $(MODULES ) /$($(name ) _NAME) ) )
155
170
$(if $(HOST_$(name ) _INC ) ,, $(eval HOST_$(name ) _INC := $(HOST_$(name ) _PATH ) /include) )
156
171
$(if $(HOST_$(name ) _TESTING ) ,, $(eval HOST_$(name ) _TESTING := 0) )
157
- $(if $(HOST_$(name ) _CFLAGS ) ,, $(eval HOST_$(name ) _CFLAGS := "-I\"$(HOST_$(name ) _INC ) \"" $(if $(builtin ) ,"-D$(name ) _BUILTIN") ) )
172
+ $(if $(HOST_$(name ) _CFLAGS ) ,, $(eval HOST_$(name ) _CFLAGS := "-I\"$(HOST_$(name ) _INC ) \""$(if $(builtin ) ," -D$(name ) _BUILTIN") ) )
158
173
$(if $(HOST_$(name ) _MFLAGS ) ,, $(eval HOST_$(name ) _MFLAGS := $(if $(builtin ) ,"-D$(name ) _BUILTIN -fvisibility=hidden") ) )
159
174
endef
160
175
@@ -165,6 +180,7 @@ define vardef =
165
180
$(if $(findstring src,$($(name ) _TYPE) ) , $(eval $(call srcconfig, $(name ) ) ) )
166
181
$(if $(findstring hdr,$($(name ) _TYPE) ) , $(eval $(call hdrconfig, $(name ) ) ) )
167
182
$(if $(findstring lib,$($(name ) _TYPE) ) , $(eval $(call libconfig, $(name ) ) ) )
183
+ $(if $(findstring bin,$($(name ) _TYPE) ) , $(eval $(call binconfig, $(name ) ) ) )
168
184
$(if $(findstring opt,$($(name ) _TYPE) ) , $(eval $(call optconfig, $(name ) ) ) )
169
185
endef
170
186
@@ -185,6 +201,7 @@ ifndef HOST_$(ARTIFACT_ID)_PATH
185
201
HOST_$(ARTIFACT_ID)_PATH := $(BASEDIR )
186
202
endif
187
203
204
+ ROOT_ARTIFACT_ID := $(ARTIFACT_ID )
188
205
$(ARTIFACT_ID)_TESTING = $(TEST )
189
206
$(ARTIFACT_ID)_TYPE := src
190
207
@@ -257,11 +274,12 @@ help: | toolvars sysvars
257
274
echo " <ARTIFACT>_SRC path to source code files of the artifact"
258
275
echo " <ARTIFACT>_TEST location of test files of the artifact"
259
276
echo " <ARTIFACT>_TYPE artifact usage type"
260
- echo " - src - use sources and headers from git"
261
- echo " - hdr - use headers only from git"
262
- echo " - pkg - use pkgconfig for configuration"
263
- echo " - lib - use system headers and -l<libname> flags"
264
- echo " - opt - use optional configuration"
277
+ echo " - bin - binaries build from source code"
278
+ echo " - hdr - use headers only from git"
279
+ echo " - lib - use system headers and -l<libname> flags"
280
+ echo " - opt - use optional configuration"
281
+ echo " - pkg - use pkgconfig for configuration"
282
+ echo " - src - use sources and headers from git"
265
283
echo " <ARTIFACT>_URL location of the artifact git repoisitory"
266
284
echo " <ARTIFACT>_VERSION version of the artifact used for building"
267
285
echo " "
0 commit comments