| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | #Compiler Flags = Include Path + Macros Defines
 | 
					
						
							|  |  |  | CFLAGS = $(MACROS_DEF) $(INC_PATH) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #Macros is Board and Mcu
 | 
					
						
							|  |  |  | MACROS_DEF += -DBOARD=$(board) -DMCU=MCU_$(MCU) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #MCU currently supported
 | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | mcu_support = 13UXX 11UXX | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ################ Board and MCU determination ################
 | 
					
						
							|  |  |  | #all configuration build's name must be named after the macro BOARD_NAME defined in the tinyusb/demos/boards/board.h
 | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | buildname =  $(shell echo $(notdir $(build_dir)) | tr a-z A-Z) | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | board = $(buildname) | 
					
						
							|  |  |  | mcu = $(shell echo $(MCU) | tr A-Z a-z) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-07 10:53:52 +07:00
										 |  |  | $(warning board $(board) ) | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ifeq (,$(findstring BOARD_,$(board))) | 
					
						
							|  |  |  |  $(error build's name must be name exactly the same as the macro BOARD_NAME defined in the tinyusb/demos/boards/board.h) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | MCU := $(strip $(foreach supported_chip, $(mcu_support), $(findstring $(supported_chip),$(board)))) | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ifeq (,$(MCU)) | 
					
						
							|  |  |  | $(error build name must contain one of supported mcu: $(mcu_support)) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | MCU := LPC$(MCU) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-07 10:53:52 +07:00
										 |  |  | $(warning MCU $(MCU) $(mcu)) | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ################ Build Manipulate ################
 | 
					
						
							|  |  |  | #Remove all other mcu in demos/bsp and keep only needed one
 | 
					
						
							|  |  |  | OBJS := $(filter-out ./bsp/lpc%,$(OBJS)) $(filter ./bsp/$(mcu)%,$(OBJS)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #remove all other toolchain startup script
 | 
					
						
							|  |  |  | toolchain = xpresso | 
					
						
							|  |  |  | OBJS := $(filter-out ./bsp/$(mcu)/startup%,$(OBJS)) $(filter ./bsp/$(mcu)/startup_$(toolchain)%,$(OBJS)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #CMSIS include path & lib path
 | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | cmsis_proj = $(shell cd $(workspace_dir); ls | grep -i "CMSIS.*$(MCU)") | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | rel_include +=  $(cmsis_proj)/inc | 
					
						
							|  |  |  | rel_include +=  demos/bsp/boards | 
					
						
							|  |  |  | rel_include +=  demos/bsp/$(mcu)/inc | 
					
						
							|  |  |  | INC_PATH = $(addprefix  -I"$(workspace_dir)/, $(addsuffix ",$(rel_include)))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | LIBS += -l$(cmsis_proj) -L"$(workspace_dir)/$(cmsis_proj)/Debug" | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | #$(error $(OBJS))
 | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #generate makefiles.def containing MCU define for tinyusb lib
 | 
					
						
							| 
									
										
										
										
											2012-12-07 17:59:46 +07:00
										 |  |  | #tinyusb_CFLAGS = -DMCU=MCU_$(MCU) -I\"$(workspace_dir)/$(cmsis_proj)/inc\"
 | 
					
						
							|  |  |  | #$(shell echo CFLAGS = $(tinyusb_CFLAGS) > $(workspace_dir)/tinyusb/makefile.defs) 
 | 
					
						
							|  |  |  | #$(shell echo $$\(warning MCU = MCU_$(MCU)\) >> $(workspace_dir)/tinyusb/makefile.defs)
 | 
					
						
							| 
									
										
										
										
											2012-12-07 01:27:32 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #startup_objs := $(subst $(workspace_dir)/demos,.,$(shell find $(workspace_dir)/demos/ -type f))
 | 
					
						
							|  |  |  | #startup_objs := $(patsubst %.c,%.o,$(startup_objs))
 | 
					
						
							|  |  |  | #startup_objs := $(patsubst %.s,%.o,$(startup_objs))
 | 
					
						
							|  |  |  | #$(error $(startup_objs))
 | 
					
						
							|  |  |  | #OBJS := $(filter-out $(startup_objs),$(OBJS))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # add required startup script $(mcu) serves as sub folders inside startup
 | 
					
						
							|  |  |  | #startup_lpxpresso = $(mcu).*cr_startup
 | 
					
						
							|  |  |  | #startup_require += $(strip $(foreach entry,$(startup_objs), $(shell echo $(entry) | grep -i $(startup_lpxpresso))))
 | 
					
						
							|  |  |  | #OBJS += $(startup_require)
 | 
					
						
							|  |  |  | #$(warning $(startup_require))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #Remove Other MCU source, start 
 | 
					
						
							|  |  |  | #$(warning $(CFLAGS) )
 | 
					
						
							|  |  |  | #$(warning $(S_SRCS) )
 | 
					
						
							|  |  |  | 
 |