Changed to not use SDKTARGETSYSROOT.
[staging/basesystem.git] / agl-basefiles / share / agl.mk
1 #
2 # @copyright Copyright (c) 2016-2019 TOYOTA MOTOR CORPORATION.
3 #
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
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
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.
15 #
16 #################################################################################
17 #
18 # MAKE VARIABLES
19 #
20 # (mandatory)
21 #   MAKETOP        : pprosrc/root directory
22 #
23 # (optional)
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
50 #
51 # MAKE TARGETS
52 #
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 #################################################################################
65
66
67 ifneq ($(ADD_EXT),)
68   AEXT=.$(ADD_EXT)
69 endif
70
71
72 ifneq ($(strip $(filter $(MAKECMDGOALS),\
73         lint \
74         )),)
75 endif
76
77 ifneq ($(strip $(filter $(MAKECMDGOALS),\
78         )),)
79 endif
80
81
82 #################################################################################
83 WARN_FLAGS ?= -Wall
84 DEBUG_FLAGS ?= -g
85
86 AUTO_INCLUDE := -include agl_types_deprecated.h
87 AGLCFLAGS := $(CFLAGS) $(COMPONENT_CFLAGS)
88 AGLCXXFLAGS := $(CXXFLAGS) $(COMPONENT_CXXFLAGS)
89 AGLCPPFLAGS := $(CPPFLAGS) $(COMPONENT_CPPFLAGS)
90 AGLASFLAGS :=  $(ASFLAGS)
91 AGLLDFLAGS := $(LDFLAGS) $(COMPONENT_LDFLAGS)
92 AGLLDLIBS := $(LDLIBS) $(COMPONENT_LDLIBS)
93 AGLARFLAGS := $(ARFLAGS)
94 AGLPICFLAGS := -fPIC
95
96 AGLCFLAGS += $(WARN_FLAGS) $(DEBUG_FLAGS) $(AUTO_INCLUDE)
97 AGLCXXFLAGS += $(WARN_FLAGS) $(DEBUG_FLAGS) $(AUTO_INCLUDE)
98 AGLASFLAGS += $(WARN_FLAGS) $(ARCH_FLAGS)
99
100
101 ifdef LINK_CXX
102 LINK := $(CXX)
103 else
104 LINK := $(CC)
105 endif
106
107 ifdef LINK_SHLIB_CXX
108 LINK_SHLIB := $(CXX)
109 else
110 LINK_SHLIB := $(CC)
111 endif
112
113 ifdef DUMMY_SHLIB
114 AGLLDFLAGS += -L.
115 endif
116
117 ######### add gcov option ############
118
119
120
121 define LINK_DUMMY
122 if [ "$1" != "$3" ]; then \
123         echo "dummy lib ($1) created" ; \
124         $(LINK_SHLIB) -shared $(PIC_FLAGS) -Wl,-soname=$2 -o $1 -xc /dev/null ; \
125 else \
126         echo "error: dummy lib must not have the same name as $3" ; \
127         exit 1 ; \
128 fi ;
129 endef
130
131 define INST_DUMMY
132         @$(foreach lib,$(DUMMY_SHLIB),$(if $(lib),$(call LINK_DUMMY,$(lib),$(if $($(lib)_SONAME),$($(lib)_SONAME),$(lib)),$1)))
133 endef
134
135 define CLEAN_DUMMY
136         @$(foreach lib,$(DUMMY_SHLIB),$(if $(lib),rm -f $(lib)))
137 endef
138
139 define INSTALL_EXT
140 @if [ "$(AEXT)" != "" ];then \
141   if echo "$(ADD_EXT)" | grep -q '^[A-Za-z]' ;then \
142     echo "$< -> $<$(AEXT)" ;\
143     mv $< $<$(AEXT) ;\
144     install -c -m 0755 $<$(AEXT) $@$(AEXT) ;\
145     if [ -f "$*.map" ];then \
146       mv $*.map $*.map$(AEXT) ;\
147     fi ;\
148   else \
149     echo "ADD_EXT : ERROR $(ADD_EXT)" ;\
150     exit 1 ;\
151   fi ;\
152 fi
153 endef
154
155
156 define INSTALL_SCRIPT
157 install -d -m 0755 $(@D)
158 install -c -m 0755 $< $@
159 endef
160
161 define INSTALL_PIXMAP
162 install -d -m 0755 $(@D)
163 install -c -m 0644 $< $@
164 endef
165
166 define INSTALL_UCODE
167 install -d -m 0755 $(@D)
168 install -c -m 0644 $< $@
169 endef
170
171 define INSTALL_DATAINITOBJ
172 if [ -n "$<" ]; then\
173  install -d -m 0755 $(@D);\
174  install -c -m 0644 $< $@;\
175 fi;
176 endef
177
178 define INSTALL_OBJ
179 install -d -m 0755 $(@D)
180 install -c -m 0644 $< $@
181 endef
182
183 define INSTALL_CONFBIN
184 if [ -n "$<" ]; then\
185  install -d -m 0755 $(@D);\
186  install -c -m 0644 $< $@;\
187 fi;
188 endef
189
190 #################################################################################
191
192
193 ## for libc ##
194 AGLCPPFLAGS += -D_GNU_SOURCE
195
196 ## for libPosixBased001Legacy 
197 AGLCPPFLAGS += -DAGL_PosixBasedOS001LEGACY_USED -DAGL_STUB -DLINUX
198
199 ## for agl header##
200 AGLCPPFLAGS += -I=/usr/include/basesystem
201
202 ## for agl library##
203 AGLLDFLAGS += -L=/usr/lib/basesystem
204
205 ifneq ($(INST_SHLIBS),libagl_stub)
206 AGLLDLIBS += -Wl,-Bdynamic -lpthread
207 endif
208
209
210 ##########################################
211
212 COMPONENT_NAME ?= $(error COMPONENT_NAME is not defined)
213 AGL_TOPDIR ?= $(DESTDIR)/usr
214 AGL_INCDIR := $(AGL_TOPDIR)/include/basesystem
215 AGL_LIBDIR := $(AGL_TOPDIR)/lib/basesystem
216 AGL_BINDIR := $(AGL_TOPDIR)/bin
217 AGL_PIXMAPDIR := $(AGL_TOPDIR)/pixmaps
218 AGL_UCODEDIR := $(AGL_TOPDIR)/data/ucode
219
220 #################################################################################
221
222 HEADER_INSTALL_DIR := $(AGL_INCDIR)/$(COMPONENT_NAME)
223 LIB_INSTALL_DIR := $(AGL_LIBDIR)
224 PROG_INSTALL_DIR := $(AGL_BINDIR)
225 PIXMAP_INSTALL_DIR := $(AGL_PIXMAPDIR)/$(COMPONENT_NAME)
226 UCODE_INSTALL_DIR := $(AGL_UCODEDIR)
227 DATAINITOBJ_INSTALL_DIR := $(AGL_DATAINITOBJDIR)
228 CONFBIN_INSTALL_DIR := $(AGL_CONFBINDIR)
229
230 #################################################################################
231
232 DEL_OBJS = $(filter %.o,$($(1)_SRCS:%.c=%.o) $($(1)_SRCS:%.cc=%.o) \
233  $($(1)_SRCS:%.cpp=%.o) \
234  $($(1)_SRCS:%.S=%.o))
235 OBJS = $(DEL_OBJS) $($(1)_PCOS)
236 DEL_SOBJS = $(filter %.os,$($(1)_SRCS:%.c=%.os) $($(1)_SRCS:%.cc=%.os) \
237  $($(1)_SRCS:%.cpp=%.os) \
238  $($(1)_SRCS:%.S=%.os))
239 DEL_GCDA = $(filter %.gcda,$($(1)_SRCS:%.c=%.gcda) $($(1)_SRCS:%.cc=%.gcda) \
240  $($(1)_SRCS:%.cpp=%.gcda) \
241  $($(1)_SRCS:%.S=%.gcda))
242 DEL_GCNO = $(filter %.gcno,$($(1)_SRCS:%.c=%.gcno) $($(1)_SRCS:%.cc=%.gcno) \
243  $($(1)_SRCS:%.cpp=%.gcno) \
244  $($(1)_SRCS:%.S=%.gcno))
245 DEL_GCOV = $(filter %.gcov,$($(1)_SRCS:%.c=%.gcov) $($(1)_SRCS:%.cc=%.gcov) \
246  $($(1)_SRCS:%.cpp=%.gcov) \
247  $($(1)_SRCS:%.S=%.gcov))
248
249 DEL_INFO = $(filter %.info, \
250  $(dirname $($(1)_SRCS:%.c=%.tmp))lcov.info \
251  $(dirname $($(1)_SRCS:%.cc=%.tmp))lcov.info \
252  $(dirname $($(1)_SRCS:%.cpp=%.tmp))lcov.info \
253  $(dirname $($(1)_SRCS:%.S=%.tmp))lcov.info)
254
255 SOBJS = $(DEL_SOBJS) $($(1)_PCOS)
256 DEPS = $(join $(dir $(DEL_OBJS)),$(patsubst %.o,.%.d,$(notdir $(DEL_OBJS))))
257
258 INST_TEST_MOCK_LIBS := 
259 INST_TEST_MOCK_SHLIBS := 
260 INST_ITV2_TESTPROGS := 
261 INST_TESTPROGS := 
262
263 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)))
264 CLEAN_SOBJS := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(call DEL_SOBJS,$(lib)))
265
266 CLEAN_GCDA := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCDA,$(lib)))
267 CLEAN_GCNO := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCNO,$(lib)))
268 CLEAN_GCOV := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCOV,$(lib)))
269 CLEAN_CFG  := $(INST_UT_SMCONF:%=%.cfg) $(INST_IT_SMCONF:%=%.cfg)
270
271 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))))
272
273 LIB_DEPS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS),$(call DEPS,$(lib)))
274 PROG_DEPS := $(foreach prog,$(INST_PROGS),$(call DEPS,$(prog)))
275 TESTPROGS_DEPS := 
276 PROG_RULES := $(foreach prog,$(INST_PROGS),$(if $(prog),.$(prog).out.rule))
277 TESTPROG_RULES := 
278
279 LIB_RULES := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_TEST_MOCK_LIBS),$(if $($(lib)_SRCS),.$(lib).a.rule))
280 SHLIB_RULES := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),.$(lib).so.rule))
281 ARLIB_RULES := $(foreach lib,$(INST_LIBS) $(NOINST_LIBS),$(if $($(lib)_SRCS),.$(lib).a.rule))
282
283 PROG_MAPS := $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).map))
284 TESTPROG_MAPS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).map))
285 LIB_MAPS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).map))
286 PROG_LIBDEPS := $(foreach prog,$(INST_PROGS),$(if $(prog),.$(prog).out.libdep))
287 TESTPROG_LIBDEPS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),.$(prog).out.libdep))
288
289 BUILD_MK_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
290 include $(BUILD_MK_DIR)/rpc_rule.mk
291
292 IPC_API_RULES := $(IPC_API:%=.%.ipc.rule)
293 ipc_api := $(shell echo $(IPC_API) | tr A-Z a-z)
294 CLEAN_IPC_API_SRCS := $(ipc_api:%=%_client.h) $(ipc_api:%=%_client.c) $(ipc_api:%=%_server.h) $(ipc_api:%=%_server.c)
295 IPC_API_DEPS := $(ipc_api:%=%_client.d) $(ipc_api:%=%_server.d)
296
297 CLEAN_PROGS := $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).out))
298 CLEAN_TESTPROGS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).out))
299
300 ifneq ($(AEXT),)
301 CLEAN_PROGS += $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).out$(AEXT)))
302 CLEAN_TESTPROGS += $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).out$(AEXT)))
303 endif
304 CLEAN_LIBS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS),$(if $($(lib)_SRCS),$(lib).a))
305 CLEAN_SHLIBS := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).so))
306 ifneq ($(AEXT),)
307 CLEAN_SHLIBS += $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).so$(AEXT)))
308 endif
309 ifneq ($(DUMMY_SHLIB),)
310 CLEAN_SHLIBS += $(DUMMY_SHLIB)
311 endif
312
313 CLEAN_FILES += $(CLEAN_OBJS) $(CLEAN_SOBJS)
314 CLEAN_FILES += $(PROG_DEPS) $(LIB_DEPS) $(TESTPROG_DEPS)
315 CLEAN_FILES += $(PROG_MAPS) $(PROG_LIBDEPS) $(TESTPROG_MAPS) $(TESTPROG_LIBDEPS)
316 CLEAN_FILES += $(PROG_RULES) $(LIB_RULES) $(SHLIB_RULES) $(AR_RULES) $(TESTPROG_RULES)
317 CLEAN_FILES += $(CLEAN_PROGS) $(CLEAN_LIBS) $(CLEAN_SHLIBS) $(LIB_MAPS) $(CLEAN_TESTPROGS)
318 CLEAN_FILES += $(RPC_API_RULES) $(CLEAN_API_SRCS) $(RPC_API_DEPS)
319 CLEAN_FILES += $(IPC_API_RULES) $(CLEAN_IPC_API_SRCS) $(IPC_API_DEPS)
320 CLEAN_FILES += $(INST_DATAINITOBJ)
321 CLEAN_FILES += $(CLEAN_INFO)
322 CLEAN_FILES += $(CLEAN_GCNO) $(CLEAN_GCDA) $(CLEAN_GCOV)
323 CLEAN_FILES += $(CLEAN_CFG)
324 ifneq ($(AEXT),)
325 CLEAN_FILES += $(foreach lib,$(INST_SHLIBS) $(INST_PROGS),$(if $(lib),$(lib).map$(AEXT)))
326 endif
327
328 #################################################################################
329
330 # RPATHLINK := $(SYSROOT)/usr/lib:$(SYSROOT)/lib:$(SYSROOT)/usr/lib/basesystem
331
332 #################################################################################
333 SUBDIRS := $(filter-out mock,$(SUBDIRS))
334
335 .PHONY: all all-subdirs install test $(SUBDIRS:%=all-%) $(SUBDIRS:%=install--%)
336 .PHONY: install-test $(SUBDIRS:%=install-test-%)
337 .PHONY: build-lib
338 .PHONY: build-prog $(SUBDIRS:%=build-prog-%)
339 .PHONY: build-shlib $(SUBDIRS:%=build-shlib-%)
340 .PHONY: build-arlib $(SUBDIRS:%=build-arlib-%)
341 .PHONY: build-cfg
342 .PHONY: install-header $(SUBDIRS:%=install-header-%)
343 .PHONY: install-lib
344 .PHONY: install-shlib $(SUBDIRS:%=install-shlib-%)
345 .PHONY: install-arlib $(SUBDIRS:%=install-arlib-%)
346 .PHONY: install-prog $(SUBDIRS:%=install-prog-%)
347 .PHONY: install-data $(SUBDIRS:%=install-data-%)
348 .PHONY: install-cfg $(SUBDIRS:%=install-cfg-%)
349 .PHONY: install-preload 
350 .PHONY: clean-all
351 .PHONY: clean-self
352 .PHONY: clean-sub $(SUBDIRS:%=clean-%)
353 .PHONY: clean-all-sub $(SUBDIRS:%=clean-all-%)
354 .PHONY: clean-self-sub
355 .PHONY: lint lint-exec
356
357
358 REF_ROOT_DIR=/home/ref_root/
359 TEST_SERVER_DIR=/home/agl_sysroot/
360 REFHW_SERVER=192.168.1.2
361
362 PHONY: all
363
364 lint:
365         @set -e;\
366         $(MAKE) lint-exec
367
368
369 #all: build-lib build-prog build-test-mock-lib build-cfg all-subdirs
370 all: build-lib build-prog build-cfg all-subdirs
371
372 all-subdirs:
373         @set -e;\
374         for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) all); done
375
376
377 #lint-exec: $(INST_HEADERS) $($(INST_SHLIBS)_SRCS) $($(INST_LIBS)_SRCS) $($(INST_PROGS)_SRCS)
378 #       -cpplint.py $^ > cpplint_result.txt 2>&1
379
380 lint-exec:
381         $(eval LINTFILES := $(shell find . -name "*.c*" -o -name "*.h*"))
382         -cpplint.py --extensions=hpp,cpp,c,cc,h $(LINTFILES) > cpplint_result.txt 2>&1
383
384
385 #install: install-header install-lib install-prog install-data install-test-mock-header install-test-mock-lib install-test-casename $(SUBDIRS:%=install--%)
386 install: install-header install-lib install-prog install-data $(SUBDIRS:%=install--%)
387
388
389 build-lib: build-shlib build-arlib
390
391 build-shlib: $(INST_SHLIBS:%=%.so)
392
393 build-arlib: $(INST_LIBS:%=%.a) $(NOINST_LIBS:%=%.a)
394
395 TOPDIR=$(abspath ./)
396 generate-header-list: install-header-local
397         echo $(COMPONENT_NAME) > $(addsuffix .list, $(abspath ./))
398         ls -1 $(TOPDIR)/tmp_head/usr/include/basesystem/$(COMPONENT_NAME)/ >> $(addsuffix .list, $(abspath ./))
399         rm -rf ./tmp_head
400
401 build-prog: $(INST_PROGS:%=%.out)
402
403
404 install-lib: install-arlib install-shlib
405
406 install-arlib: build-arlib
407 ifneq ($(strip $(INST_LIBS)),)
408         install -m 0755 -d $(LIB_INSTALL_DIR)
409         install -m 0644 $(INST_LIBS).a $(LIB_INSTALL_DIR)
410 endif
411
412 install-shlib: build-shlib
413 ifneq ($(strip $(INST_SHLIBS)),)
414         install -m 0755 -d $(LIB_INSTALL_DIR)
415         install -m 0644 $(INST_SHLIBS).so $(LIB_INSTALL_DIR)
416 endif
417
418 install-prog: build-prog
419 ifneq ($(strip $(INST_PROGS)),)
420         install -m 0755 -d $(PROG_INSTALL_DIR)
421         $(foreach prog, $(INST_PROGS), install -m 0755 $(prog).out $(PROG_INSTALL_DIR)/$(prog);)
422 endif
423
424
425 install-header-r: install-header $(SUBDIRS:%=install-header-r-%)
426
427
428 install-header-local:
429         $(MAKE) DESTDIR=`pwd`/tmp_head install-header-r
430
431
432 install-header: $(INST_HEADERS:%=install-%)
433
434
435 $(INST_HEADERS:%=install-%): install-%: %
436 ifneq ($(strip $(INST_HEADERS)),)
437         install -m 0755 -d $(HEADER_INSTALL_DIR)
438         install -m 0644 $< $(HEADER_INSTALL_DIR)
439 endif
440
441
442
443 HOST_LAUNCH_XML2CFG = /usr/share/basesystem/launch_xml2cfg.sh
444 CONF_H = /usr/include/basesystem/sm_launch_conf.h
445
446 %.cfg: %.xml
447         set -e; \
448         cpp -P -include $(CONF_H) $< > $<.tmp ; \
449         cd $(dir $<.tmp); \
450         $(HOST_LAUNCH_XML2CFG) $(notdir $<.tmp) > $@ ; \
451         rm -f $<.tmp ;
452
453
454 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)/%)
455
456
457 clean: $(SUBDIRS:%=clean--%)
458         rm -f $(CLEAN_FILES)
459         rm -rf $(CLEAN_DIRS)
460
461 clean-all: $(SUBDIRS:%=clean-all--%)
462         rm -f $(CLEAN_FILES) $(UNINST_FILES)
463         rm -rf $(CLEAN_DIRS)
464
465 clean-self: clean
466
467 #################################################################################
468
469 %.o: %.c
470         $(CC) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCFLAGS) -c -o $@ $<
471 ifeq ($(SAFLAG),on)
472         $(SATOOL) $(AGLCPPFLAGS) $(AGLCFLAGS) -c $<
473 endif
474
475 %.o: %.cc
476         $(CXX) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
477 ifeq ($(SAFLAG),on)
478         $(SATOOL) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
479 endif
480
481 %.o: %.cpp
482         $(CXX) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
483 ifeq ($(SAFLAG),on)
484         $(SATOOL) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
485 endif
486
487 %.o: %.S
488         $(CC) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLASFLAGS) -c -o $@ $<
489
490 %.os: %.c
491         $(CC) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCFLAGS) -c -o $@ $<
492 ifeq ($(SAFLAG),on)
493         $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCFLAGS) -c $<
494 endif
495
496 %.os: %.cc
497         $(CXX) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
498 ifeq ($(SAFLAG),on)
499         $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
500 endif
501
502 %.os: %.cpp
503         $(CXX) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $<
504 ifeq ($(SAFLAG),on)
505         $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $<
506 endif
507
508 %.os: %.S
509         $(CC) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLASFLAGS) -c -o $@ $<
510
511 .%.out.rule:
512         @echo '$*.out: $$(call OBJS,$*)' > $@
513         @echo ' @rm -f $$(@:%=.%.libdep)' >> $@
514         @echo ' $$(LINK) $$(AGLLDFLAGS) -Wl,-rpath=$$(RPATH) -Wl,-rpath-link=$$(RPATHLINK),-Map=$$(@:%.out=%.map) $$(call OBJS,$*) $($(*F)_LDLIBS) $$(AGLLDLIBS) -o $$@' >> $@
515         @echo ' @awk '\''$$$$1=="LOAD" && $$$$2~/\.a$$$$/{print("$$@:", $$$$2);print($$$$2 ":")}'\'' $$(@:%.out=%.map) > $$(@:%=.%.libdep)' >> $@
516
517 .%.a.rule:
518         @echo '$*.a: $$(call OBJS,$*)' > $@
519         @echo ' $$(AR) $$(AGLARFLAGS) $$@ $$?' >> $@
520
521 .%.so.rule:
522         @echo '$*.so: $$(call SOBJS,$*)' > $@
523         @echo ' $$(call INST_DUMMY,$*.so)' >> $@
524         @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 $$@' >> $@
525         @echo ' $$(call CLEAN_DUMMY)' >> $@
526
527 .%.ipc.rule:
528         @echo 'ipc_name:=$(shell echo $* | tr A-Z a-z)' > $@
529         @echo '$$(ipc_name)_client.h $$(ipc_name)_client.c $$(ipc_name)_server.h $$(ipc_name)_server.c: $*.api $$(IPC_MKSTUB)' >> $@
530         @echo ' $$(IPC_MKSTUB) $$(AGLCPPFLAGS) $$(IPC_MKSTUB_FLAGS) $$<' >> $@
531         @echo >> $@
532         @echo '$*.api:' >> $@
533         @echo >> $@
534
535 ################################################################################
536
537 #
538 # If you write a pattern of smbols that the library may export,
539 # it checks for unmatched symbols at installation time.
540 #
541 # (example)
542 #   libfoo_SYMBOL_PATTERN = ^(foo|FOO)_
543 #   libbar_SYMBOL_PATTERN = ^(bar|Bar)
544 #
545
546 $(LIB_INSTALL_DIR)/%.so: %.so
547         $(INSTALL_SHLIB)
548         $(INSTALL_EXT)
549         @test -z '$($*_SYMBOL_PATTERN)' || $(NM) -f posix -o $< \
550           | awk 'NF>=3 && $$3~/[ABCDGRST]/ && $$2!~/^(_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_edata|_end|__)/ && $$2!~/$($*_SYMBOL_PATTERN)/ \
551             {print $$1, "WARNING: A symbol ", $$2, " that does not match the registered pattern $($*_SYMBOL_PATTERN) is included." > "/dev/stderr"}'
552
553 $(LIB_INSTALL_DIR)/%.a: %.a
554         $(INSTALL_LIB)
555         @test -z '$($*_SYMBOL_PATTERN)' || $(NM) -f posix -o $< \
556           | awk 'NF>=3 && $$3~/[ABCDGRST]/ && $$2!~/$($*_SYMBOL_PATTERN)/ \
557             {print $$1, "WARNING: A symbol ", $$2, " that does not match the registered pattern $($*_SYMBOL_PATTERN) is included." > "/dev/stderr"}'
558 #################################################################################
559
560 ifneq ($(strip $(SUBDIRS)),)
561 $(SUBDIRS:%=all-%):
562         @set -e; \
563         dir=`pwd`; \
564         subdir=$(@:all-%=%); \
565         echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \
566         $(MAKE) -C $(@:all-%=%) all; \
567         echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END==";
568
569 $(SUBDIRS:%=install--%):
570         @set -e; \
571         dir=`pwd`; \
572         subdir=$(@:install--%=%); \
573         echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \
574         $(MAKE) -C $(@:install--%=%) install; \
575         echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END==";
576
577 $(SUBDIRS:%=install-header-r-%):
578         @set -e; \
579         dir=`pwd`; \
580         subdir=$(@:install-header-r-%=%); \
581         echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \
582         $(MAKE) -C $(@:install-header-r-%=%) install-header-r; \
583         echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END==";
584
585
586 $(SUBDIRS:%=clean--%):
587         @$(MAKE) -C $(@:clean--%=%) clean
588
589 $(SUBDIRS:%=clean-all--%):
590         @echo "$@ ==Start=="
591         @$(MAKE) -C $(@:clean-all--%=%) clean-all
592         @echo "$@ ==End=="
593
594 endif
595
596
597 #################################################################################
598
599 ifeq ($(MAKECMDGOALS),all)
600 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
601 endif
602
603 ifeq ($(MAKECMDGOALS),)
604 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
605 endif
606
607 ifeq ($(MAKECMDGOALS),install)
608 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
609 endif
610 ifeq ($(MAKECMDGOALS),install-test)
611 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
612 endif
613 ifeq ($(MAKECMDGOALS),install-test-exec)
614 -include $(PROG_RULES) $(TESTPROG_RULES) $(PROG_DEPS) $(TESTPROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
615 endif
616
617 ifeq ($(MAKECMDGOALS),test)
618 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
619 endif
620
621 ifeq ($(MAKECMDGOALS),run-ct-local)
622 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
623 endif
624
625 ifeq ($(MAKECMDGOALS),run-itv2-local)
626 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES)
627 endif
628
629 ifeq ($(MAKECMDGOALS),run-ut-local)
630 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
631 endif
632
633 ifeq ($(MAKECMDGOALS),run-it-local)
634 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
635 endif
636
637
638
639 ifeq ($(MAKECMDGOALS),test-exec)
640 -include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) 
641 endif
642
643
644 ifeq ($(MAKECMDGOALS),build-prog)
645 -include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS)
646 endif
647
648 ifeq ($(MAKECMDGOALS),build-testdriver)
649 -include $(PROG_RULES) $(TESTPROG_RULES) $(TESTPROG_DEPS) $(TESTPROG_LIBDEPS)
650 endif
651
652 ifeq ($(MAKECMDGOALS),build-lib)
653 -include $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS)
654 endif
655
656 ifeq ($(MAKECMDGOALS),build-arlib)
657 -include $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS)
658 endif
659
660 ifeq ($(MAKECMDGOALS),build-shlib)
661 -include $(SHLIB_RULES) $(LIB_DEPS)
662 endif
663
664 ifeq ($(MAKECMDGOALS),build-arlib)
665 -include $(ARLIB_RULES) $(LIB_DEPS)
666 endif
667
668 ifeq ($(strip $(filter clean%,$(MAKECMDGOALS))),)
669 ifneq ($(IPC_API_RULES),)
670 -include $(IPC_API_RULES) $(IPC_API_DEPS)
671 endif
672 endif
673