########################################################################## # Common makefile -- shared between Package.make and Project.make # ########################################################################## # Check for whether the project is defined and whether it has # any files or directories ifeq (,$(XN_PROJECT)) error: noXnProject else PROJECT_ROOT = $(XN_PROJECT) PROJECT_FILES=$(wildcard $(XN_PROJECT)/*) ifeq (,$(PROJECT_FILES)) error: noXnProject endif endif ########################################################################## # Check for the target architecture. The default TARGET is ECOS ifeq (,$(TARGET)) TARGET=ECOS endif ########################################################################## # Set up common variables pointing to the various subdirs # SRC_ROOT = $(PROJECT_ROOT)/src TEST_SRC_ROOT = $(PROJECT_ROOT)/test STUB_SRC_ROOT = $(PROJECT_ROOT)/stubs OBJ_ROOT = $(PROJECT_ROOT)/obj/$(TARGET) TEST_OBJ_ROOT = $(PROJECT_ROOT)/obj.t/$(TARGET) STUB_OBJ_ROOT = $(PROJECT_ROOT)/obj.s/$(TARGET) DOC_DIR = $(PROJECT_ROOT)/doc API_DIR = $(PROJECT_ROOT)/api MAKE_DIR = $(PROJECT_ROOT)/make BIN_DIR = $(PROJECT_ROOT)/bin/$(TARGET) EXT_DIR = $(PROJECT_ROOT)/ext LIB_DIR = $(PROJECT_ROOT)/lib/$(TARGET) ########################################################################## # define the libaries needed for linking # PROJECT_LIB = $(LIB_DIR)/$(notdir $(PROJECT_ROOT)).a LIB_PACKAGE_LIST := $(subst .,/,$(LIB_PACKAGES)) IMAGE_PACKAGE_LIST := $(subst .,/,$(IMAGE_PACKAGES)) PACKAGE_LIST := $(LIB_PACKAGES) $(IMAGE_PACKAGES) PACKAGE_LIBS := $(patsubst %,$(LIB_DIR)/%.a,$(subst /,.,$(LIB_PACKAGE_LIST))) ifeq (,$(EXCLUDE_EXT_LIBS)) EXT_LIBS := $(patsubst %,$(EXT_DIR)/%/lib/$(TARGET)/*,$(EXT_VENDORS)) EXT_LIBS := $(wildcard $(EXT_LIBS)) EXT_INCS := $(patsubst %,$(EXT_DIR)/%/inc,$(EXT_VENDORS)) EXT_INCS := $(patsubst %,-I%,$(EXT_INCS)) endif ########################################################################## # # Tools and their options. # ifeq (,$(USE_SHORT_CALL)) USE_SHORT_CALL := 0 endif # Define target dependent tool macros based on the TARGET variable. # ifeq ($(TARGET),VXPPC) include $(MAKE_DIR)/tooldefs.ppc endif ifeq ($(TARGET),VXSIM) include $(MAKE_DIR)/tooldefs.sim endif ifeq ($(TARGET),WINDOWS) include $(MAKE_DIR)/tooldefs.win endif ifeq ($(TARGET),ECOS) include $(MAKE_DIR)/tooldefs.ecos endif # architecture independent tools definitions # DOCTOOL=/doxygen/bin/doxygen DOCFLAGS = -A -H -b -f -g -j -M -w -W -d $(DOC_DIR) # misc shell commands # DELETE = rm -f MKDIR = mkdir -p COPY = cp PRINT = @echo RM = rm -f MV = mv # architecture independent tools options # TBD -- THESE NEED TO BE CHECKED IF WE START USING THE DIAB COMPILER!! # (THEY PROBABLY SHOULD BE VARIABLES, NOT HARD-CODED) # # uncomment this if you want to keep the compiler intermediate files # SAVE_TEMPS = --save-temps ifeq ($(TARGET),VXPPC) TRACE_LEVEL = 5 else TRACE_LEVEL = 9 endif CONSOLE_TRACE_LEVEL = 3 DEBUG = -g # SAVE_TEMPS = -Wp,-MD,$(@:.o=.tmp) TRACE_OPTS = -DKERNEL -DGLBTRACELEVEL=$(TRACE_LEVEL) -DTRACE_RUNTIME_LEVEL=$(TRACE_LEVEL) -DTRACE_CONSOLE_LEVEL=$(CONSOLE_TRACE_LEVEL) CODE_OPTS := -Wall #-Wnon-virtual-dtor -Wold-style-cast CODE_OPTS := $(CODE_OPTS) -fexceptions $(SAVE_TEMPS) $(DEBUG) -D_REENTRANT #-frtti PROJECT_OPTS := $(CODE_OPTS) $(TRACE_OPTS) # Include all search paths PROJECT_INCS := -I$(SRC_ROOT) $(EXT_INCS) LDFLAGS += ########################################################################## # common rules # # target 'all' must be defined in a makefile that includes this one. # See Package.make and Project.make default: all # project variable error case noXnProject: $(PRINT) ERROR: You must define a valid XN_PROJECT environment variable # Debugging rule for dumping out important makefile variables PHONY : dumpCommon dumpCommon : $(PRINT) PWD: $(PWD) $(PRINT) SRC: $(SRC) $(PRINT) TEST: $(TEST) $(PRINT) TARGET : $(TARGET) $(PRINT) OBJ_ROOT: $(OBJ_ROOT) $(PRINT) LIB_DIR: $(LIB_DIR) $(PRINT) LIB_DIR_SRC: $(LIB_DIR_SRC) $(PRINT) LIB_DIR_TEST: $(LIB_DIR_TEST) $(PRINT) PROJECT_LIB: $(PROJECT_LIB) $(PRINT) PACKAGES: $(PACKAGES) $(PRINT) PACKAGE_LIST: $(PACKAGE_LIST) $(PRINT) PACKAGE_LIBS: $(PACKAGE_LIBS) $(PRINT) EXT_LIBS: $(EXT_LIBS) $(PRINT) EXT_INCS: $(EXT_INCS) $(PRINT) -------- ##########################################################################