📄 makefile
字号:
## Include paths for BSP files are written into the public.mk file and must# be added to the existing list of pre-processor flags. In addition, "hooks"# for standard flags left intentionally empty (CFLAGS, CPPFLAGS, ASFLAGS,# and CXXFLAGS) are provided for conveniently adding to the relevant flags# on the command-line or via script that calls make.#------------------------------------------------------------------------------# Assemble final list of compiler flags from generated contentBSP_CFLAGS += \ $(BSP_CFLAGS_DEFINED_SYMBOLS) \ $(BSP_CFLAGS_UNDEFINED_SYMBOLS) \ $(BSP_CFLAGS_OPTIMIZATION) \ $(BSP_CFLAGS_DEBUG) \ $(BSP_CFLAGS_WARNINGS) \ $(BSP_CFLAGS_USER_FLAGS) \ $(ALT_CFLAGS) \ $(CFLAGS) # Make ready the final list of include directories and other C pre-processor# flags. Each include path is made ready by prefixing it with "-I".BSP_CPPFLAGS += \ $(addprefix -I, $(BSP_INC_DIRS)) \ $(addprefix -I, $(ALT_INCLUDE_DIRS)) \ $(ALT_CPPFLAGS) \ $(CPPFLAGS)# Finish off assembler flags with any user-provided flagsBSP_ASFLAGS += $(ASFLAGS)# Finish off C++ flags with any user-provided flagsBSP_CXXFLAGS += $(CXXFLAGS)# Generated BSP sourcesGENERATED_C_LIB_SRCS += \ alt_sys_init.c# And finally, the ordered listC_SRCS += $(GENERATED_C_LIB_SRCS) \ $(COMPONENT_C_LIB_SRCS)ASM_SRCS += $(GENERATED_ASM_LIB_SRCS) \ $(COMPONENT_ASM_LIB_SRCS)#------------------------------------------------------------------------------# LIST OF GENERATED FILES## A Nios II HAL BSP relies on the generation of several source files used# by both the BSP and any applications referencing the BSP.#------------------------------------------------------------------------------GENERATED_C_FILES := $(ABS_BSP_ROOT)/alt_sys_init.cGENERATED_H_FILES := $(ABS_BSP_ROOT)/system.hGENERATED_LINKER_SCRIPT := $(ABS_BSP_ROOT)/linker.xGENERATED_FILES += $(GENERATED_C_FILES) \ $(GENERATED_H_FILES) \ $(GENERATED_LINKER_SCRIPT)#------------------------------------------------------------------------------# SETUP TO BUILD OBJECTS## List of object files which are to be built. This is constructed from the input# list of C source files (C_SRCS), C++ source files (CXX_SRCS), and assembler# source file (ASM_SRCS). The permitted file extensions are:## .c - for C files# .cxx .cc .cpp - for C++ files# .S .s - for assembler files## Extended description: The list of objects is a sorted list (duplicates# removed) of all possible objects, placed beneath the ./obj directory,# including any path information stored in the "*_SRCS" variable. The# "patsubst" commands are used to concatenate together multiple file suffix# types for common files (i.e. c++ as .cxx, .cc, .cpp)#------------------------------------------------------------------------------OBJS = $(sort $(addprefix $(OBJ_DIR)/, $(C_SRCS:.c=.o) \ $(patsubst %.cxx, %.o, $(patsubst %.cc, %.o, \ $(patsubst %.cpp, %.o, $(CXX_SRCS)))) \ $(patsubst %.S, %.o, $(patsubst %.s, %.o, $(ASM_SRCS)))))# List of dependancy files for each object file.DEPS = $(OBJS:.o=.d)# Create list of BSP object directories.OBJ_DIRS := $(sort $(dir $(OBJS)))#------------------------------------------------------------------------------# BUILD RULES: ALL & CLEAN#------------------------------------------------------------------------------.DELETE_ON_ERROR:.PHONY: allall: build_pre_processall: Makefile $(OBJ_DIRS) $(GENERATED_FILES) $(BSP_LIB) $(NEWLIB_DIR)all: build_post_process# clean: remove .o/.a/.d.PHONY: cleanclean: $(RM) -r *.a $(OBJ_DIR) find . -name '*.o' | xargs $(RM)ifeq ($(MAKECMDGOALS),clean) find . -name '*.d' | xargs $(RM)endif $(RM) -rf $(NEWLIB_DIR)#------------------------------------------------------------------------------# BUILD PRE/POST PROCESS#------------------------------------------------------------------------------build_pre_process : $(BUILD_PRE_PROCESS)build_post_process : $(BUILD_POST_PROCESS).PHONY: build_pre_process build_post_process#------------------------------------------------------------------------------# OBJECT DIRECTORIES#------------------------------------------------------------------------------$(OBJ_DIRS) : @mkdir -p $@#------------------------------------------------------------------------------# MAKEFILE UP TO DATE?## Is this very Makefile up to date? Someone may have changed the BSP settings# file or the associated target hardware.#------------------------------------------------------------------------------ifneq ($(wildcard $(SETTINGS_FILE)),$(SETTINGS_FILE))$(warning Warning: BSP Settings File $(SETTINGS_FILE) could not be found.)endifMakefile: $(wildcard $(SETTINGS_FILE)) @echo This Makefile is not up to date. @echo @echo This means that the $(SETTINGS_FILE) file has been modified since @echo this Makefile\'s generation. @echo @echo Please re-generate this BSP to refresh this Makefile, and then @echo attempt to build again. @exit 1 public.mk: $(wildcard $(SOPC_FILE)) @echo $(SOPC_FILE) file and Makefile are not up to date. @echo @echo This means that $(SOPC_FILE) has been modified since @echo this BSP\'s last generate. @echo @echo Please re-generate this BSP to refresh this Makefile, and then @echo attempt to build again. However, depending on how $(SOPC_FILE) was modified @echo you may need to create a new BSP. @exit 1#------------------------------------------------------------------------------# PATTERN RULES TO BUILD OBJECTS#------------------------------------------------------------------------------$(OBJ_DIR)/%.o: %.c @echo Compiling $(notdir $<)... @mkdir -p $(dir $@) $(CC_PRE_PROCESS) $(CC) -MD -c $(BSP_CPPFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CC_POST_PROCESS)$(OBJ_DIR)/%.o: %.cpp @echo Compiling $(notdir $<)... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_POST_PROCESS)$(OBJ_DIR)/%.o: %.cc @echo Compiling $(notdir $<)... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_POST_PROCESS)$(OBJ_DIR)/%.o: %.cxx @echo Compiling $(notdir $<)... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_POST_PROCESS)$(OBJ_DIR)/%.o: %.S @echo Compiling $(notdir $<)... @mkdir -p $(dir $@) $(AS_PRE_PROCESS) $(AS) -MD -c $(BSP_CFLAGS) $(BSP_CPPFLAGS) $(BSP_ASFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(AS_POST_PROCESS)$(OBJ_DIR)/%.o: %.s @echo Compiling $(notdir $<)... @mkdir -p $(dir $@) $(AS_PRE_PROCESS) $(AS) -MD -c $(BSP_ASFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(AS_POST_PROCESS)# Pattern rules for making useful intermediate files$(OBJ_DIR)/%.s: %.c @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CC_PRE_PROCESS) $(CC) -MD -c $(BSP_CPPFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CC_POST_PROCESS)$(OBJ_DIR)/%.s: %.cpp @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_PRE_PROCESS)$(OBJ_DIR)/%.s: %.cc @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_PRE_PROCESS)$(OBJ_DIR)/%.s: %.cxx @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_PRE_PROCESS)$(OBJ_DIR)/%.i: %.c @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CC_PRE_PROCESS) $(CC) -E $(CPPFLAGS) $(ALT_CFLAGS) $(CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CC_PRE_PROCESS)$(OBJ_DIR)/%.i: %.cpp @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_PRE_PROCESS)$(OBJ_DIR)/%.i: %.cc @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_PRE_PROCESS)$(OBJ_DIR)/%.i: %.cxx @echo Compiling $(notdir $<) to assembler... @mkdir -p $(dir $@) $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_PRE_PROCESS)# Pattern rules for building other object files.%.o: %.c @echo Compiling $(notdir $<)... $(CC_PRE_PROCESS) $(CC) -MD -c $(CPPFLAGS) $(ALT_CFLAGS) $(CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CC_POST_PROCESS)%.o: %.cpp @echo Compiling $(notdir $<)... $(CXX_POST_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_POST_PROCESS)%.o: %.cc @echo Compiling $(notdir $<)... $(CXX_POST_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_POST_PROCESS)%.o: %.cxx @echo Compiling $(notdir $<)... $(CXX_PRE_PROCESS) $(CXX) -MD -c $(BSP_CPPFLAGS) $(BSP_CXXFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(CXX_POST_PROCESS)%.o: %.S @echo Compiling $(notdir $<)... $(AS_PRE_PROCESS) $(AS) -MD -c $(BSP_CFLAGS) $(BSP_CPPFLAGS) $(BSP_ASFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(AS_POST_PROCESS)%.o: %.s @echo Compiling $(notdir $<)... $(AS_PRE_PROCESS) $(AS) -MD -c $(BSP_ASFLAGS) $(BSP_CFLAGS) -o $@ $(join $(ABS_BSP_ROOT)/,$<) $(AS_POST_PROCESS)#------------------------------------------------------------------------------# NEWLIB RULES#------------------------------------------------------------------------------$(NEWLIB_DIR): @echo Creating $(NEWLIB_DIR)... nios2-newlib-gen --no-multilib $(NEWLIB_DIR)-build-tmp $(NEWLIB_DIR) --custom "$(NEWLIB_FLAGS)" @echo Removing $(NEWLIB_DIR)-build-tmp... @$(RM) -rf $(NEWLIB_DIR)-build-tmp#------------------------------------------------------------------------------# LIBRARY RULES#------------------------------------------------------------------------------$(BSP_LIB): $(OBJS) @echo Creating $@... $(AR_PRE_PROCESS) $(RM) -f $@ $(AR) $(BSP_ARFLAGS) $@ $^ $(AR_POST_PROCESS)#------------------------------------------------------------------------------# DEPENDENCY FILES#------------------------------------------------------------------------------ifneq ($(findstring clean, $(MAKECMDGOALS)),clean)ifneq ($(MAKECMDGOALS),distclean)ifneq ($(MAKECMDGOALS),rebuild)-include $(DEPS)endifendifendif# End of Makefile
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -