X-Git-Url: http://rtime.felk.cvut.cz/gitweb/omk.git/blobdiff_plain/eb997068fbc9af2c4fcd0a2e5ea73e211e345de5..7b398af59d53a891b64621027ae0e820e3e7321c:/snippets/rtems diff --git a/snippets/rtems b/snippets/rtems index 520b42d..2ab968b 100644 --- a/snippets/rtems +++ b/snippets/rtems @@ -8,10 +8,36 @@ # renamed_include_HEADERS .. public headers copied to the different target name # bin_PROGRAMS .. list of the require binary programs # utils_PROGRAMS .. list of the development utility programs +# test_PROGRAMS .. list of the test programs # xxx_SOURCES .. list of specific target sources +# xxx_LIBS .. list of specific target libraries # INCLUDES .. additional include directories and defines for user-space # tar_EMBEDFILES .. list of tars with embedded files +ifdef OMK_TESTSROOT +ifeq ($(RTEMS_MAKEFILE_PATH),) +$(error $(shell $(call canttest,RTEMS_MAKEFILE_PATH not defined))) +endif +endif + +include $(RTEMS_MAKEFILE_PATH)/Makefile.inc +include $(RTEMS_CUSTOM) +include $(CONFIG.CC) + +BUILD_DIR_NAME = _build/$(RTEMS_BSP) +COMPILED_DIR_NAME = _compiled/$(RTEMS_BSP) +GROUP_DIR_NAME = + + +USER_INCLUDE_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/include +USER_LIB_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/lib +USER_UTILS_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-utils +USER_TESTS_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-tests +USER_BIN_DIR := $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin +USER_BUILD_DIR := $(MAKERULES_DIR)/$(BUILD_DIR_NAME)/user + +LOCAL_BUILD_DIR = $(USER_OBJS_DIR) + DEFAULT_INCLUDES = -I $(PROJECT_INCLUDE) @@ -45,18 +71,18 @@ override RELATIVE_DIR := $(RELATIVE_DIR:\\%=%) #vpath %.cc $(SOURCES_DIR) #vpath %.cxx $(SOURCES_DIR) -VPATH = $(SOURCES_DIR) -srcdir = $(SOURCES_DIR) - USER_OBJS_DIR = $(USER_BUILD_DIR)/$(RELATIVE_DIR) +.PHONY: check-dir + # Some support to serialize some targets for parallel make ifneq ($(OMK_SERIALIZE_INCLUDED),y) -include-pass: $(check-dir) +include-pass: check-dir library-pass: include-pass -binary-pass utils-pass: library-pass +binary-pass: library-pass -OMK_SERIALIZE_INCLUDED = y +override OMK_SERIALIZE_INCLUDED = y +MAKEOVERRIDES := $(filter-out OMK_SERIALIZE_INCLUDED=n,$(MAKEOVERRIDES)) endif #===================================================================== @@ -69,8 +95,8 @@ define TARFILE_template $(2): $(Q) ABSOLUTETARFILE=`cd $$(dir $$@) ; pwd`/$$@ ; \ - ( test -e $$$$ABSOLUTETARFILE && ( cd $(3) && tar -df $$$$ABSOLUTETARFILE ) ) || \ - ( cd $(3) && tar -cf $$$$ABSOLUTETARFILE . ) + ( test -e $$$$ABSOLUTETARFILE && ( cd $(3) && tar $$(TARFLAGS) -df $$$$ABSOLUTETARFILE ) ) || \ + ( cd $(3) && tar $$(TARFLAGS) -cf $$$$ABSOLUTETARFILE . ) $(2).o: $(2) @$(QUIET_CMD_ECHO) " TARFILE $$@" @@ -110,7 +136,7 @@ endif # Syntax: $(call COMPILE_c_o_template,,,) define COMPILE_c_o_template -$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS) +$(2): $(1) $$(GEN_HEADERS) @$(QUIET_CMD_ECHO) " CC $$@" $(Q) if $$(c_o_COMPILE) $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \ then mv -f "$$@.d.tmp" "$$@.d" ; \ @@ -121,7 +147,7 @@ endef # Syntax: $(call COMPILE_cc_o_template,,,) define COMPILE_cc_o_template -$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS) +$(2): $(1) $$(GEN_HEADERS) @$(QUIET_CMD_ECHO) " CXX $$@" $(Q) if $$(cc_o_COMPILE) $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \ then mv -f "$$@.d.tmp" "$$@.d" ; \ @@ -132,7 +158,7 @@ endef # Syntax: $(call COMPILE_S_o_template,,,) define COMPILE_S_o_template -$(2): $(1) $(LOCAL_CONFIG_H) $$(GEN_HEADERS) +$(2): $(1) $$(GEN_HEADERS) @$(QUIET_CMD_ECHO) " AS $$@" $(Q) if $$(S_o_COMPILE) -D__ASSEMBLY__ $$(CC_DEPFLAGS) $(3) -o $$@ -c $$< ; \ then if [ -e "$$@.d.tmp" ] ; then mv -f "$$@.d.tmp" "$$@.d" ; fi ; \ @@ -178,7 +204,7 @@ $(2)/$(1): $$($(1)_OBJS) $(Q) $$(shell if [ -z "$$(filter %.cc,$$($(1)_SOURCES))" ] ; \ then echo $$(CC) $$(CPPFLAGS) $$(AM_CPPFLAGS) $$(AM_CFLAGS) $$(CFLAGS) ; \ else echo $$(CXX) $$(CPPFLAGS) $$(AM_CPPFLAGS) $$(AM_CXXFLAGS) $$(CXXFLAGS) ; fi) \ - $$(AM_LDFLAGS) $$(LDFLAGS) $$($(1)_OBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map \ + $$(AM_LDFLAGS) $$(LDFLAGS) $$($(1)_OBJS) $$(LOADLIBES) $$($(1)_LIBS:%=-l%) \ -o $(2)/$(1) #@echo "$(2)/$(1): \\" >$(USER_OBJS_DIR)/$(1).exe.d #@sed -n -e 's/^LOAD \(.*\)$$$$/ \1 \\/p' $(USER_OBJS_DIR)/$(1).exe.map >>$(USER_OBJS_DIR)/$(1).exe.d @@ -233,9 +259,7 @@ endef library-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \ $(lib_LIBRARIES:%=$(USER_LIB_DIR)/lib%.a) $(shared_LIBRARIES:%=$(USER_LIB_DIR)/lib%.so) -binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%) - -utils-pass-local: $(utils_PROGRAMS:%=$(USER_UTILS_DIR)/%) +binary-pass-local: $(bin_PROGRAMS:%=$(USER_BIN_DIR)/%) $(utils_PROGRAMS:%=$(USER_UTILS_DIR)/% $(test_PROGRAMS:%=$(USER_TESTS_DIR)/%) # Special rules for CMETRIC generated headers @@ -252,6 +276,8 @@ GEN_HEADERS+=$(cmetric_include_HEADERS:%=$(USER_INCLUDE_DIR)/%) $(foreach prog,$(utils_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_UTILS_DIR)))) +$(foreach prog,$(test_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_TESTS_DIR)))) + $(foreach prog,$(bin_PROGRAMS),$(eval $(call PROGRAM_template,$(prog),$(USER_BIN_DIR)))) $(foreach lib,$(lib_LIBRARIES),$(eval $(call LIBRARY_template,$(lib)))) @@ -265,29 +291,20 @@ endif #===================================================================== -$(eval $(call omk_pass_template, include-pass,$(USER_OBJS_DIR),,-n "$(include_HEADERS)$(nobase_include_HEADERS)$(renamed_include_HEADERS)$(config_include_HEADERS)")) -$(eval $(call omk_pass_template, library-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,-n "$(lib_LIBRARIES)$(shared_LIBRARIES)")) -$(eval $(call omk_pass_template, utils-pass, $(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,-n "$(utils_PROGRAMS)")) -$(eval $(call omk_pass_template, binary-pass, $(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,-n "$(bin_PROGRAMS)")) +$(eval $(call omk_pass_template, include-pass,$(USER_OBJS_DIR),,$(include_HEADERS)$(nobase_include_HEADERS)$(renamed_include_HEADERS)$(config_include_HEADERS)$(LOCAL_CONFIG_H))) +$(eval $(call omk_pass_template, library-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(lib_LIBRARIES)$(shared_LIBRARIES))) +$(eval $(call omk_pass_template, binary-pass, $(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(bin_PROGRAMS)$(utils_PROGRAMS)$(test_PROGRAMS))) -$(eval $(call omk_pass_template,clean,$(USER_OBJS_DIR))) +$(eval $(call omk_pass_template,clean,$(USER_OBJS_DIR),,always)) -check-dir: +check-dir:: @$(call mkdir_def,$(USER_INCLUDE_DIR)) @$(call mkdir_def,$(USER_LIB_DIR)) @$(call mkdir_def,$(USER_BIN_DIR)) @$(call mkdir_def,$(USER_UTILS_DIR)) + @$(call mkdir_def,$(USER_TESTS_DIR)) -# Create directories only for the first time -ifndef CHECK_DIR_DONE -check-dir = check-dir -CHECK_DIR_DONE = y -endif -export CHECK_DIR_DONE - - -include-pass-local: - $(call include-pass-template,$(USER_INCLUDE_DIR),include) +$(eval $(call include-pass-template,$(USER_INCLUDE_DIR),include)) ifdef USER_RULE_TEMPLATES @@ -333,7 +350,7 @@ clean-local: $(tar_EMBEDFILES:%=$(USER_OBJS_DIR)/%_tarfile) -default: $(check-dir) include-pass library-pass binary-pass utils-pass +default: include-pass library-pass binary-pass # Local Variables: # mode:makefile