2 # @copyright Copyright (c) 2016-2019 TOYOTA MOTOR CORPORATION.
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
16 #################################################################################
21 # MAKETOP : pprosrc/root directory
24 # COMPONENT_NAME : component name
25 # INST_HEADERS : headers to install
26 # INST_LIBS : libraries to install
27 # INST_SHLIBS : shared libraries to install
28 # NOINST_LIBS : libraries for local use
29 # INST_PROGS : programs to install
30 # INST_CONFBIN : conf_bin to install
31 # RPC_API : RPC API definitions (without suffix)
32 # IPC_API : IPC API definitions (without suffix)
33 # xxx_SRCS : source files of program xxx (*.{c,S,cc})
34 # libxxx_SRCS : source files of library libxxx (*.{c,S,cc})
35 # xxx_PCOS : pre-compiled object files of program xxx (*.{o,os,a})
36 # libxxx_PCOS : pre-compiled object files of library libxxx (*.{o,os,a})
37 # SUBDIRS : sub directories
38 # CLEAN_FILES : extra files to clean
39 # CLEAN_DIRS : extra directoies to clean
40 # UNINST_FILES : extra files to uninstall
41 # CPPFLAGS : preprocess options (-I, -D, ...)
42 # CFLAGS : C source compile options
43 # CXXFLAGS : C++ source compile options
44 # ASFLAGS : assembler source assemble options
45 # LDFLAGS : link options (-L, ...)
46 # LDLIBS : libraries to link (-lxxx)
47 # ALL : targets to make
48 # (default: install-header install-lib install-prog install-data)
49 # xxx_SONAME : dummy library SONAME
53 # all, test : for target in $(ALL); do $(MAKE) $$target; done
54 # install-prog : install program
55 # install-lib : install-shlib and intall-arlib
56 # install-shlib : install shared libraries
57 # install-arlib : install static libraries
58 # install-test-mock-lib : install mock libraries
59 # install-test-mock-shlib : install shared mock libraries
60 # install-test-mock-arlib : install static mock libraries
61 # clean, clean-test : clean temporary files
62 # clean-all, clean-all-test : clean temporary files and installed files
63 # clean-self, clean-self-test : non-recursive clean
64 #################################################################################
72 ifneq ($(strip $(filter $(MAKECMDGOALS),\
77 ifneq ($(strip $(filter $(MAKECMDGOALS),\
82 #################################################################################
83 SYSROOT ?= $(SDKTARGETSYSROOT)
84 DESTDIR ?= $(SDKTARGETSYSROOT)
89 AUTO_INCLUDE := -include $(SYSROOT)/usr/include/basesystem/agl_types_obsoluted.h
90 AGLCFLAGS := $(CFLAGS) $(COMPONENT_CFLAGS)
91 AGLCXXFLAGS := $(CXXFLAGS) $(COMPONENT_CXXFLAGS)
92 AGLCPPFLAGS := $(CPPFLAGS) $(COMPONENT_CPPFLAGS)
93 AGLASFLAGS := $(ASFLAGS)
94 AGLLDFLAGS := $(LDFLAGS) $(COMPONENT_LDFLAGS)
95 AGLLDLIBS := $(LDLIBS) $(COMPONENT_LDLIBS)
96 AGLARFLAGS := $(ARFLAGS)
99 AGLCFLAGS += $(WARN_FLAGS) $(DEBUG_FLAGS) $(AUTO_INCLUDE)
100 AGLCXXFLAGS += $(WARN_FLAGS) $(DEBUG_FLAGS) $(AUTO_INCLUDE)
101 AGLASFLAGS += $(WARN_FLAGS) $(ARCH_FLAGS)
120 ######### add gcov option ############
125 if [ "$1" != "$3" ]; then \
126 echo "dummy lib ($1) created" ; \
127 $(LINK_SHLIB) -shared $(PIC_FLAGS) -Wl,-soname=$2 -o $1 -xc /dev/null ; \
129 echo "error: dummy lib must not have the same name as $3" ; \
135 @$(foreach lib,$(DUMMY_SHLIB),$(if $(lib),$(call LINK_DUMMY,$(lib),$(if $($(lib)_SONAME),$($(lib)_SONAME),$(lib)),$1)))
139 @$(foreach lib,$(DUMMY_SHLIB),$(if $(lib),rm -f $(lib)))
143 @if [ "$(AEXT)" != "" ];then \
144 if echo "$(ADD_EXT)" | grep -q '^[A-Za-z]' ;then \
145 echo "$< -> $<$(AEXT)" ;\
147 install -c -m 0755 $<$(AEXT) $@$(AEXT) ;\
148 if [ -f "$*.map" ];then \
149 mv $*.map $*.map$(AEXT) ;\
152 echo "ADD_EXT : ERROR $(ADD_EXT)" ;\
159 define INSTALL_SCRIPT
160 install -d -m 0755 $(@D)
161 install -c -m 0755 $< $@
164 define INSTALL_PIXMAP
165 install -d -m 0755 $(@D)
166 install -c -m 0644 $< $@
170 install -d -m 0755 $(@D)
171 install -c -m 0644 $< $@
174 define INSTALL_DATAINITOBJ
175 if [ -n "$<" ]; then\
176 install -d -m 0755 $(@D);\
177 install -c -m 0644 $< $@;\
182 install -d -m 0755 $(@D)
183 install -c -m 0644 $< $@
186 define INSTALL_CONFBIN
187 if [ -n "$<" ]; then\
188 install -d -m 0755 $(@D);\
189 install -c -m 0644 $< $@;\
193 #################################################################################
197 AGLCPPFLAGS += -D_GNU_SOURCE
199 ## for libPosixBased001Legacy
200 AGLCPPFLAGS += -DAGL_PosixBasedOS001LEGACY_USED -DAGL_STUB -DLINUX
203 AGLCPPFLAGS += -I$(SYSROOT)/usr/include/basesystem
206 AGLLDFLAGS += -L$(SYSROOT)/usr/agl/lib
208 ifneq ($(INST_SHLIBS),libagl_stub)
209 AGLLDLIBS += -Wl,-Bdynamic -lpthread
213 ##########################################
215 COMPONENT_NAME ?= $(error COMPONENT_NAME is not defined)
216 AGL_TOPDIR ?= $(DESTDIR)/usr
217 AGL_INCDIR := $(AGL_TOPDIR)/include/basesystem
218 AGL_LIBDIR := $(AGL_TOPDIR)/lib
219 AGL_BINDIR := $(AGL_TOPDIR)/bin
220 AGL_PIXMAPDIR := $(AGL_TOPDIR)/pixmaps
221 AGL_UCODEDIR := $(AGL_TOPDIR)/data/ucode
223 #################################################################################
225 HEADER_INSTALL_DIR := $(AGL_INCDIR)/$(COMPONENT_NAME)
226 LIB_INSTALL_DIR := $(AGL_LIBDIR)
227 PROG_INSTALL_DIR := $(AGL_BINDIR)
228 PIXMAP_INSTALL_DIR := $(AGL_PIXMAPDIR)/$(COMPONENT_NAME)
229 UCODE_INSTALL_DIR := $(AGL_UCODEDIR)
230 DATAINITOBJ_INSTALL_DIR := $(AGL_DATAINITOBJDIR)
231 CONFBIN_INSTALL_DIR := $(AGL_CONFBINDIR)
233 #################################################################################
235 DEL_OBJS = $(filter %.o,$($(1)_SRCS:%.c=%.o) $($(1)_SRCS:%.cc=%.o) \
236 $($(1)_SRCS:%.cpp=%.o) \
237 $($(1)_SRCS:%.S=%.o))
238 OBJS = $(DEL_OBJS) $($(1)_PCOS)
239 DEL_SOBJS = $(filter %.os,$($(1)_SRCS:%.c=%.os) $($(1)_SRCS:%.cc=%.os) \
240 $($(1)_SRCS:%.cpp=%.os) \
241 $($(1)_SRCS:%.S=%.os))
242 DEL_GCDA = $(filter %.gcda,$($(1)_SRCS:%.c=%.gcda) $($(1)_SRCS:%.cc=%.gcda) \
243 $($(1)_SRCS:%.cpp=%.gcda) \
244 $($(1)_SRCS:%.S=%.gcda))
245 DEL_GCNO = $(filter %.gcno,$($(1)_SRCS:%.c=%.gcno) $($(1)_SRCS:%.cc=%.gcno) \
246 $($(1)_SRCS:%.cpp=%.gcno) \
247 $($(1)_SRCS:%.S=%.gcno))
248 DEL_GCOV = $(filter %.gcov,$($(1)_SRCS:%.c=%.gcov) $($(1)_SRCS:%.cc=%.gcov) \
249 $($(1)_SRCS:%.cpp=%.gcov) \
250 $($(1)_SRCS:%.S=%.gcov))
252 DEL_INFO = $(filter %.info, \
253 $(dirname $($(1)_SRCS:%.c=%.tmp))lcov.info \
254 $(dirname $($(1)_SRCS:%.cc=%.tmp))lcov.info \
255 $(dirname $($(1)_SRCS:%.cpp=%.tmp))lcov.info \
256 $(dirname $($(1)_SRCS:%.S=%.tmp))lcov.info)
258 SOBJS = $(DEL_SOBJS) $($(1)_PCOS)
259 DEPS = $(join $(dir $(DEL_OBJS)),$(patsubst %.o,.%.d,$(notdir $(DEL_OBJS))))
261 INST_TEST_MOCK_LIBS :=
262 INST_TEST_MOCK_SHLIBS :=
263 INST_ITV2_TESTPROGS :=
266 CLEAN_OBJS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_OBJS,$(lib)))
267 CLEAN_SOBJS := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(call DEL_SOBJS,$(lib)))
269 CLEAN_GCDA := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCDA,$(lib)))
270 CLEAN_GCNO := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCNO,$(lib)))
271 CLEAN_GCOV := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCOV,$(lib)))
272 CLEAN_CFG := $(INST_UT_SMCONF:%=%.cfg) $(INST_IT_SMCONF:%=%.cfg)
274 CLEAN_INFO := $(sort $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_INFO,$(lib))))
276 LIB_DEPS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS),$(call DEPS,$(lib)))
277 PROG_DEPS := $(foreach prog,$(INST_PROGS),$(call DEPS,$(prog)))
279 PROG_RULES := $(foreach prog,$(INST_PROGS),$(if $(prog),.$(prog).out.rule))
282 LIB_RULES := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_TEST_MOCK_LIBS),$(if $($(lib)_SRCS),.$(lib).a.rule))
283 SHLIB_RULES := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),.$(lib).so.rule))
284 ARLIB_RULES := $(foreach lib,$(INST_LIBS) $(NOINST_LIBS),$(if $($(lib)_SRCS),.$(lib).a.rule))
286 PROG_MAPS := $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).map))
287 TESTPROG_MAPS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).map))
288 LIB_MAPS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).map))
289 PROG_LIBDEPS := $(foreach prog,$(INST_PROGS),$(if $(prog),.$(prog).out.libdep))
290 TESTPROG_LIBDEPS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),.$(prog).out.libdep))
292 BUILD_MK_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
293 include $(BUILD_MK_DIR)/rpc_rule.mk
295 IPC_API_RULES := $(IPC_API:%=.%.ipc.rule)
296 ipc_api := $(shell echo $(IPC_API) | tr A-Z a-z)
297 CLEAN_IPC_API_SRCS := $(ipc_api:%=%_client.h) $(ipc_api:%=%_client.c) $(ipc_api:%=%_server.h) $(ipc_api:%=%_server.c)
298 IPC_API_DEPS := $(ipc_api:%=%_client.d) $(ipc_api:%=%_server.d)
300 CLEAN_PROGS := $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).out))
301 CLEAN_TESTPROGS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).out))
304 CLEAN_PROGS += $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).out$(AEXT)))
305 CLEAN_TESTPROGS += $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).out$(AEXT)))
307 CLEAN_LIBS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS),$(if $($(lib)_SRCS),$(lib).a))
308 CLEAN_SHLIBS := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).so))
310 CLEAN_SHLIBS += $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).so$(AEXT)))
312 ifneq ($(DUMMY_SHLIB),)
313 CLEAN_SHLIBS += $(DUMMY_SHLIB)
316 CLEAN_FILES += $(CLEAN_OBJS) $(CLEAN_SOBJS)
317 CLEAN_FILES += $(PROG_DEPS) $(LIB_DEPS) $(TESTPROG_DEPS)
318 CLEAN_FILES += $(PROG_MAPS) $(PROG_LIBDEPS) $(TESTPROG_MAPS) $(TESTPROG_LIBDEPS)
319 CLEAN_FILES += $(PROG_RULES) $(LIB_RULES) $(SHLIB_RULES) $(AR_RULES) $(TESTPROG_RULES)
320 CLEAN_FILES += $(CLEAN_PROGS) $(CLEAN_LIBS) $(CLEAN_SHLIBS) $(LIB_MAPS) $(CLEAN_TESTPROGS)
321 CLEAN_FILES += $(RPC_API_RULES) $(CLEAN_API_SRCS) $(RPC_API_DEPS)
322 CLEAN_FILES += $(IPC_API_RULES) $(CLEAN_IPC_API_SRCS) $(IPC_API_DEPS)
323 CLEAN_FILES += $(INST_DATAINITOBJ)
324 CLEAN_FILES += $(CLEAN_INFO)
325 CLEAN_FILES += $(CLEAN_GCNO) $(CLEAN_GCDA) $(CLEAN_GCOV)
326 CLEAN_FILES += $(CLEAN_CFG)
328 CLEAN_FILES += $(foreach lib,$(INST_SHLIBS) $(INST_PROGS),$(if $(lib),$(lib).map$(AEXT)))
332 #################################################################################
334 RPATHLINK := $(SYSROOT)/usr/lib:$(SYSROOT)/lib:$(SYSROOT)/usr/agl/lib
336 #################################################################################
337 SUBDIRS := $(filter-out mock,$(SUBDIRS))
339 .PHONY: all all-subdirs install test $(SUBDIRS:%=all-%) $(SUBDIRS:%=install--%)
340 .PHONY: install-test $(SUBDIRS:%=install-test-%)
342 .PHONY: build-prog $(SUBDIRS:%=build-prog-%)
343 .PHONY: build-shlib $(SUBDIRS:%=build-shlib-%)
344 .PHONY: build-arlib $(SUBDIRS:%=build-arlib-%)
346 .PHONY: install-header $(SUBDIRS:%=install-header-%)
348 .PHONY: install-shlib $(SUBDIRS:%=install-shlib-%)
349 .PHONY: install-arlib $(SUBDIRS:%=install-arlib-%)
350 .PHONY: install-prog $(SUBDIRS:%=install-prog-%)
351 .PHONY: install-data $(SUBDIRS:%=install-data-%)
352 .PHONY: install-cfg $(SUBDIRS:%=install-cfg-%)
353 .PHONY: install-preload
356 .PHONY: clean-sub $(SUBDIRS:%=clean-%)
357 .PHONY: clean-all-sub $(SUBDIRS:%=clean-all-%)
358 .PHONY: clean-self-sub
359 .PHONY: lint lint-exec
362 REF_ROOT_DIR=/home/ref_root/
363 TEST_SERVER_DIR=/home/agl_sysroot/
364 REFHW_SERVER=192.168.1.2
373 #all: build-lib build-prog build-test-mock-lib build-cfg all-subdirs
374 all: build-lib build-prog build-cfg all-subdirs
378 for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) all); done
381 #lint-exec: $(INST_HEADERS) $($(INST_SHLIBS)_SRCS) $($(INST_LIBS)_SRCS) $($(INST_PROGS)_SRCS)
382 # -cpplint.py $^ > cpplint_result.txt 2>&1
385 $(eval LINTFILES := $(shell find . -name "*.c*" -o -name "*.h*"))
386 -cpplint.py --extensions=hpp,cpp,c,cc,h $(LINTFILES) > cpplint_result.txt 2>&1
389 #install: install-header install-lib install-prog install-data install-test-mock-header install-test-mock-lib install-test-casename $(SUBDIRS:%=install--%)
390 install: install-header install-lib install-prog install-data $(SUBDIRS:%=install--%)
393 build-lib: build-shlib build-arlib
395 build-shlib: $(INST_SHLIBS:%=%.so)
397 build-arlib: $(INST_LIBS:%=%.a) $(NOINST_LIBS:%=%.a)
400 generate-header-list: install-header-local
401 echo $(COMPONENT_NAME) > $(addsuffix .list, $(abspath ./))
402 ls -1 $(TOPDIR)/tmp_head/usr/include/basesystem/$(COMPONENT_NAME)/ >> $(addsuffix .list, $(abspath ./))
406 build-prog: $(INST_PROGS:%=%.out)
409 install-lib: install-arlib install-shlib
411 install-arlib: build-arlib
412 ifneq ($(strip $(INST_LIBS)),)
413 install -m 0755 -d $(LIB_INSTALL_DIR)
414 install -m 0644 $(INST_LIBS).a $(LIB_INSTALL_DIR)
417 install-shlib: build-shlib
418 ifneq ($(strip $(INST_SHLIBS)),)
419 install -m 0755 -d $(LIB_INSTALL_DIR)
420 install -m 0644 $(INST_SHLIBS).so $(LIB_INSTALL_DIR)
423 install-prog: build-prog
424 ifneq ($(strip $(INST_PROGS)),)
425 install -m 0755 -d $(PROG_INSTALL_DIR)
426 $(foreach prog, $(INST_PROGS), install -m 0755 $(prog).out $(PROG_INSTALL_DIR)/$(prog);)
430 install-header-r: install-header $(SUBDIRS:%=install-header-r-%)
433 install-header-local:
434 $(MAKE) DESTDIR=`pwd`/tmp_head install-header-r
437 install-header: $(INST_HEADERS:%=install-%)
440 $(INST_HEADERS:%=install-%): install-%: %
441 ifneq ($(strip $(INST_HEADERS)),)
442 install -m 0755 -d $(HEADER_INSTALL_DIR)
443 install -m 0644 $< $(HEADER_INSTALL_DIR)
448 HOST_LAUNCH_XML2CFG = $(SYSROOT)/usr/share/basesystem/launch_xml2cfg.sh
449 CONF_H = $(SYSROOT)/usr/include/basesystem/sm_launch_conf.h
453 cpp -P -include $(CONF_H) $< > $<.tmp ; \
455 $(HOST_LAUNCH_XML2CFG) $(notdir $<.tmp) > $@ ; \
459 install-data: $(INST_PIXMAPS:%=$(PIXMAP_INSTALL_DIR)/%) $(INST_UCODE:%=$(UCODE_INSTALL_DIR)/%) $(INST_DATAINITOBJ:%=$(DATAINITOBJ_INSTALL_DIR)/%) $(OBJ_COPY_LIST:%=$(OBJ_COPY_INSTALL_DIR)/%) $(INST_CONFBIN:%=$(CONFBIN_INSTALL_DIR)/%)
462 clean: $(SUBDIRS:%=clean--%)
466 clean-all: $(SUBDIRS:%=clean-all--%)
467 rm -f $(CLEAN_FILES) $(UNINST_FILES)
472 #################################################################################
475 $(CC) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCFLAGS) -c -o $@ $<
477 $(SATOOL) $(AGLCPPFLAGS) $(AGLCFLAGS) -c $<
481 $(CXX) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
483 $(SATOOL) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
487 $(CXX) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
489 $(SATOOL) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
493 $(CC) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLASFLAGS) -c -o $@ $<
496 $(CC) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCFLAGS) -c -o $@ $<
498 $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCFLAGS) -c $<
502 $(CXX) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
504 $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
508 $(CXX) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
510 $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
514 $(CC) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLASFLAGS) -c -o $@ $<
517 @echo '$*.out: $$(call OBJS,$*)' > $@
518 @echo ' @rm -f $$(@:%=.%.libdep)' >> $@
519 @echo ' $$(LINK) $$(AGLLDFLAGS) -Wl,-rpath=$$(RPATH) -Wl,-rpath-link=$$(RPATHLINK),-Map=$$(@:%.out=%.map) $$(call OBJS,$*) $($(*F)_LDLIBS) $$(AGLLDLIBS) -o $$@' >> $@
520 @echo ' @awk '\''$$$$1=="LOAD" && $$$$2~/\.a$$$$/{print("$$@:", $$$$2);print($$$$2 ":")}'\'' $$(@:%.out=%.map) > $$(@:%=.%.libdep)' >> $@
523 @echo '$*.a: $$(call OBJS,$*)' > $@
524 @echo ' $$(AR) $$(AGLARFLAGS) $$@ $$?' >> $@
527 @echo '$*.so: $$(call SOBJS,$*)' > $@
528 @echo ' $$(call INST_DUMMY,$*.so)' >> $@
529 @test -f $*.ver && echo ' $$(LINK_SHLIB) -shared $$(AGLLDFLAGS) $($(*F)_LDFLAGS) $$(AGLLDLIBS) -Wl,-rpath=$$(RPATH) -Wl,-soname=$*.so,-Map=$$(@:%.so=%.map),--version-script,$*.ver $$^ -o $$@' >> $@ || echo ' $$(LINK_SHLIB) -shared $$(AGLLDFLAGS) $($(*F)_LDFLAGS) $$(AGLLDLIBS) -Wl,-rpath=$$(RPATH) -Wl,-soname=$*.so,-Map=$$(@:%.so=%.map) $$^ -o $$@' >> $@
530 @echo ' $$(call CLEAN_DUMMY)' >> $@
533 @echo 'ipc_name:=$(shell echo $* | tr A-Z a-z)' > $@
534 @echo '$$(ipc_name)_client.h $$(ipc_name)_client.c $$(ipc_name)_server.h $$(ipc_name)_server.c: $*.api $$(IPC_MKSTUB)' >> $@
535 @echo ' $$(IPC_MKSTUB) $$(AGLCPPFLAGS) $$(IPC_MKSTUB_FLAGS) $$<' >> $@
537 @echo '$*.api:' >> $@
540 ################################################################################
543 # If you write a pattern of smbols that the library may export,
544 # it checks for unmatched symbols at installation time.
547 # libfoo_SYMBOL_PATTERN = ^(foo|FOO)_
548 # libbar_SYMBOL_PATTERN = ^(bar|Bar)
551 $(LIB_INSTALL_DIR)/%.so: %.so
554 @test -z '$($*_SYMBOL_PATTERN)' || $(NM) -f posix -o $< \
555 | awk 'NF>=3 && $$3~/[ABCDGRST]/ && $$2!~/^(_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_edata|_end|__)/ && $$2!~/$($*_SYMBOL_PATTERN)/ \
556 {print $$1, "WARNING: A symbol ", $$2, " that does not match the registered pattern $($*_SYMBOL_PATTERN) is included." > "/dev/stderr"}'
558 $(LIB_INSTALL_DIR)/%.a: %.a
560 @test -z '$($*_SYMBOL_PATTERN)' || $(NM) -f posix -o $< \
561 | awk 'NF>=3 && $$3~/[ABCDGRST]/ && $$2!~/$($*_SYMBOL_PATTERN)/ \
562 {print $$1, "WARNING: A symbol ", $$2, " that does not match the registered pattern $($*_SYMBOL_PATTERN) is included." > "/dev/stderr"}'
563 #################################################################################
565 ifneq ($(strip $(SUBDIRS)),)
569 subdir=$(@:all-%=%); \
570 echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \
571 $(MAKE) -C $(@:all-%=%) all; \
572 echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END==";
574 $(SUBDIRS:%=install--%):
577 subdir=$(@:install--%=%); \
578 echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \
579 $(MAKE) -C $(@:install--%=%) install; \
580 echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END==";
582 $(SUBDIRS:%=install-header-r-%):
585 subdir=$(@:install-header-r-%=%); \
586 echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \
587 $(MAKE) -C $(@:install-header-r-%=%) install-header-r; \
588 echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END==";
591 $(SUBDIRS:%=clean--%):
592 @$(MAKE) -C $(@:clean--%=%) clean
594 $(SUBDIRS:%=clean-all--%):
596 @$(MAKE) -C $(@:clean-all--%=%) clean-all
602 #################################################################################
604 ifeq ($(MAKECMDGOALS),all)
605 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
608 ifeq ($(MAKECMDGOALS),)
609 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
612 ifeq ($(MAKECMDGOALS),install)
613 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
615 ifeq ($(MAKECMDGOALS),install-test)
616 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
618 ifeq ($(MAKECMDGOALS),install-test-exec)
619 -include $(PROG_RULES) $(TESTPROG_RULES) $(PROG_DEPS) $(TESTPROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
622 ifeq ($(MAKECMDGOALS),test)
623 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
626 ifeq ($(MAKECMDGOALS),run-ct-local)
627 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
630 ifeq ($(MAKECMDGOALS),run-itv2-local)
631 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
634 ifeq ($(MAKECMDGOALS),run-ut-local)
635 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
638 ifeq ($(MAKECMDGOALS),run-it-local)
639 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
644 ifeq ($(MAKECMDGOALS),test-exec)
645 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
649 ifeq ($(MAKECMDGOALS),build-prog)
650 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS)
653 ifeq ($(MAKECMDGOALS),build-testdriver)
654 -include $(PROG_RULES) $(TESTPROG_RULES) $(TESTPROG_DEPS) $(TESTPROG_LIBDEPS)
657 ifeq ($(MAKECMDGOALS),build-lib)
658 -include $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS)
661 ifeq ($(MAKECMDGOALS),build-arlib)
662 -include $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS)
665 ifeq ($(MAKECMDGOALS),build-shlib)
666 -include $(SHLIB_RULES) $(LIB_DEPS)
669 ifeq ($(MAKECMDGOALS),build-arlib)
670 -include $(ARLIB_RULES) $(LIB_DEPS)
673 ifeq ($(strip $(filter clean%,$(MAKECMDGOALS))),)
674 ifneq ($(IPC_API_RULES),)
675 -include $(IPC_API_RULES) $(IPC_API_DEPS)