########################################################### # prog name ########################################################### program_name = pic-auto processor = 18F2520 ########################################################### # common part for all ht-pic projects ########################################################### base = . bin = $(HTC_PIC18)\bin compiler = $(bin)\picc18.exe assembler = $(bin)\aspic18.exe linker = $(compiler) archiver = Rar.exe rm = del /Q cp = copy src_dir = $(base)\src obj_dir = $(base)\obj exe_dir = $(base)\exe lst_dir = $(base)\lst opt_dir = $(base)\opt bak_dir = $(base)\bak hexfile = $(exe_dir)\$(program_name).hex ########################################################### # object files ########################################################### obj_files = \ $(obj_dir)\commands.obj \ $(obj_dir)\config.obj \ $(obj_dir)\crc16.obj \ $(obj_dir)\dflash.obj \ $(obj_dir)\events.obj \ $(obj_dir)\i2c.obj \ $(obj_dir)\logger.obj \ $(obj_dir)\main.obj \ $(obj_dir)\rs.obj \ $(obj_dir)\rtc.obj \ $(obj_dir)\spi.obj \ $(obj_dir)\time.obj \ $(obj_dir)\intrpt.obj \ $(obj_dir)\util.obj \ #linker options linker_options = -INTEL -Lf -$(processor) #compiler options #compiler_flags = -c -q -E -Zg -S -Lw -ASMLIST -O -$(processor) compiler_flags = -c -q -E -Zg -ASMLIST -W0 -O -$(processor) # files to archive rars =\ $(src_dir)\*.asm \ $(src_dir)\*.c \ $(src_dir)\*.h \ $(base)\makefile \ $(base)\*.mpj VPATH = $(src_dir) $(obj_dir) all : $(hexfile) build: clean all {$(src_dir)\}.c{$(obj_dir)\}.obj: @echo *** compiling $(*F).c @$(compiler) $(compiler_flags) -o $@ $< {$(src_dir)\}.asm{$(obj_dir)\}.obj: @echo *** assembling $(*F).asm @$(assembler) $(assembler_options) -o $@ $< \ -lf "$(lst_dir)\$(*F).lst" $(hexfile): $(obj_files) @echo *** linking... -@$(cp) "$(base)\*.obj" "$(obj_dir)\" >nul -@$(cp) "$(base)\*.rlf" "$(obj_dir)\" >nul -@$(rm) "$(base)\*.obj" >nul -@$(rm) "$(base)\*.rlf" >nul @$(linker) $(linker_options) -M$(lst_dir)\mmm.map $(obj_files) -O$(hexfile) -@$(cp) "$(base)\*.lst" "$(lst_dir)\" >nul -@$(rm) "$(base)\*.lst" >nul clean: -@$(rm) $(obj_dir)\*.obj 2>nul -@$(rm) $(obj_dir)\*.lst 2>nul -@$(rm) $(obj_dir)\*.rlf 2>nul -@$(rm) $(exe_dir)\$(program_name).* 2>nul -@$(rm) $(lst_dir)\*.lst 2>nul archive: @echo *** archiving... @$(archiver) a -inul -agyy-mm-dd,hh-nn-ss $(bak_dir)\$(program_name)_.rar $(rars) @echo *** done! ########################################################### # end of common part ########################################################### ########################################################### # dependencies ########################################################### $(obj_dir)\commands.obj: $(src_dir)\common.h $(src_dir)\commands.h $(src_dir)\events.h $(src_dir)\logger.h $(src_dir)\config.h $(src_dir)\rs.h $(src_dir)\util.h $(obj_dir)\config.obj: $(src_dir)\common.h $(src_dir)\config.h $(src_dir)\crc16.h $(src_dir)\dflash.h $(obj_dir)\crc16.obj: $(src_dir)\common.h $(src_dir)\crc16.h $(obj_dir)\dflash.obj: $(src_dir)\common.h $(src_dir)\dflash.h $(src_dir)\spi.h $(obj_dir)\events.obj: $(src_dir)\common.h $(src_dir)\events.h $(src_dir)\time.h $(src_dir)\dflash.h $(src_dir)\util.h $(src_dir)\crc16.h $(obj_dir)\i2c.obj: $(src_dir)\common.h $(src_dir)\i2c.h $(obj_dir)\logger.obj: $(src_dir)\common.h $(src_dir)\logger.h $(src_dir)\dflash.h $(src_dir)\crc16.h $(obj_dir)\main.obj: $(src_dir)\common.h $(src_dir)\dflash.h $(src_dir)\i2c.h $(src_dir)\rs.h $(src_dir)\rtc.h $(src_dir)\spi.h $(src_dir)\time.h $(obj_dir)\rs.obj: $(src_dir)\common.h $(src_dir)\rs.h $(obj_dir)\rtc.obj: $(src_dir)\common.h $(src_dir)\i2c.h $(src_dir)\rtc.h $(obj_dir)\spi.obj: $(src_dir)\common.h $(src_dir)\spi.h $(obj_dir)\time.obj: $(src_dir)\common.h $(src_dir)\i2c.h $(src_dir)\rtc.h $(src_dir)\time.h $(obj_dir)\timer0.obj: $(src_dir)\common.h $(src_dir)\timer0.h $(obj_dir)\intrpt.obj: $(src_dir)\common.h $(src_dir)\intrpt.h $(obj_dir)\util.obj: $(src_dir)\common.h $(src_dir)\util.h $(src_dir)\rs.h