17
17
# You should have received a copy of the GNU Lesser General Public License
18
18
# along with lsp-r3d-base-lib. If not, see <https://www.gnu.org/licenses/>.
19
19
#
20
+ ifneq ($(VERBOSE ) ,1)
21
+ .SILENT :
22
+ endif
20
23
21
24
# Definitions
22
25
PREFIX := /usr/local
@@ -25,20 +28,24 @@ BINDIR := $(PREFIX)/bin
25
28
INCDIR := $(PREFIX ) /include
26
29
BASEDIR := $(CURDIR )
27
30
BUILDDIR := $(BASEDIR ) /.build
28
- CONFIG := $(BASEDIR ) /.config.mk
29
31
MODULES := $(BASEDIR ) /modules
32
+ CONFIG := $(BASEDIR ) /.config.mk
30
33
TEST := 0
31
34
DEBUG := 0
32
35
PROFILE := 0
33
36
TRACE := 0
34
37
38
+ include $(BASEDIR ) /make/functions.mk
35
39
include $(BASEDIR ) /make/system.mk
36
- include $(BASEDIR ) /project.mk
37
40
include $(BASEDIR ) /make/tools.mk
38
41
include $(BASEDIR ) /dependencies.mk
42
+ include $(BASEDIR ) /project.mk
39
43
40
- DEPENDENCIES += $(TEST_DEPENDENCIES )
44
+ # Compute the full list of dependencies
45
+ UNIQ_DEPENDENCIES := $(call uniq, $(DEPENDENCIES ) $(TEST_DEPENDENCIES ) )
46
+ DEPENDENCIES = $(UNIQ_DEPENDENCIES )
41
47
48
+ # Determine versions
42
49
ifeq ($(findstring -devel,$(ARTIFACT_VERSION ) ) ,-devel)
43
50
$(foreach dep, $(DEPENDENCIES), \
44
51
$(eval $(dep)_BRANCH=devel) \
@@ -47,10 +54,8 @@ ifeq ($(findstring -devel,$(ARTIFACT_VERSION)),-devel)
47
54
tmp_version :=$(shell echo "$(ARTIFACT_VERSION ) " | sed s/-devel//g)
48
55
ARTIFACT_VERSION =$(tmp_version )
49
56
else
50
- $(foreach dep, $(DEPENDENCIES), \
51
- $(eval \
52
- $(dep)_BRANCH ="$($(dep ) _VERSION) " \
53
- ) \
57
+ $(foreach dep,$(DEPENDENCIES),\
58
+ $(eval $(dep)_BRANCH="$($(dep)_VERSION)") \
54
59
)
55
60
endif
56
61
@@ -91,6 +96,7 @@ define srcconfig =
91
96
$(if $($(name ) _CFLAGS) ,, $(eval $(name ) _CFLAGS := "-I\"$($(name ) _INC) \"" $(if $(builtin ) ,"-D$(name ) _BUILTIN") ) )
92
97
$(if $($(name ) _LDLAGS) ,, $(eval $(name ) _LDFLAGS :=) )
93
98
$(if $($(name ) _OBJ) ,, $(eval $(name ) _OBJ := "$($(name ) _BIN) /$($(name ) _NAME) .o") )
99
+ $(if $($(name ) _OBJ_TEST) ,,$(eval $(name ) _OBJ_TEST:= "$($(name ) _BIN) /$($(name ) _NAME) -test.o") )
94
100
$(if $($(name ) _MFLAGS) ,, $(eval $(name ) _MFLAGS := $(if $(builtin ) ,"-D$(name ) _BUILTIN -fvisibility=hidden") ) )
95
101
endef
96
102
@@ -116,23 +122,23 @@ define vardef =
116
122
endef
117
123
118
124
# Define predefined variables
119
- ifndef $(ARTIFACT_VARS )_NAME
120
- $(ARTIFACT_VARS )_NAME := $(ARTIFACT_NAME )
125
+ ifndef $(ARTIFACT_ID )_NAME
126
+ $(ARTIFACT_ID )_NAME := $(ARTIFACT_NAME )
121
127
endif
122
- ifndef $(ARTIFACT_VARS )_DESC
123
- $(ARTIFACT_VARS )_DESC := $(ARTIFACT_DESC )
128
+ ifndef $(ARTIFACT_ID )_DESC
129
+ $(ARTIFACT_ID )_DESC := $(ARTIFACT_DESC )
124
130
endif
125
- ifndef $(ARTIFACT_VARS )_VERSION
126
- $(ARTIFACT_VARS )_VERSION := $(ARTIFACT_VERSION )
131
+ ifndef $(ARTIFACT_ID )_VERSION
132
+ $(ARTIFACT_ID )_VERSION := $(ARTIFACT_VERSION )
127
133
endif
128
- ifndef $(ARTIFACT_VARS )_PATH
129
- $(ARTIFACT_VARS )_PATH := $(BASEDIR )
134
+ ifndef $(ARTIFACT_ID )_PATH
135
+ $(ARTIFACT_ID )_PATH := $(BASEDIR )
130
136
endif
131
137
132
- $(ARTIFACT_VARS )_TESTING = $(TEST )
133
- $(ARTIFACT_VARS )_TYPE := src
138
+ $(ARTIFACT_ID )_TESTING = $(TEST )
139
+ $(ARTIFACT_ID )_TYPE := src
134
140
135
- OVERALL_DEPS := $(DEPENDENCIES ) $(ARTIFACT_VARS )
141
+ OVERALL_DEPS := $(DEPENDENCIES ) $(ARTIFACT_ID )
136
142
__tmp := $(foreach dep,$(OVERALL_DEPS ) ,$(call vardef, $(dep ) ) )
137
143
138
144
CONFIG_VARS = \
@@ -155,46 +161,47 @@ CONFIG_VARS = \
155
161
$(name ) _MFLAGS \
156
162
$(name ) _LDFLAGS \
157
163
$(name ) _OBJ \
164
+ $(name ) _OBJ_TEST \
158
165
)
159
166
160
167
.DEFAULT_GOAL := config
161
168
.PHONY : config prepare help
162
169
.PHONY : $(CONFIG_VARS )
163
170
164
171
prepare :
165
- @ echo " Configuring build..."
166
- @ echo " # Project settings" > " $( CONFIG) "
172
+ echo " Configuring build..."
173
+ echo " # Project settings" > " $( CONFIG) "
167
174
168
175
$(CONFIG_VARS ) : prepare
169
- @ echo " $( @) =$( $( @) ) " >> " $( CONFIG) "
176
+ echo " $( @) =$( $( @) ) " >> " $( CONFIG) "
170
177
171
178
config : $(CONFIG_VARS )
172
- @ echo " Configured OK"
179
+ echo " Configured OK"
173
180
174
181
help : | toolvars sysvars
175
- @ echo " "
176
- @ echo " List of variables for each dependency:"
177
- @ echo " <ARTIFACT>_BIN location to put all binaries when building artifact"
178
- @ echo " <ARTIFACT>_BRANCH git branch used to checkout source code"
179
- @ echo " <ARTIFACT>_CFLAGS C/C++ flags to access headers of the artifact"
180
- @ echo " <ARTIFACT>_DESC Full description of the artifact"
181
- @ echo " <ARTIFACT>_INC path to include files of the artifact"
182
- @ echo " <ARTIFACT>_LDFLAGS linker flags to link with artifact"
183
- @ echo " <ARTIFACT>_MFLAGS artifact-specific compilation flags"
184
- @ echo " <ARTIFACT>_NAME the artifact name used in pathnames"
185
- @ echo " <ARTIFACT>_OBJ path to output object file for artifact"
186
- @ echo " <ARTIFACT>_PATH location of the source code of the artifact"
187
- @ echo " <ARTIFACT>_SRC path to source code files of the artifact"
188
- @ echo " <ARTIFACT>_TEST location of test files of the artifact"
189
- @ echo " <ARTIFACT>_TYPE artifact usage type"
190
- @ echo " - src - use sources and headers from git"
191
- @ echo " - hdr - use headers only from git"
192
- @ echo " - pkg - use pkgconfig for configuration"
193
- @ echo " - lib - use system headers and -l<libname> flags"
194
- @ echo " - opt - use optional configuration"
195
- @ echo " <ARTIFACT>_URL location of the artifact git repoisitory"
196
- @ echo " <ARTIFACT>_VERSION version of the artifact used for building"
197
- @ echo " "
198
- @ echo " Artifacts used for build:"
199
- @ echo " $( DEPENDENCIES) "
182
+ echo " "
183
+ echo " List of variables for each dependency:"
184
+ echo " <ARTIFACT>_BIN location to put all binaries when building artifact"
185
+ echo " <ARTIFACT>_BRANCH git branch used to checkout source code"
186
+ echo " <ARTIFACT>_CFLAGS C/C++ flags to access headers of the artifact"
187
+ echo " <ARTIFACT>_DESC Full description of the artifact"
188
+ echo " <ARTIFACT>_INC path to include files of the artifact"
189
+ echo " <ARTIFACT>_LDFLAGS linker flags to link with artifact"
190
+ echo " <ARTIFACT>_MFLAGS artifact-specific compilation flags"
191
+ echo " <ARTIFACT>_NAME the artifact name used in pathnames"
192
+ echo " <ARTIFACT>_OBJ path to output object file for artifact"
193
+ echo " <ARTIFACT>_PATH location of the source code of the artifact"
194
+ echo " <ARTIFACT>_SRC path to source code files of the artifact"
195
+ echo " <ARTIFACT>_TEST location of test files of the artifact"
196
+ echo " <ARTIFACT>_TYPE artifact usage type"
197
+ echo " - src - use sources and headers from git"
198
+ echo " - hdr - use headers only from git"
199
+ echo " - pkg - use pkgconfig for configuration"
200
+ echo " - lib - use system headers and -l<libname> flags"
201
+ echo " - opt - use optional configuration"
202
+ echo " <ARTIFACT>_URL location of the artifact git repoisitory"
203
+ echo " <ARTIFACT>_VERSION version of the artifact used for building"
204
+ echo " "
205
+ echo " Artifacts used for build:"
206
+ echo " $( DEPENDENCIES) "
200
207
0 commit comments