# common definition include Makefile.morpheo #-----[ Directory ]--------------------------------------------------------------- DIR_LOCAL = . DIR_LOCAL_C = $(DIR_LOCAL)/src/c DIR_LOCAL_ASM = $(DIR_LOCAL)/src/asm DIR_LOCAL_SYS = $(DIR_LOCAL)/src/sys DIR_LOCAL_INC = $(DIR_LOCAL)/src/c/include DIR_GLOBAL = $(SOFT)/Global.or32 DIR_GLOBAL_C = $(DIR_GLOBAL)/src/c DIR_GLOBAL_ASM = $(DIR_GLOBAL)/src/asm DIR_GLOBAL_SYS = $(DIR_GLOBAL)/src/sys DIR_GLOBAL_INC = $(DIR_GLOBAL)/include DIR_INC = -I$(DIR_LOCAL_INC) -I$(DIR_GLOBAL_INC) DIR_OBJ = obj DIR_BIN = bin EXE = soft #-----[ Files ]------------------------------------------------------------------- OBJ_ASM = $(patsubst $(DIR_LOCAL_ASM)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_LOCAL_ASM)/*.s)) \ $(patsubst $(DIR_GLOBAL_ASM)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_GLOBAL_ASM)/*.s)) OBJ_SYS = $(patsubst $(DIR_LOCAL_SYS)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_LOCAL_SYS)/*.s)) \ $(patsubst $(DIR_GLOBAL_SYS)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_GLOBAL_SYS)/*.s)) OBJ_C = $(patsubst $(DIR_LOCAL_C)/%.c,$(DIR_OBJ)/%.o,$(wildcard $(DIR_LOCAL_C)/*.c)) \ $(patsubst $(DIR_GLOBAL_C)/%.c,$(DIR_OBJ)/%.o,$(wildcard $(DIR_GLOBAL_C)/*.c)) OBJ = $(OBJ_SYS) $(OBJ_ASM) $(OBJ_C) #-----[ Rules ]------------------------------------------------------------------- .PRECIOUS : $(DIR_BIN)/%.x $(DIR_OBJ)/%.o $(DIR_OBJ)/%.a all : test_env $(DIR_BIN)/$(EXE).x.txt $(DIR_BIN)/%.x.txt : $(DIR_BIN)/%.x @\ $(ECHO) "List symbols of $*";\ $(NM) $(NM_OPT) $^ > $@.nm;\ $(ECHO) "Display information of $*";\ $(OBJDUMP) $(OBJDUMP_OPT) $^ > $@; $(DIR_BIN)/%.x : $(OBJ_SYS) $(OBJ) @\ $(ECHO) "Linkage of $*";\ $(LD) -o $@ $^ $(LD_OPT); $(DIR_OBJ)/%.o : $(DIR_LOCAL_ASM)/%.s @\ $(ECHO) "Compile of $*";\ $(CC) $(CC_OPT) $(DIR_INC) -o $@ -c $^ ;\ $(CC) $(CC_OPT) $(DIR_INC) -S -o $@.s -c $^ ; # @$(AS) $(AS_OPT) $^ -o $@ $(DIR_OBJ)/%.o : $(DIR_LOCAL_SYS)/%.s @\ $(ECHO) "Compile of $*";\ $(CC) $(CC_OPT) $(DIR_INC) -o $@ -c $^ ;\ $(CC) $(CC_OPT) $(DIR_INC) -S -o $@.s -c $^ ; # @$(AS) $(AS_OPT) $^ -o $@ $(DIR_OBJ)/%.o : $(DIR_LOCAL_C)/%.c @\ $(ECHO) "Compile of $*";\ $(CC) $(CC_OPT) $(DIR_INC) -o $@ -c $^ ;\ $(CC) $(CC_OPT) $(DIR_INC) -S -o $@.s -c $^ ; $(DIR_OBJ)/%.o : $(DIR_GLOBAL_ASM)/%.s @\ $(ECHO) "Compile of $*";\ $(CC) $(CC_OPT) $(DIR_INC) -o $@ -c $^ ;\ $(CC) $(CC_OPT) $(DIR_INC) -S -o $@.s -c $^ ; # @$(AS) $(AS_OPT) $^ -o $@ $(DIR_OBJ)/%.o : $(DIR_GLOBAL_SYS)/%.s @\ $(ECHO) "Compile of $*";\ $(CC) $(CC_OPT) $(DIR_INC) -o $@ -c $^ ;\ $(CC) $(CC_OPT) $(DIR_INC) -S -o $@.s -c $^ ; # @$(AS) $(AS_OPT) $^ -o $@ $(DIR_OBJ)/%.o : $(DIR_GLOBAL_C)/%.c @\ $(ECHO) "Compile of $*";\ $(CC) $(CC_OPT) $(DIR_INC) -o $@ -c $^ ;\ $(CC) $(CC_OPT) $(DIR_INC) -S -o $@.s -c $^ ; #-----[ Environement ]------------------------------------------------------------ test_env : # ifeq ($(origin TOOLS), undefined) # $(error "variable TOOLS is undefined"); # endif # ifeq ($(origin SOFT), undefined) # $(error "variable SOFT is undefined"); # endif @$(MKDIR) $(DIR_OBJ) $(DIR_BIN) #-----[ Maintenance ]------------------------------------------------------------- clean : @\ $(ECHO) "Delete temporary files "`$(PWD)`;\ $(RM) $(DIR_OBJ) $(DIR_BIN);\ $(MAKE) clean_rec DIR_CLEAN=.; #Clean recursive clean_rec : @\ $(ECHO) "Delete temporary files in directory $(DIR_CLEAN)";\ $(RM) -f $(DIR_CLEAN)/*~;\ for files in `$(LS) $(DIR_CLEAN)`; do \ if $(TEST) -d $(DIR_CLEAN)/$$files; \ then \ $(MAKE) clean_rec DIR_CLEAN=$(DIR_CLEAN)/$$files; \ fi; \ done; #-----[ Help ]-------------------------------------------------------------------- help : @\ $(ECHO) "";\ $(ECHO) "List of directive : ";\ $(ECHO) " * make : Compile the software";\ $(ECHO) " * make clean : Erase all files generates";\ $(ECHO) " * make bench_list : View all benchmark";\ $(ECHO) " * make bench_exec : Print the file \"$(FILE_BENCH)\" - it's the Workload";\ $(ECHO) " * make bench : Compile the Benchmark Suite";\ $(ECHO) "";