ifeq ($(origin MORPHEO_TOPLEVEL), undefined) $(error "variable MORPHEO_TOPLEVEL is undefined"); else include $(MORPHEO_TOPLEVEL)/Makefile.tools include $(MORPHEO_TOPLEVEL)/Makefile.flags endif #-----[ Directory ]---------------------------------------- ENTITY ?= Environment DIR_TMP = $(MORPHEO_TMP)/$(ENTITY) DIR_TST = ./selftest DIR_INC = ./include DIR_SRC = ./src DIR_OBJ = ./obj DIR_BIN = $(DIR_TMP)/bin #-----[ Compilation ]-------------------------------------- INCDIR = $(SYSTEMC_INCDIR_$(SIMULATOR)) \ -I$(DIR_INC) \ -I../processor/Morpheo LIBDIR = $(SYSTEMC_LIBDIR_$(SIMULATOR)) LIBNAME = -lbfd \ -liberty \ $(SYSTEMC_LIBNAME_$(SIMULATOR)) FLAGS = $(SYSTEMC_CFLAGS_$(SIMULATOR)) MORPHEO_CC_FLAGS = $(MORPHEO_FLAGS) $(CC_FLAGS) $(INCDIR) MORPHEO_CXX_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(INCDIR) MORPHEO_L_FLAGS = $(MORPHEO_FLAGS) $(CXX_FLAGS) $(FLAGS) $(LIBDIR) #-----[ Variable ]----------------------------------------- OBJECTS = $(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.cpp)) \ $(patsubst $(DIR_SRC)/%.c,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.c)) OBJECTS_BIN = $(patsubst $(DIR_TST)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_TST)/*.cpp)) HEADERS = $(wildcard $(DIR_INC)/*.h) EXE = $(DIR_BIN)/soft.x EXEC_PREFIX = #$(VALGRIND) #-----[ Rules ]-------------------------------------------- vpath %.h $(DIR_INC) vpath %.c $(DIR_SRC) vpath %.cpp $(DIR_SRC):$(DIR_TST) vpath %.o $(DIR_OBJ) .PRECIOUS : $(DIR_OBJ)/%.o $(DIR_BIN)/%.x test_env : @\ $(ECHO) "-------------------| $(ENTITY)" $(DIR_OBJ)/%.o : %.cpp $(HEADERS) @\ $(ECHO) "Compilation : $*";\ $(CXX) $(MORPHEO_CXX_FLAGS) -c -o $@ $<; $(DIR_OBJ)/%.o : %.c $(HEADERS) @\ $(ECHO) "Compilation : $*";\ $(CC) $(MORPHEO_CC_FLAGS) -c -o $@ $<; $(DIR_BIN)/%.x : $(OBJECTS_DEPS) $(OBJECTS) $(OBJECTS_BIN) \ $(ECHO) "Compilation : $*";\ $(CXX) $(MORPHEO_L_FLAGS) -o $@ $^ $(LIBNAME); $(DIR_OBJ) : @\ $(ECHO) "Create directory : $@";\ $(MKDIR) $@ $(DIR_BIN) : @\ $(ECHO) "Create directory : $@";\ $(MKDIR) $@ exe : all $(DIR_BIN) @\ $(MAKE) $(EXE); \ export SYSTEMC=$(SYSTEMC_$(SIMULATOR)) ; $(EXEC_PREFIX) $(EXE) $(SYSTEMC_EXEC_PARAMS_$(SIMULATOR)) all_environment : test_env $(DIR_OBJ) @\ $(MAKE) $(OBJECTS_DEPS) $(OBJECTS) $(OBJECTS_BIN) environment_clean : @\ $(ECHO) "Delete temporary files in directory "$(PWD);\ $(RM) *~ \ $(DIR_OBJ) \ $(DIR_BIN) \ $(DIR_TST)/*~ \ $(DIR_SRC)/*~ \ $(DIR_INC)/*~ \ *.dot \ *.txt; environment_help : @\ $(ECHO) " -----[ Environment ]------------------------------";\ $(ECHO) "";\ $(ECHO) " * exe : execute testbench";\ $(ECHO) " * test_env : test if environnment's variable is set";\ $(ECHO) " * all_environment : generate object";\ $(ECHO) "";