# # Trampoline OS # # Trampoline is copyright (c) IRCCyN 2005+ # Trampoline is protected by the French intellectual property law. # # This software is distributed under the Lesser GNU Public Licence # # Warning: This Makefile SHOULD not be called directly. # It is automatically called from the Makefile # generated by goil. ############################################################################# # Build paths ############################################################################# OBJ_DIR = $(BUILD_DIR) EXTRA_FILES_MRPROPER += $(BUILD_DIR)/ ############################################################################# # Trampoline Path definition ############################################################################# OS_PATH = $(TPL_BASE_PATH)/os COM_PATH = $(TPL_BASE_PATH)/com IOC_PATH = $(TPL_BASE_PATH)/ioc AUTOSAR_PATH = $(TPL_BASE_PATH)/autosar DEBUG_PATH = $(TPL_BASE_PATH)/debug MACHINE_PATH = $(TPL_BASE_PATH)/machines ifdef ARCH ARCH_PATH = $(MACHINE_PATH)/$(strip $(ARCH)) ifdef CHIP CHIP_PATH = $(ARCH_PATH)/$(strip $(CHIP)) ifdef BOARD BOARD_PATH = $(CHIP_PATH)/$(strip $(BOARD)) endif endif endif ############################################################################# # Add Trampoline source files. ############################################################################# ifeq ($(strip $(WITH_USEDEBUG)),true) include $(DEBUG_PATH)/Makefile endif #include $(OS_PATH)/Makefile #ifeq ($(strip $(AUTOSAR)),true) # include $(AUTOSAR_PATH)/Makefile #endif #ifeq ($(strip $(WITH_USECOM)),true) #include $(COM_PATH)/Makefile #endif #ifeq ($(strip $(WITH_IOC)), true) #include $(IOC_PATH)/Makefile #endif ifdef MACHINE_INCLUDE_PATH -include $(MACHINE_INCLUDE_MAKEFILE) override CFLAGS += $(MACHINE_INCLUDE_PATH) override CPPFLAGS += $(MACHINE_INCLUDE_PATH) TEMP_SOURCE_DIRS += $(MACHINE_ALL_PATHS) endif #ifdef ARCH_PATH #-include $(ARCH_PATH)/Makefile #override CFLAGS += -I$(ARCH_PATH) #override CPPFLAGS += -I$(ARCH_PATH) #TEMP_SOURCE_DIRS += $(ARCH_PATH) #endif # #ifdef CHIP_PATH #-include $(CHIP_PATH)/Makefile #override CFLAGS += -I$(CHIP_PATH) #override CPPFLAGS += -I$(CHIP_PATH) #TEMP_SOURCE_DIRS += $(CHIP_PATH) #endif #ifdef BOARD_PATH #-include $(BOARD_PATH)/Makefile #override CFLAGS += -I$(BOARD_PATH) #override CPPFLAGS += -I$(BOARD_PATH) #TEMP_SOURCE_DIRS += $(BOARD_PATH) #endif #add trampoline paths in the include path. override CPPFLAGS += -I$(OIL_OUTPUT_PATH) override CPPFLAGS += -I$(OS_PATH) -I$(COM_PATH) -I$(IOC_PATH) -I$(DEBUG_PATH) override CFLAGS += -I$(OIL_OUTPUT_PATH) override CFLAGS += -I$(OS_PATH) -I$(COM_PATH) -I$(IOC_PATH) -I$(DEBUG_PATH) ############################################################################# # Autosar specific Configuration ############################################################################# ifeq ($(strip $(AUTOSAR)),true) AUTOSAR_DEP = AUTOSAR override CFLAGS += -I$(AUTOSAR_PATH) override CPPFLAGS += -I$(AUTOSAR_PATH) AUTOSAR_MAKE_FLAG = AUTOSAR=true else AUTOSAR_DEP = AUTOSAR_MAKE_FLAG = endif ############################################################################# # Goil related variables. ############################################################################# OIL_OUTPUT_PATH = $(basename $(OIL_FILE)) OIL_GENERATED_FILES += tpl_app_config.c OIL_OUTPUTS = $(addprefix $(OIL_OUTPUT_PATH)/,$(OIL_GENERATED_FILES)) FIRST_OIL_OUTPUT = $(firstword $(OIL_OUTPUTS)) OTHER_OIL_OUTPUTS = $(filter-out $(FIRST_OIL_OUTPUT), $(OIL_OUTPUTS)) SOURCES += $(OIL_GENERATED_FILES) ifdef GOIL_TEMPLATE_PATH GOIL_TEMPLATE_STR = --templates=$(GOIL_TEMPLATE_PATH) else #use the default template directory. GOIL_TEMPLATE_STR = endif ############################################################################# # objects and dependancy files. ############################################################################# NODIR_SRC = $(notdir $(SOURCES)) OBJ := $(NODIR_SRC:%=$(OBJ_DIR)/%.o) ############################################################################# # End of configuration: # Build rules. ############################################################################# .PHONY: ALL ALL: $(EXEC) #generate dependancy only works for gcc/llvm.. genDep= ifndef NODEP genDep=-MD -MF $(OBJ_DIR)/$(notdir $<).dep endif # generate compilation and dependancy rules for these # paths, by including recursively the compiler_rules # makefile. TEMP_SOURCE_DIRS += $(OS_PATH) $(COM_PATH) $(IOC_PATH) $(AUTOSAR_PATH) $(EXTRA_PATH) TEMP_SOURCE_DIRS += $(DEBUG_PATH) $(OIL_OUTPUT_PATH) TEMP_SOURCE_DIRS += $(dir $(SOURCES)) include $(OS_MAKE_PATH)/compiler_rules.mk #if CPP is not defined.. #ifndef CPP CPP = $(CC) #endif # exe rule -> Link $(EXEC): $(OBJ) @echo linking $@ $(LD) -o $(EXEC) $(OBJ) $(LDFLAGS) #clean #.PHONY: clean clean: @rm -rf $(OBJ) *~ $(EXTRA_FILES_CLEAN) @rm -rf $(EXEC) $(DEPFILES) $(BUILD_DIR) $(OIL_OUTPUT_PATH) # generate C file from OIL file, using goil. $(OTHER_OIL_OUTPUTS): $(FIRST_OIL_OUTPUT) $(FIRST_OIL_OUTPUT): $(OIL_FILE) @echo compiling goil file $(OIL_FILE) $(GOIL_COMPILER) --target=$(TARGET) $(GOIL_TEMPLATE_STR) $(GENITVEC) $(OIL_FILE) #documentation doc: doc-dev doc-user doc-dev: $(DOXYGEN) $(TPL_BASE_PATH)/Doxyfile-dev doc-user: $(DOXYGEN) $(TPL_BASE_PATH)/Doxyfile-user #dependancies. $(foreach source,$(SOURCES),$(eval -include $(OBJ_DIR)/${source}.dep)) debug: echo $(OIL_OUTPUTS)