bootloader.mk 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. BUILD = bootmgr/build/$(BOARD)/$(BTYPE)
  2. BOOT_INC = -Ibootmgr
  3. BOOT_INC += -Ibootmgr/sl
  4. BOOT_INC += -Ihal
  5. BOOT_INC += -Ihal/inc
  6. BOOT_INC += -I$(TOP)/drivers/cc3100/inc
  7. BOOT_INC += -Imisc
  8. BOOT_INC += -Imods
  9. BOOT_INC += -Isimplelink
  10. BOOT_INC += -Isimplelink/oslib
  11. BOOT_INC += -Iutil
  12. BOOT_INC += -I$(TOP)
  13. BOOT_INC += -I.
  14. BOOT_INC += -I$(BUILD)
  15. BOOT_CPPDEFINES = -Dgcc -DBOOTLOADER -DTARGET_IS_CC3200 -DSL_TINY
  16. BOOT_HAL_SRC_C = $(addprefix hal/,\
  17. cpu.c \
  18. interrupt.c \
  19. gpio.c \
  20. pin.c \
  21. prcm.c \
  22. shamd5.c \
  23. spi.c \
  24. startup_gcc.c \
  25. systick.c \
  26. utils.c \
  27. )
  28. BOOT_CC3100_SRC_C = $(addprefix drivers/cc3100/,\
  29. src/device.c \
  30. src/driver.c \
  31. src/flowcont.c \
  32. src/fs.c \
  33. src/netapp.c \
  34. src/netcfg.c \
  35. src/nonos.c \
  36. src/socket.c \
  37. src/spawn.c \
  38. src/wlan.c \
  39. )
  40. BOOT_MISC_SRC_C = $(addprefix misc/,\
  41. antenna.c \
  42. mperror.c \
  43. )
  44. BOOT_SL_SRC_C = $(addprefix simplelink/,\
  45. cc_pal.c \
  46. )
  47. BOOT_UTIL_SRC_C = $(addprefix util/,\
  48. cryptohash.c \
  49. )
  50. BOOT_MAIN_SRC_C = \
  51. bootmgr/main.c
  52. BOOT_MAIN_SRC_S = \
  53. bootmgr/runapp.s
  54. BOOT_PY_SRC_C = $(addprefix py/,\
  55. mpprint.c \
  56. )
  57. BOOT_LIB_SRC_C = $(addprefix lib/,\
  58. libc/string0.c \
  59. utils/printf.c \
  60. )
  61. OBJ = $(addprefix $(BUILD)/, $(BOOT_HAL_SRC_C:.c=.o) $(BOOT_SL_SRC_C:.c=.o) $(BOOT_CC3100_SRC_C:.c=.o) $(BOOT_UTIL_SRC_C:.c=.o) $(BOOT_MISC_SRC_C:.c=.o))
  62. OBJ += $(addprefix $(BUILD)/, $(BOOT_MAIN_SRC_C:.c=.o) $(BOOT_MAIN_SRC_S:.s=.o) $(BOOT_PY_SRC_C:.c=.o))
  63. OBJ += $(addprefix $(BUILD)/, $(BOOT_LIB_SRC_C:.c=.o))
  64. # Add the linker script
  65. LINKER_SCRIPT = bootmgr/bootmgr.lds
  66. LDFLAGS += -T $(LINKER_SCRIPT)
  67. # Add the bootloader specific CFLAGS
  68. CFLAGS += $(BOOT_CPPDEFINES) $(BOOT_INC)
  69. # Disable strict aliasing for the simplelink driver
  70. $(BUILD)/drivers/cc3100/src/driver.o: CFLAGS += -fno-strict-aliasing
  71. # Check if we would like to debug the port code
  72. ifeq ($(BTYPE), release)
  73. # Optimize everything and define the NDEBUG flag
  74. CFLAGS += -Os -DNDEBUG
  75. else
  76. ifeq ($(BTYPE), debug)
  77. # Define the DEBUG flag
  78. CFLAGS += -DDEBUG=DEBUG
  79. # Optimize the stable sources only
  80. $(BUILD)/hal/%.o: CFLAGS += -Os
  81. $(BUILD)/misc/%.o: CFLAGS += -Os
  82. $(BUILD)/simplelink/%.o: CFLAGS += -Os
  83. $(BUILD)/drivers/cc3100/%.o: CFLAGS += -Os
  84. $(BUILD)/py/%.o: CFLAGS += -Os
  85. $(BUILD)/ports/stm32/%.o: CFLAGS += -Os
  86. else
  87. $(error Invalid BTYPE specified)
  88. endif
  89. endif
  90. SHELL = bash
  91. BOOT_GEN = bootmgr/bootgen.sh
  92. HEADER_BUILD = $(BUILD)/genhdr
  93. all: $(BUILD)/bootloader.bin
  94. $(BUILD)/bootmgr.axf: $(OBJ) $(LINKER_SCRIPT)
  95. $(ECHO) "LINK $@"
  96. $(Q)$(CC) -o $@ $(LDFLAGS) $(OBJ) $(LIBS)
  97. $(Q)$(SIZE) $@
  98. $(BUILD)/bootmgr.bin: $(BUILD)/bootmgr.axf
  99. $(ECHO) "Create $@"
  100. $(Q)$(OBJCOPY) -O binary $< $@
  101. $(BUILD)/bootloader.bin: $(BUILD)/bootmgr.bin
  102. $(ECHO) "Create $@"
  103. $(Q)$(SHELL) $(BOOT_GEN) $(BUILD)
  104. # Create an empty "qstrdefs.generated.h" needed by py/mkrules.mk
  105. $(HEADER_BUILD)/qstrdefs.generated.h: | $(HEADER_BUILD)
  106. touch $@
  107. # Create an empty "mpversion.h" needed by py/mkrules.mk
  108. $(HEADER_BUILD)/mpversion.h: | $(HEADER_BUILD)
  109. touch $@