Makefile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #
  2. # Makefile for FraiseBootloader
  3. # to build MyBoard.hex :
  4. # export BOARD=MyBoard ; make
  5. MAINFRAISE=../..
  6. SDCC_SHARE=$(MAINFRAISE)/bin/share
  7. SDCC=$(MAINFRAISE)/bin/linux/sdcc
  8. CC=$(SDCC)
  9. PK2CMD= pk2cmd
  10. SHELL=/bin/bash
  11. # SDCC_SHARE=$(MY_BASE)/share/sdcc
  12. # SDCC=$(MY_BASE)/bin/sdcc
  13. # CC=$(SDCC)
  14. # DIS = gpdasm
  15. # FSUSB = fsusb
  16. # PICP=picp
  17. # PK2CMD= pk2cmd
  18. # SHELL=/bin/bash
  19. BOARDSDIR=$(MAINFRAISE)/boards
  20. BOARDDIR=$(BOARDSDIR)/$(BOARD)
  21. BOARDMAKEFILE=$(BOARDDIR)/board.Makefile
  22. BLD_START=`echo print "$(MEM_SIZE)-(32*64)" | python`
  23. include $(BOARDMAKEFILE)
  24. ifndef APP_START
  25. APP_START = 0
  26. endif
  27. SRCS= ./src/fbld.c $(BOARDDIR)/boardconfig.c
  28. OBJS = $(SRCS:%.c=%.o)
  29. ASMS = $(SRCS:%.c=%.asm)
  30. LSTS = $(SRCS:%.c=%.lst)
  31. CODS = $(SRCS:%.c=%.cod)
  32. OPTS = --ivt-loc=$(BLD_START) --no-crt
  33. #--model-small --vc --denable-peeps --optimize-goto --optimize-cmp --optimize-df --obanksel=9 --opt-code-size --fommit-frame-pointer --std-sdcc99
  34. CFLAGS= -I. -I./lib -I$(SDCC_SHARE)/include/pic16 -I$(SDCC_SHARE)/non-free/include/pic16 $(OPTS) -mpic16 -p$(CHIP) \
  35. --vc --denable-peeps --optimize-cmp --optimize-df --obanksel=2 \
  36. --opt-code-speed --fomit-frame-pointer --use-non-free
  37. MACROS= -DFOSC=$(FOSC) -DBLD_START=$(BLD_START) -DAPP_START=$(APP_START) \
  38. -DUART_PORT=$(UART_PORT) -DSERDRV_PIN=$(SERDRV_PIN) \
  39. -DSERDRV_TRI=$(SERDRV_TRI) -DSERDRV_POL=$(SERDRV_POL) \
  40. -DCONFIG_SETUP=$(CONFIG_SETUP) -DBOOTLOADER
  41. #-I$(SDCC_SHARE)/non-free/include/pic16
  42. #LIBS= libsdcc.lib libc18f.lib libio$(CHIP).lib pic$(CHIP).lib
  43. LIBS= libsdcc.lib libc18f.lib
  44. #libio$(CHIP).lib
  45. # .SUFFIXES: .c .asm .o .hex
  46. HEXFILE= hex/$(BOARD).hex
  47. SUFFIXES= obj lst asm o
  48. all: clean $(HEXFILE)
  49. make clean
  50. $(BOARD): all
  51. $(BOARDMAKEFILE):
  52. @ echo no board declared
  53. $(OBJS): %.o: %.c Makefile $(BOARDMAKEFILE) src/eeprom.c
  54. @echo ---- Compile $@ ----
  55. $(CC) $(CFLAGS) $(MACROS) -c $< -o $@
  56. $(HEXFILE): ./src/fbld.c $(BOARDDIR)/boardconfig.o $(OBJS) $(BOARDMAKEFILE) Makefile
  57. @echo ---- Linking and building $@ ----
  58. $(CC) $(CFLAGS) $(MACROS) -L $(SDCC_SHARE)/lib/pic16 -L $(SDCC_SHARE)/non-free/lib/pic16 -o $(HEXFILE) $(OBJS) $(LIBS) -Wl"-s $(CHIP).lkr"
  59. # -O 1 -m -w
  60. disass:
  61. $(DIS) -p p$(CHIP) $(HEXFILE) > $(PROJ).lis
  62. progpicp: all
  63. # su root -c " $(FSUSB) --program $(PROJ).hex "
  64. $(FSUSB) --program $(HEXFILE)
  65. # $(PICP) /dev/ttyUSB0 $(CHIP) -ef -wp $(PROJ).hex -wc 0x0e20 0x001a 0x0500 0x0080 0xc00f 0xe00f 0x400f
  66. # 0x0400=CCP2 on RB3; 0x0500 on RC1
  67. # 0x0e24=quartz20MHz 0x0e20=4MHz
  68. progpk2:
  69. $(PK2CMD) -P -M -F$(HEXFILE)
  70. clean:
  71. rm -f $(foreach suf,$(SUFFIXES),$(BOARDSDIR)/*/*.$(suf)) src/*.o src/*.asm src/*.lst src/*.cod hex/*.cod hex/*.lst hex/*.asm
  72. # rm -f */*.o */*.asm */*.lst src/*.o src/*.asm src/*.lst src/*.cod hex/*.cod hex/*.lst hex/*.asm