From 8e0e00d21146a84c18f9cf9409e187b4fb0248aa Mon Sep 17 00:00:00 2001 From: Riku Nomoto Date: Thu, 19 Nov 2020 12:45:32 +0900 Subject: Init basesystem source codes. Signed-off-by: Riku Nomoto Change-Id: I55aa2f1406ce7f751ae14140b613b53b68995528 --- agl-basefiles/share/agl.mk | 677 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 677 insertions(+) create mode 100644 agl-basefiles/share/agl.mk (limited to 'agl-basefiles/share/agl.mk') diff --git a/agl-basefiles/share/agl.mk b/agl-basefiles/share/agl.mk new file mode 100644 index 0000000..77d4512 --- /dev/null +++ b/agl-basefiles/share/agl.mk @@ -0,0 +1,677 @@ +# +# @copyright Copyright (c) 2016-2019 TOYOTA MOTOR CORPORATION. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################# +# +# MAKE VARIABLES +# +# (mandatory) +# MAKETOP : pprosrc/root directory +# +# (optional) +# COMPONENT_NAME : component name +# INST_HEADERS : headers to install +# INST_LIBS : libraries to install +# INST_SHLIBS : shared libraries to install +# NOINST_LIBS : libraries for local use +# INST_PROGS : programs to install +# INST_CONFBIN : conf_bin to install +# RPC_API : RPC API definitions (without suffix) +# IPC_API : IPC API definitions (without suffix) +# xxx_SRCS : source files of program xxx (*.{c,S,cc}) +# libxxx_SRCS : source files of library libxxx (*.{c,S,cc}) +# xxx_PCOS : pre-compiled object files of program xxx (*.{o,os,a}) +# libxxx_PCOS : pre-compiled object files of library libxxx (*.{o,os,a}) +# SUBDIRS : sub directories +# CLEAN_FILES : extra files to clean +# CLEAN_DIRS : extra directoies to clean +# UNINST_FILES : extra files to uninstall +# CPPFLAGS : preprocess options (-I, -D, ...) +# CFLAGS : C source compile options +# CXXFLAGS : C++ source compile options +# ASFLAGS : assembler source assemble options +# LDFLAGS : link options (-L, ...) +# LDLIBS : libraries to link (-lxxx) +# ALL : targets to make +# (default: install-header install-lib install-prog install-data) +# xxx_SONAME : dummy library SONAME +# +# MAKE TARGETS +# +# all, test : for target in $(ALL); do $(MAKE) $$target; done +# install-prog : install program +# install-lib : install-shlib and intall-arlib +# install-shlib : install shared libraries +# install-arlib : install static libraries +# install-test-mock-lib : install mock libraries +# install-test-mock-shlib : install shared mock libraries +# install-test-mock-arlib : install static mock libraries +# clean, clean-test : clean temporary files +# clean-all, clean-all-test : clean temporary files and installed files +# clean-self, clean-self-test : non-recursive clean +################################################################################# + + +ifneq ($(ADD_EXT),) + AEXT=.$(ADD_EXT) +endif + + +ifneq ($(strip $(filter $(MAKECMDGOALS),\ + lint \ + )),) +endif + +ifneq ($(strip $(filter $(MAKECMDGOALS),\ + )),) +endif + + +################################################################################# +SYSROOT ?= $(SDKTARGETSYSROOT) +DESTDIR ?= $(SDKTARGETSYSROOT) + +WARN_FLAGS ?= -Wall +DEBUG_FLAGS ?= -g + +AUTO_INCLUDE := -include $(SYSROOT)/usr/agl/include/agl_types_obsoluted.h +AGLCFLAGS := $(CFLAGS) $(COMPONENT_CFLAGS) +AGLCXXFLAGS := $(CXXFLAGS) $(COMPONENT_CXXFLAGS) +AGLCPPFLAGS := $(CPPFLAGS) $(COMPONENT_CPPFLAGS) +AGLASFLAGS := $(ASFLAGS) +AGLLDFLAGS := $(LDFLAGS) $(COMPONENT_LDFLAGS) +AGLLDLIBS := $(LDLIBS) $(COMPONENT_LDLIBS) +AGLARFLAGS := $(ARFLAGS) +AGLPICFLAGS := -fPIC + +AGLCFLAGS += $(WARN_FLAGS) $(DEBUG_FLAGS) $(AUTO_INCLUDE) +AGLCXXFLAGS += $(WARN_FLAGS) $(DEBUG_FLAGS) $(AUTO_INCLUDE) +AGLASFLAGS += $(WARN_FLAGS) $(ARCH_FLAGS) + + +ifdef LINK_CXX +LINK := $(CXX) +else +LINK := $(CC) +endif + +ifdef LINK_SHLIB_CXX +LINK_SHLIB := $(CXX) +else +LINK_SHLIB := $(CC) +endif + +ifdef DUMMY_SHLIB +AGLLDFLAGS += -L. +endif + +######### add gcov option ############ + + + +define LINK_DUMMY +if [ "$1" != "$3" ]; then \ + echo "dummy lib ($1) created" ; \ + $(LINK_SHLIB) -shared $(PIC_FLAGS) -Wl,-soname=$2 -o $1 -xc /dev/null ; \ +else \ + echo "error: dummy lib must not have the same name as $3" ; \ + exit 1 ; \ +fi ; +endef + +define INST_DUMMY + @$(foreach lib,$(DUMMY_SHLIB),$(if $(lib),$(call LINK_DUMMY,$(lib),$(if $($(lib)_SONAME),$($(lib)_SONAME),$(lib)),$1))) +endef + +define CLEAN_DUMMY + @$(foreach lib,$(DUMMY_SHLIB),$(if $(lib),rm -f $(lib))) +endef + +define INSTALL_EXT +@if [ "$(AEXT)" != "" ];then \ + if echo "$(ADD_EXT)" | grep -q '^[A-Za-z]' ;then \ + echo "$< -> $<$(AEXT)" ;\ + mv $< $<$(AEXT) ;\ + install -c -m 0755 $<$(AEXT) $@$(AEXT) ;\ + if [ -f "$*.map" ];then \ + mv $*.map $*.map$(AEXT) ;\ + fi ;\ + else \ + echo "ADD_EXT : ERROR $(ADD_EXT)" ;\ + exit 1 ;\ + fi ;\ +fi +endef + + +define INSTALL_SCRIPT +install -d -m 0755 $(@D) +install -c -m 0755 $< $@ +endef + +define INSTALL_PIXMAP +install -d -m 0755 $(@D) +install -c -m 0644 $< $@ +endef + +define INSTALL_UCODE +install -d -m 0755 $(@D) +install -c -m 0644 $< $@ +endef + +define INSTALL_DATAINITOBJ +if [ -n "$<" ]; then\ + install -d -m 0755 $(@D);\ + install -c -m 0644 $< $@;\ +fi; +endef + +define INSTALL_OBJ +install -d -m 0755 $(@D) +install -c -m 0644 $< $@ +endef + +define INSTALL_CONFBIN +if [ -n "$<" ]; then\ + install -d -m 0755 $(@D);\ + install -c -m 0644 $< $@;\ +fi; +endef + +################################################################################# + + +## for libc ## +AGLCPPFLAGS += -D_GNU_SOURCE + +## for libPosixBased001Legacy +AGLCPPFLAGS += -DAGL_PosixBasedOS001LEGACY_USED -DAGL_STUB -DLINUX + +## for agl header## +AGLCPPFLAGS += -I$(SYSROOT)/usr/agl/include + +## for agl library## +AGLLDFLAGS += -L$(SYSROOT)/usr/agl/lib + +ifneq ($(INST_SHLIBS),libagl_stub) +AGLLDLIBS += -Wl,-Bdynamic -lpthread +endif + + +########################################## + +COMPONENT_NAME ?= $(error COMPONENT_NAME is not defined) +AGL_TOPDIR ?= $(DESTDIR)/usr/agl +AGL_INCDIR := $(AGL_TOPDIR)/include +AGL_LIBDIR := $(AGL_TOPDIR)/lib +AGL_BINDIR := $(AGL_TOPDIR)/bin +AGL_PIXMAPDIR := $(AGL_TOPDIR)/pixmaps +AGL_UCODEDIR := $(AGL_TOPDIR)/data/ucode + +################################################################################# + +HEADER_INSTALL_DIR := $(AGL_INCDIR)/$(COMPONENT_NAME) +LIB_INSTALL_DIR := $(AGL_LIBDIR) +PROG_INSTALL_DIR := $(AGL_BINDIR) +PIXMAP_INSTALL_DIR := $(AGL_PIXMAPDIR)/$(COMPONENT_NAME) +UCODE_INSTALL_DIR := $(AGL_UCODEDIR) +DATAINITOBJ_INSTALL_DIR := $(AGL_DATAINITOBJDIR) +CONFBIN_INSTALL_DIR := $(AGL_CONFBINDIR) + +################################################################################# + +DEL_OBJS = $(filter %.o,$($(1)_SRCS:%.c=%.o) $($(1)_SRCS:%.cc=%.o) \ + $($(1)_SRCS:%.cpp=%.o) \ + $($(1)_SRCS:%.S=%.o)) +OBJS = $(DEL_OBJS) $($(1)_PCOS) +DEL_SOBJS = $(filter %.os,$($(1)_SRCS:%.c=%.os) $($(1)_SRCS:%.cc=%.os) \ + $($(1)_SRCS:%.cpp=%.os) \ + $($(1)_SRCS:%.S=%.os)) +DEL_GCDA = $(filter %.gcda,$($(1)_SRCS:%.c=%.gcda) $($(1)_SRCS:%.cc=%.gcda) \ + $($(1)_SRCS:%.cpp=%.gcda) \ + $($(1)_SRCS:%.S=%.gcda)) +DEL_GCNO = $(filter %.gcno,$($(1)_SRCS:%.c=%.gcno) $($(1)_SRCS:%.cc=%.gcno) \ + $($(1)_SRCS:%.cpp=%.gcno) \ + $($(1)_SRCS:%.S=%.gcno)) +DEL_GCOV = $(filter %.gcov,$($(1)_SRCS:%.c=%.gcov) $($(1)_SRCS:%.cc=%.gcov) \ + $($(1)_SRCS:%.cpp=%.gcov) \ + $($(1)_SRCS:%.S=%.gcov)) + +DEL_INFO = $(filter %.info, \ + $(dirname $($(1)_SRCS:%.c=%.tmp))lcov.info \ + $(dirname $($(1)_SRCS:%.cc=%.tmp))lcov.info \ + $(dirname $($(1)_SRCS:%.cpp=%.tmp))lcov.info \ + $(dirname $($(1)_SRCS:%.S=%.tmp))lcov.info) + +SOBJS = $(DEL_SOBJS) $($(1)_PCOS) +DEPS = $(join $(dir $(DEL_OBJS)),$(patsubst %.o,.%.d,$(notdir $(DEL_OBJS)))) + +INST_TEST_MOCK_LIBS := +INST_TEST_MOCK_SHLIBS := +INST_ITV2_TESTPROGS := +INST_TESTPROGS := + +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))) +CLEAN_SOBJS := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(call DEL_SOBJS,$(lib))) + +CLEAN_GCDA := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCDA,$(lib))) +CLEAN_GCNO := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCNO,$(lib))) +CLEAN_GCOV := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_PROGS) $(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(call DEL_GCOV,$(lib))) +CLEAN_CFG := $(INST_UT_SMCONF:%=%.cfg) $(INST_IT_SMCONF:%=%.cfg) + +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)))) + +LIB_DEPS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS),$(call DEPS,$(lib))) +PROG_DEPS := $(foreach prog,$(INST_PROGS),$(call DEPS,$(prog))) +TESTPROGS_DEPS := +PROG_RULES := $(foreach prog,$(INST_PROGS),$(if $(prog),.$(prog).out.rule)) +TESTPROG_RULES := + +LIB_RULES := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_TEST_MOCK_LIBS),$(if $($(lib)_SRCS),.$(lib).a.rule)) +SHLIB_RULES := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),.$(lib).so.rule)) +ARLIB_RULES := $(foreach lib,$(INST_LIBS) $(NOINST_LIBS),$(if $($(lib)_SRCS),.$(lib).a.rule)) + +PROG_MAPS := $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).map)) +TESTPROG_MAPS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).map)) +LIB_MAPS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(NOINST_LIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).map)) +PROG_LIBDEPS := $(foreach prog,$(INST_PROGS),$(if $(prog),.$(prog).out.libdep)) +TESTPROG_LIBDEPS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),.$(prog).out.libdep)) + +BUILD_MK_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +include $(BUILD_MK_DIR)/rpc_rule.mk + +IPC_API_RULES := $(IPC_API:%=.%.ipc.rule) +ipc_api := $(shell echo $(IPC_API) | tr A-Z a-z) +CLEAN_IPC_API_SRCS := $(ipc_api:%=%_client.h) $(ipc_api:%=%_client.c) $(ipc_api:%=%_server.h) $(ipc_api:%=%_server.c) +IPC_API_DEPS := $(ipc_api:%=%_client.d) $(ipc_api:%=%_server.d) + +CLEAN_PROGS := $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).out)) +CLEAN_TESTPROGS := $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).out)) + +ifneq ($(AEXT),) +CLEAN_PROGS += $(foreach prog,$(INST_PROGS),$(if $(prog),$(prog).out$(AEXT))) +CLEAN_TESTPROGS += $(foreach prog,$(INST_ITV2_TESTPROGS) $(INST_TESTPROGS),$(if $(prog),$(prog).out$(AEXT))) +endif +CLEAN_LIBS := $(foreach lib,$(INST_LIBS) $(INST_SHLIBS) $(INST_TEST_MOCK_LIBS) $(INST_TEST_MOCK_SHLIBS) $(NOINST_LIBS),$(if $($(lib)_SRCS),$(lib).a)) +CLEAN_SHLIBS := $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).so)) +ifneq ($(AEXT),) +CLEAN_SHLIBS += $(foreach lib,$(INST_SHLIBS) $(INST_TEST_MOCK_SHLIBS),$(if $(lib),$(lib).so$(AEXT))) +endif +ifneq ($(DUMMY_SHLIB),) +CLEAN_SHLIBS += $(DUMMY_SHLIB) +endif + +CLEAN_FILES += $(CLEAN_OBJS) $(CLEAN_SOBJS) +CLEAN_FILES += $(PROG_DEPS) $(LIB_DEPS) $(TESTPROG_DEPS) +CLEAN_FILES += $(PROG_MAPS) $(PROG_LIBDEPS) $(TESTPROG_MAPS) $(TESTPROG_LIBDEPS) +CLEAN_FILES += $(PROG_RULES) $(LIB_RULES) $(SHLIB_RULES) $(AR_RULES) $(TESTPROG_RULES) +CLEAN_FILES += $(CLEAN_PROGS) $(CLEAN_LIBS) $(CLEAN_SHLIBS) $(LIB_MAPS) $(CLEAN_TESTPROGS) +CLEAN_FILES += $(RPC_API_RULES) $(CLEAN_API_SRCS) $(RPC_API_DEPS) +CLEAN_FILES += $(IPC_API_RULES) $(CLEAN_IPC_API_SRCS) $(IPC_API_DEPS) +CLEAN_FILES += $(INST_DATAINITOBJ) +CLEAN_FILES += $(CLEAN_INFO) +CLEAN_FILES += $(CLEAN_GCNO) $(CLEAN_GCDA) $(CLEAN_GCOV) +CLEAN_FILES += $(CLEAN_CFG) +ifneq ($(AEXT),) +CLEAN_FILES += $(foreach lib,$(INST_SHLIBS) $(INST_PROGS),$(if $(lib),$(lib).map$(AEXT))) +endif + + +################################################################################# + +RPATHLINK := $(SYSROOT)/usr/lib:$(SYSROOT)/lib:$(SYSROOT)/usr/agl/lib + +################################################################################# +SUBDIRS := $(filter-out mock,$(SUBDIRS)) + +.PHONY: all all-subdirs install test $(SUBDIRS:%=all-%) $(SUBDIRS:%=install--%) +.PHONY: install-test $(SUBDIRS:%=install-test-%) +.PHONY: build-lib +.PHONY: build-prog $(SUBDIRS:%=build-prog-%) +.PHONY: build-shlib $(SUBDIRS:%=build-shlib-%) +.PHONY: build-arlib $(SUBDIRS:%=build-arlib-%) +.PHONY: build-cfg +.PHONY: install-header $(SUBDIRS:%=install-header-%) +.PHONY: install-lib +.PHONY: install-shlib $(SUBDIRS:%=install-shlib-%) +.PHONY: install-arlib $(SUBDIRS:%=install-arlib-%) +.PHONY: install-prog $(SUBDIRS:%=install-prog-%) +.PHONY: install-data $(SUBDIRS:%=install-data-%) +.PHONY: install-cfg $(SUBDIRS:%=install-cfg-%) +.PHONY: install-preload +.PHONY: clean-all +.PHONY: clean-self +.PHONY: clean-sub $(SUBDIRS:%=clean-%) +.PHONY: clean-all-sub $(SUBDIRS:%=clean-all-%) +.PHONY: clean-self-sub +.PHONY: lint lint-exec + + +REF_ROOT_DIR=/home/ref_root/ +TEST_SERVER_DIR=/home/agl_sysroot/ +REFHW_SERVER=192.168.1.2 + +PHONY: all + +lint: + @set -e;\ + $(MAKE) lint-exec + + +#all: build-lib build-prog build-test-mock-lib build-cfg all-subdirs +all: build-lib build-prog build-cfg all-subdirs + +all-subdirs: + @set -e;\ + for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) all); done + + +#lint-exec: $(INST_HEADERS) $($(INST_SHLIBS)_SRCS) $($(INST_LIBS)_SRCS) $($(INST_PROGS)_SRCS) +# -cpplint.py $^ > cpplint_result.txt 2>&1 + +lint-exec: + $(eval LINTFILES := $(shell find . -name "*.c*" -o -name "*.h*")) + -cpplint.py --extensions=hpp,cpp,c,cc,h $(LINTFILES) > cpplint_result.txt 2>&1 + + +#install: install-header install-lib install-prog install-data install-test-mock-header install-test-mock-lib install-test-casename $(SUBDIRS:%=install--%) +install: install-header install-lib install-prog install-data $(SUBDIRS:%=install--%) + + +build-lib: build-shlib build-arlib + +build-shlib: $(INST_SHLIBS:%=%.so) + +build-arlib: $(INST_LIBS:%=%.a) $(NOINST_LIBS:%=%.a) + +TOPDIR=$(abspath ./) +generate-header-list: install-header-local + echo $(COMPONENT_NAME) > $(addsuffix .list, $(abspath ./)) + ls -1 $(TOPDIR)/tmp_head/usr/agl/include/$(COMPONENT_NAME)/ >> $(addsuffix .list, $(abspath ./)) + rm -rf ./tmp_head + + +build-prog: $(INST_PROGS:%=%.out) + + +install-lib: install-arlib install-shlib + +install-arlib: build-arlib +ifneq ($(strip $(INST_LIBS)),) + install -m 0755 -d $(LIB_INSTALL_DIR) + install -m 0644 $(INST_LIBS).a $(LIB_INSTALL_DIR) +endif + +install-shlib: build-shlib +ifneq ($(strip $(INST_SHLIBS)),) + install -m 0755 -d $(LIB_INSTALL_DIR) + install -m 0644 $(INST_SHLIBS).so $(LIB_INSTALL_DIR) +endif + +install-prog: build-prog +ifneq ($(strip $(INST_PROGS)),) + install -m 0755 -d $(PROG_INSTALL_DIR) + $(foreach prog, $(INST_PROGS), install -m 0755 $(prog).out $(PROG_INSTALL_DIR)/$(prog);) +endif + + +install-header-r: install-header $(SUBDIRS:%=install-header-r-%) + + +install-header-local: + $(MAKE) DESTDIR=`pwd`/tmp_head install-header-r + + +install-header: $(INST_HEADERS:%=install-%) + + +$(INST_HEADERS:%=install-%): install-%: % +ifneq ($(strip $(INST_HEADERS)),) + install -m 0755 -d $(HEADER_INSTALL_DIR) + install -m 0644 $< $(HEADER_INSTALL_DIR) +endif + + +HOST_LAUNCH_XML2CFG = $(SYSROOT)/usr/agl/share/launch_xml2cfg.sh +CONF_H = $(SYSROOT)/usr/agl/include/sm_launch_conf.h + +%.cfg: %.xml + set -e; \ + cpp -P -include $(CONF_H) $< > $<.tmp ; \ + cd $(dir $<.tmp); \ + $(HOST_LAUNCH_XML2CFG) $(notdir $<.tmp) > $@ ; \ + rm -f $<.tmp ; + + +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)/%) + + +clean: $(SUBDIRS:%=clean--%) + rm -f $(CLEAN_FILES) + rm -rf $(CLEAN_DIRS) + +clean-all: $(SUBDIRS:%=clean-all--%) + rm -f $(CLEAN_FILES) $(UNINST_FILES) + rm -rf $(CLEAN_DIRS) + +clean-self: clean + +################################################################################# + +%.o: %.c + $(CC) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCFLAGS) -c -o $@ $< +ifeq ($(SAFLAG),on) + $(SATOOL) $(AGLCPPFLAGS) $(AGLCFLAGS) -c $< +endif + +%.o: %.cc + $(CXX) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $< +ifeq ($(SAFLAG),on) + $(SATOOL) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $< +endif + +%.o: %.cpp + $(CXX) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $< +ifeq ($(SAFLAG),on) + $(SATOOL) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $< +endif + +%.o: %.S + $(CC) -MD -MT $(@:%.o=%.os) -MT $@ -MF $(@D)/.$(@F:%.o=%.d) -MP $(AGLCPPFLAGS) $(AGLASFLAGS) -c -o $@ $< + +%.os: %.c + $(CC) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCFLAGS) -c -o $@ $< +ifeq ($(SAFLAG),on) + $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCFLAGS) -c $< +endif + +%.os: %.cc + $(CXX) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $< +ifeq ($(SAFLAG),on) + $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $< +endif + +%.os: %.cpp + $(CXX) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c -o $@ $< +ifeq ($(SAFLAG),on) + $(SATOOL) $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLCXXFLAGS) -c $< +endif + +%.os: %.S + $(CC) -MD -MT $(@:%.os=%.o) -MT $@ -MF $(@D)/.$(@F:%.os=%.d) -MP $(AGLPICFLAGS) $(AGLCPPFLAGS) $(AGLASFLAGS) -c -o $@ $< + +.%.out.rule: + @echo '$*.out: $$(call OBJS,$*)' > $@ + @echo ' @rm -f $$(@:%=.%.libdep)' >> $@ + @echo ' $$(LINK) $$(AGLLDFLAGS) -Wl,-rpath=$$(RPATH) -Wl,-rpath-link=$$(RPATHLINK),-Map=$$(@:%.out=%.map) $$(call OBJS,$*) $($(*F)_LDLIBS) $$(AGLLDLIBS) -o $$@' >> $@ + @echo ' @awk '\''$$$$1=="LOAD" && $$$$2~/\.a$$$$/{print("$$@:", $$$$2);print($$$$2 ":")}'\'' $$(@:%.out=%.map) > $$(@:%=.%.libdep)' >> $@ + +.%.a.rule: + @echo '$*.a: $$(call OBJS,$*)' > $@ + @echo ' $$(AR) $$(AGLARFLAGS) $$@ $$?' >> $@ + +.%.so.rule: + @echo '$*.so: $$(call SOBJS,$*)' > $@ + @echo ' $$(call INST_DUMMY,$*.so)' >> $@ + @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 $$@' >> $@ + @echo ' $$(call CLEAN_DUMMY)' >> $@ + +.%.ipc.rule: + @echo 'ipc_name:=$(shell echo $* | tr A-Z a-z)' > $@ + @echo '$$(ipc_name)_client.h $$(ipc_name)_client.c $$(ipc_name)_server.h $$(ipc_name)_server.c: $*.api $$(IPC_MKSTUB)' >> $@ + @echo ' $$(IPC_MKSTUB) $$(AGLCPPFLAGS) $$(IPC_MKSTUB_FLAGS) $$<' >> $@ + @echo >> $@ + @echo '$*.api:' >> $@ + @echo >> $@ + +################################################################################ + +# +# If you write a pattern of smbols that the library may export, +# it checks for unmatched symbols at installation time. +# +# (example) +# libfoo_SYMBOL_PATTERN = ^(foo|FOO)_ +# libbar_SYMBOL_PATTERN = ^(bar|Bar) +# + +$(LIB_INSTALL_DIR)/%.so: %.so + $(INSTALL_SHLIB) + $(INSTALL_EXT) + @test -z '$($*_SYMBOL_PATTERN)' || $(NM) -f posix -o $< \ + | awk 'NF>=3 && $$3~/[ABCDGRST]/ && $$2!~/^(_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_edata|_end|__)/ && $$2!~/$($*_SYMBOL_PATTERN)/ \ + {print $$1, "WARNING: A symbol ", $$2, " that does not match the registered pattern $($*_SYMBOL_PATTERN) is included." > "/dev/stderr"}' + +$(LIB_INSTALL_DIR)/%.a: %.a + $(INSTALL_LIB) + @test -z '$($*_SYMBOL_PATTERN)' || $(NM) -f posix -o $< \ + | awk 'NF>=3 && $$3~/[ABCDGRST]/ && $$2!~/$($*_SYMBOL_PATTERN)/ \ + {print $$1, "WARNING: A symbol ", $$2, " that does not match the registered pattern $($*_SYMBOL_PATTERN) is included." > "/dev/stderr"}' +################################################################################# + +ifneq ($(strip $(SUBDIRS)),) +$(SUBDIRS:%=all-%): + @set -e; \ + dir=`pwd`; \ + subdir=$(@:all-%=%); \ + echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \ + $(MAKE) -C $(@:all-%=%) all; \ + echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END=="; + +$(SUBDIRS:%=install--%): + @set -e; \ + dir=`pwd`; \ + subdir=$(@:install--%=%); \ + echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \ + $(MAKE) -C $(@:install--%=%) install; \ + echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END=="; + +$(SUBDIRS:%=install-header-r-%): + @set -e; \ + dir=`pwd`; \ + subdir=$(@:install-header-r-%=%); \ + echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==START==" ; \ + $(MAKE) -C $(@:install-header-r-%=%) install-header-r; \ + echo "leve:$(MAKELEVEL) dir:`basename $$dir` SUBDIR:$$subdir ==END=="; + + +$(SUBDIRS:%=clean--%): + @$(MAKE) -C $(@:clean--%=%) clean + +$(SUBDIRS:%=clean-all--%): + @echo "$@ ==Start==" + @$(MAKE) -C $(@:clean-all--%=%) clean-all + @echo "$@ ==End==" + +endif + + +################################################################################# + +ifeq ($(MAKECMDGOALS),all) +-include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),) +-include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),install) +-include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif +ifeq ($(MAKECMDGOALS),install-test) +-include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif +ifeq ($(MAKECMDGOALS),install-test-exec) +-include $(PROG_RULES) $(TESTPROG_RULES) $(PROG_DEPS) $(TESTPROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),test) +-include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),run-ct-local) +-include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),run-itv2-local) +-include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),run-ut-local) +-include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + +ifeq ($(MAKECMDGOALS),run-it-local) +-include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + + + +ifeq ($(MAKECMDGOALS),test-exec) +-include $(TESTPROG_RULES) $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) $(ARLIB_RULES) +endif + + +ifeq ($(MAKECMDGOALS),build-prog) +-include $(PROG_RULES) $(PROG_DEPS) $(PROG_LIBDEPS) +endif + +ifeq ($(MAKECMDGOALS),build-testdriver) +-include $(PROG_RULES) $(TESTPROG_RULES) $(TESTPROG_DEPS) $(TESTPROG_LIBDEPS) +endif + +ifeq ($(MAKECMDGOALS),build-lib) +-include $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) +endif + +ifeq ($(MAKECMDGOALS),build-arlib) +-include $(SHLIB_RULES) $(LIB_RULES) $(LIB_DEPS) +endif + +ifeq ($(MAKECMDGOALS),build-shlib) +-include $(SHLIB_RULES) $(LIB_DEPS) +endif + +ifeq ($(MAKECMDGOALS),build-arlib) +-include $(ARLIB_RULES) $(LIB_DEPS) +endif + +ifeq ($(strip $(filter clean%,$(MAKECMDGOALS))),) +ifneq ($(IPC_API_RULES),) +-include $(IPC_API_RULES) $(IPC_API_DEPS) +endif +endif + -- cgit 1.2.3-korg