# common definition include Makefile.morpheo #-----[ Directory ]--------------------------------------------------------------- DIR_SRC = ./src DIR_C = $(DIR_SRC)/c DIR_ASM = $(DIR_SRC)/asm DIR_SYS = $(DIR_SRC)/sys DIR_INC = $(DIR_C)/include DIR_OBJ = obj DIR_BIN = bin EXE = soft #-----[ Files ]------------------------------------------------------------------- OBJ_ASM = $(patsubst $(DIR_ASM)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_ASM)/*.s)) OBJ_SYS = $(patsubst $(DIR_SYS)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SYS)/*.s)) OBJ_C = $(patsubst $(DIR_C)/%.c,$(DIR_OBJ)/%.o,$(wildcard $(DIR_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_ASM)/%.s @$(ECHO) "Compile of $*" @$(CC) $(CC_OPT) -I$(DIR_INC) -o $@ -c $^ @$(CC) $(CC_OPT) -I$(DIR_INC) -S -o $@.s -c $^ # @$(AS) $(AS_OPT) $^ -o $@ $(DIR_OBJ)/%.o : $(DIR_SYS)/%.s @$(ECHO) "Compile of $*" @$(CC) $(CC_OPT) -I$(DIR_INC) -o $@ -c $^ @$(CC) $(CC_OPT) -I$(DIR_INC) -S -o $@.s -c $^ # @$(AS) $(AS_OPT) $^ -o $@ $(DIR_OBJ)/%.o : $(DIR_C)/%.c @$(ECHO) "Compile of $*" @$(CC) $(CC_OPT) -I$(DIR_INC) -o $@ -c $^ @$(CC) $(CC_OPT) -I$(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) ""