From b8089f6eca64267329a3930da32e6447e616ee56 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 18 Feb 2009 19:18:37 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@784 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARM7-AT91SAM7X-GCC/Makefile | 260 +++++++++--------------- demos/ARM7-AT91SAM7X-GCC/Makefile.thumb | 218 -------------------- demos/ARM7-AT91SAM7X-WEB-GCC/Makefile | 273 ++++++++++---------------- demos/ARM7-AT91SAM7X-WEB-GCC/Makefile.thumb | 233 ---------------------- demos/ARM7-LPC214x-GCC-minimal/Makefile | 253 +++++++++--------------- demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb | 215 -------------------- demos/ARM7-LPC214x-GCC/Makefile | 261 +++++++++--------------- demos/ARM7-LPC214x-GCC/Makefile.thumb | 219 --------------------- demos/ARMCM3-STM32F103-GCC/Makefile | 215 +++++++------------- 9 files changed, 464 insertions(+), 1683 deletions(-) delete mode 100644 demos/ARM7-AT91SAM7X-GCC/Makefile.thumb delete mode 100644 demos/ARM7-AT91SAM7X-WEB-GCC/Makefile.thumb delete mode 100644 demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb delete mode 100644 demos/ARM7-LPC214x-GCC/Makefile.thumb (limited to 'demos') diff --git a/demos/ARM7-AT91SAM7X-GCC/Makefile b/demos/ARM7-AT91SAM7X-GCC/Makefile index 65219c2da..d7e30724a 100644 --- a/demos/ARM7-AT91SAM7X-GCC/Makefile +++ b/demos/ARM7-AT91SAM7X-GCC/Makefile @@ -1,21 +1,87 @@ +############################################################################## +# Build global options +# NOTE: Can be overridden externally. # -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project + +# Compiler options here. +ifeq ($(USE_OPT),) + USE_OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu +endif + +# Enable this if you want the linker to remove unused code and data +ifeq ($(USE_LINK_GC),) + USE_LINK_GC = yes +endif + +# If enabled, this option allows to compile the application in THUMB mode. +ifeq ($(USE_THUMB),) + USE_THUMB = no +endif + +# Enable register caching optimization (read documentation). +ifeq ($(USE_CURRP_CACHING),) + USE_CURRP_CACHING = no +endif + # -# make clean = Clean project files. +# Build global options +############################################################################## + +############################################################################## +# Project, sources and paths # -# To rebuild project do "make clean" and "make all". + +# Define project name here +PROJECT = ch + +# Define linker script file here +LDSCRIPT= ch.ld + +# Imported source files +include ../../src/kernel.mk +include ../../test/test.mk + +# Sources that can be compiled in ARM or THUMB mode depending on the global +# setting. +SRC = ../../ports/ARM7/chcore.c \ + ../../ports/ARM7-LPC214x/vic.c \ + ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \ + ${KERNSRC} \ + ${TESTSRC} \ + ../../src/lib/evtimer.c \ + at91lib/aic.c \ + board.c main.c + +# Sources to be compiled in ARM mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +ASRC = + +# Sources to be compiled in THUMB mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +TSRC = + +# List ASM source files here +ASMSRC = ../../ports/ARM7/crt0.s \ + ../../ports/ARM7-AT91SAM7X/vectors.s \ + ../../ports/ARM7/chcoreasm.s + +INCDIR = $(KERNINC) $(TESTINC) \ + ../../src/lib \ + ../../ports/ARM7 \ + ../../ports/ARM7-AT91SAM7X + # +# Project, sources and paths +############################################################################## -############################################################################################## -# Start of default section +############################################################################## +# Compiler settings # +MCU = arm7tdmi + TRGT = arm-elf- CC = $(TRGT)gcc CP = $(TRGT)objcopy @@ -24,10 +90,22 @@ OD = $(TRGT)objdump HEX = $(CP) -O ihex BIN = $(CP) -O binary -MCU = arm7tdmi +# ARM-specific options here +AOPT = -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes +# THUMB-specific options here +TOPT = -mthumb -DTHUMB + +# Define warning options here +WARN = -Wall -Wstrict-prototypes + +# +# Compiler settings +############################################################################## + +############################################################################## +# Start of default section +# # List all default C defines here, like -D_DEBUG=1 DDEFS = @@ -46,49 +124,20 @@ DLIBS = # # End of default section -############################################################################################## +############################################################################## -############################################################################################## +############################################################################## # Start of user section # -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - # List all user C define here, like -D_DEBUG=1 UDEFS = # Define ASM defines here UADEFS = -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List ARM-mode C source files here -ASRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ../../src/lib/evtimer.c \ - at91lib/aic.c \ - board.c main.c - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-AT91SAM7X/vectors.s - # List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARM7 ../../ports/ARM7-AT91SAM7X +UINCDIR = # List the user directory to look for the libraries here ULIBDIR = @@ -96,123 +145,8 @@ ULIBDIR = # List all user libraries here ULIBS = -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -#OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - # # End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) +############################################################################## -# *** EOF *** +include ../../ports/ARM7/rules.mk diff --git a/demos/ARM7-AT91SAM7X-GCC/Makefile.thumb b/demos/ARM7-AT91SAM7X-GCC/Makefile.thumb deleted file mode 100644 index 6d06e82a7..000000000 --- a/demos/ARM7-AT91SAM7X-GCC/Makefile.thumb +++ /dev/null @@ -1,218 +0,0 @@ -# -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project -# -# make clean = Clean project files. -# -# To rebuild project do "make clean" and "make all". -# - -############################################################################################## -# Start of default section -# - -TRGT = arm-elf- -CC = $(TRGT)gcc -CP = $(TRGT)objcopy -AS = $(TRGT)gcc -x assembler-with-cpp -OD = $(TRGT)objdump -HEX = $(CP) -O ihex -BIN = $(CP) -O binary - -MCU = arm7tdmi - -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes - -# List all default C defines here, like -D_DEBUG=1 -DDEFS = - -# List all default ASM defines here, like -D_DEBUG=1 -DADEFS = - -# List all default directories to look for include files here -DINCDIR = - -# List the default directory to look for the libraries here -DLIBDIR = - -# List all default libraries here -DLIBS = - -# -# End of default section -############################################################################################## - -############################################################################################## -# Start of user section -# - -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - -# List all user C define here, like -D_DEBUG=1 -UDEFS = - -# Define ASM defines here -UADEFS = - -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List ARM-mode C source files here -ASRC = - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ../../src/lib/evtimer.c \ - at91lib/aic.c \ - board.c main.c - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-AT91SAM7X/vectors.s - -# List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARM7 ../../ports/ARM7-AT91SAM7X - -# List the user directory to look for the libraries here -ULIBDIR = - -# List all user libraries here -ULIBS = - -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -Os -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -#OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - -# -# End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile b/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile index 74146d985..20d44a9d5 100644 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile +++ b/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile @@ -1,55 +1,34 @@ +############################################################################## +# Build global options +# NOTE: Can be overridden externally. # -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project -# -# make clean = Clean project files. -# -# To rebuild project do "make clean" and "make all". -# - -############################################################################################## -# Start of default section -# - -TRGT = arm-elf- -CC = $(TRGT)gcc -CP = $(TRGT)objcopy -AS = $(TRGT)gcc -x assembler-with-cpp -OD = $(TRGT)objdump -HEX = $(CP) -O ihex -BIN = $(CP) -O binary -MCU = arm7tdmi +# Compiler options here. +ifeq ($(USE_OPT),) + USE_OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu +endif # Enable this if you want the linker to remove unused code and data -LINK_GC = yes - -# List all default C defines here, like -D_DEBUG=1 -DDEFS = - -# List all default ASM defines here, like -D_DEBUG=1 -DADEFS = - -# List all default directories to look for include files here -DINCDIR = +ifeq ($(USE_LINK_GC),) + USE_LINK_GC = yes +endif -# List the default directory to look for the libraries here -DLIBDIR = +# If enabled, this option allows to compile the application in THUMB mode. +ifeq ($(USE_THUMB),) + USE_THUMB = no +endif -# List all default libraries here -DLIBS = +# Enable register caching optimization (read documentation). +ifeq ($(USE_CURRP_CACHING),) + USE_CURRP_CACHING = no +endif # -# End of default section -############################################################################################## +# Build global options +############################################################################## -############################################################################################## -# Start of user section +############################################################################## +# Project, sources and paths # # Define project name here @@ -58,12 +37,6 @@ PROJECT = ch # Define linker script file here LDSCRIPT= ch.ld -# List all user C define here, like -D_DEBUG=1 -UDEFS = - -# Define ASM defines here -UADEFS = - # Imported source files include ../../src/kernel.mk include ../../test/test.mk @@ -77,156 +50,116 @@ USRC = ../../ext/uip-1.0/uip/uip_arp.c \ ../../ext/uip-1.0/apps/webserver/httpd-fs.c \ ../../ext/uip-1.0/apps/webserver/httpd-cgi.c -# List ARM-mode C source files here -ASRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \ - ../../ports/ARM7-AT91SAM7X/sam7x_emac.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ${USRC} \ - ../../src/lib/evtimer.c \ - at91lib/aic.c \ - web/webthread.c \ - board.c main.c - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. +# Sources that can be compiled in ARM or THUMB mode depending on the global +# setting. +SRC = ../../ports/ARM7/chcore.c \ + ../../ports/ARM7-LPC214x/vic.c \ + ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \ + ../../ports/ARM7-AT91SAM7X/sam7x_emac.c \ + ${KERNSRC} \ + ${TESTSRC} \ + ${USRC} \ + ../../src/lib/evtimer.c \ + at91lib/aic.c \ + web/webthread.c \ + board.c main.c + +# Sources to be compiled in ARM mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +ASRC = + +# Sources to be compiled in THUMB mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. TSRC = # List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-AT91SAM7X/vectors.s +ASMSRC = ../../ports/ARM7/crt0.s \ + ../../ports/ARM7-AT91SAM7X/vectors.s \ + ../../ports/ARM7/chcoreasm.s -# List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARM7 ../../ports/ARM7-AT91SAM7X \ - ./web ../../ext/uip-1.0/uip ../../ext/uip-1.0/apps/webserver +INCDIR = $(KERNINC) $(TESTINC) \ + ../../src/lib \ + ../../ports/ARM7 \ + ../../ports/ARM7-AT91SAM7X \ + ./web ../../ext/uip-1.0/uip ../../ext/uip-1.0/apps/webserver -# List the user directory to look for the libraries here -ULIBDIR = +# +# Project, sources and paths +############################################################################## -# List all user libraries here -ULIBS = +############################################################################## +# Compiler settings +# + +MCU = arm7tdmi + +TRGT = arm-elf- +CC = $(TRGT)gcc +CP = $(TRGT)objcopy +AS = $(TRGT)gcc -x assembler-with-cpp +OD = $(TRGT)objdump +HEX = $(CP) -O ihex +BIN = $(CP) -O binary # ARM-specific options here AOPT = # THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -#OPT += -falign-functions=16 +TOPT = -mthumb -DTHUMB # Define warning options here WARN = -Wall -Wstrict-prototypes # -# End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif +# Compiler settings +############################################################################## -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif +############################################################################## +# Start of default section +# -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif +# List all default C defines here, like -D_DEBUG=1 +DDEFS = -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d +# List all default ASM defines here, like -D_DEBUG=1 +DADEFS = -# -# Makefile rules -# +# List all default directories to look for include files here +DINCDIR = -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp +# List the default directory to look for the libraries here +DLIBDIR = -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ +# List all default libraries here +DLIBS = -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ +# +# End of default section +############################################################################## -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ +############################################################################## +# Start of user section +# -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ +# List all user C define here, like -D_DEBUG=1 +UDEFS = -%hex: %elf - $(HEX) $< $@ +# Define ASM defines here +UADEFS = -%bin: %elf - $(BIN) $< $@ +# List all user directories here +UINCDIR = -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ +# List the user directory to look for the libraries here +ULIBDIR = -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep +# List all user libraries here +ULIBS = # -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) +# End of user defines +############################################################################## -# *** EOF *** +include ../../ports/ARM7/rules.mk diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile.thumb b/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile.thumb deleted file mode 100644 index e476abc6b..000000000 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/Makefile.thumb +++ /dev/null @@ -1,233 +0,0 @@ -# -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project -# -# make clean = Clean project files. -# -# To rebuild project do "make clean" and "make all". -# - -############################################################################################## -# Start of default section -# - -TRGT = arm-elf- -CC = $(TRGT)gcc -CP = $(TRGT)objcopy -AS = $(TRGT)gcc -x assembler-with-cpp -OD = $(TRGT)objdump -HEX = $(CP) -O ihex -BIN = $(CP) -O binary - -MCU = arm7tdmi - -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes - -# List all default C defines here, like -D_DEBUG=1 -DDEFS = - -# List all default ASM defines here, like -D_DEBUG=1 -DADEFS = - -# List all default directories to look for include files here -DINCDIR = - -# List the default directory to look for the libraries here -DLIBDIR = - -# List all default libraries here -DLIBS = - -# -# End of default section -############################################################################################## - -############################################################################################## -# Start of user section -# - -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - -# List all user C define here, like -D_DEBUG=1 -UDEFS = - -# Define ASM defines here -UADEFS = - -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List of the required uIP source files. -USRC = ../../ext/uip-1.0/uip/uip_arp.c \ - ../../ext/uip-1.0/uip/psock.c \ - ../../ext/uip-1.0/uip/timer.c \ - ../../ext/uip-1.0/uip/uip.c \ - ../../ext/uip-1.0/apps/webserver/httpd.c \ - ../../ext/uip-1.0/apps/webserver/http-strings.c \ - ../../ext/uip-1.0/apps/webserver/httpd-fs.c \ - ../../ext/uip-1.0/apps/webserver/httpd-cgi.c - -# List ARM-mode C source files here -ASRC = - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-AT91SAM7X/sam7x_serial.c \ - ../../ports/ARM7-AT91SAM7X/sam7x_emac.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ${USRC} \ - ../../src/lib/evtimer.c \ - at91lib/aic.c \ - web/webthread.c \ - board.c main.c - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-AT91SAM7X/vectors.s - -# List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARM7 ../../ports/ARM7-AT91SAM7X \ - ./web ../../ext/uip-1.0/uip ../../ext/uip-1.0/apps/webserver - -# List the user directory to look for the libraries here -ULIBDIR = - -# List all user libraries here -ULIBS = - -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -#OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - -# -# End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/demos/ARM7-LPC214x-GCC-minimal/Makefile b/demos/ARM7-LPC214x-GCC-minimal/Makefile index c584b1d69..67e41a385 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/Makefile +++ b/demos/ARM7-LPC214x-GCC-minimal/Makefile @@ -1,21 +1,83 @@ +############################################################################## +# Build global options +# NOTE: Can be overridden externally. # -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project + +# Compiler options here. +ifeq ($(USE_OPT),) + USE_OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 +endif + +# Enable this if you want the linker to remove unused code and data +ifeq ($(USE_LINK_GC),) + USE_LINK_GC = yes +endif + +# If enabled, this option allows to compile the application in THUMB mode. +ifeq ($(USE_THUMB),) + USE_THUMB = no +endif + +# Enable register caching optimization (read documentation). +ifeq ($(USE_CURRP_CACHING),) + USE_CURRP_CACHING = no +endif + # -# make clean = Clean project files. +# Build global options +############################################################################## + +############################################################################## +# Project, sources and paths # -# To rebuild project do "make clean" and "make all". + +# Define project name here +PROJECT = ch + +# Define linker script file here +LDSCRIPT= ch.ld + +# Imported source files +include ../../src/kernel.mk +#include ../../test/test.mk + +# Sources that can be compiled in ARM or THUMB mode depending on the global +# setting. +SRC = ../../ports/ARM7/chcore.c \ + ../../ports/ARM7-LPC214x/vic.c \ + ${KERNSRC} \ + board.c main.c + +# Sources to be compiled in ARM mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +ASRC = + +# Sources to be compiled in THUMB mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +TSRC = + +# List ASM source files here +ASMSRC = ../../ports/ARM7/crt0.s \ + ../../ports/ARM7-LPC214x/vectors.s \ + ../../ports/ARM7/chcoreasm.s + +INCDIR = $(KERNINC) $(TESTINC) \ + ../../src/lib \ + ../../ports/ARM7 \ + ../../ports/ARM7-LPC214x + # +# Project, sources and paths +############################################################################## -############################################################################################## -# Start of default section +############################################################################## +# Compiler settings # +MCU = arm7tdmi + TRGT = arm-elf- CC = $(TRGT)gcc CP = $(TRGT)objcopy @@ -24,10 +86,22 @@ OD = $(TRGT)objdump HEX = $(CP) -O ihex BIN = $(CP) -O binary -MCU = arm7tdmi +# ARM-specific options here +AOPT = -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes +# THUMB-specific options here +TOPT = -mthumb -DTHUMB + +# Define warning options here +WARN = -Wall -Wstrict-prototypes + +# +# Compiler settings +############################################################################## + +############################################################################## +# Start of default section +# # List all default C defines here, like -D_DEBUG=1 DDEFS = @@ -46,46 +120,20 @@ DLIBS = # # End of default section -############################################################################################## +############################################################################## -############################################################################################## +############################################################################## # Start of user section # -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - # List all user C define here, like -D_DEBUG=1 UDEFS = # Define ASM defines here UADEFS = -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List ARM-mode C source files here -ASRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-LPC214x/vic.c \ - ${KERNSRC} \ - board.c main.c - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-LPC214x/vectors.s - # List all user directories here -UINCDIR = ../../src/include ../../src/lib \ - ../../ports/ARM7 ../../ports/ARM7-LPC214x +UINCDIR = # List the user directory to look for the libraries here ULIBDIR = @@ -93,123 +141,8 @@ ULIBDIR = # List all user libraries here ULIBS = -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - # # End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) +############################################################################## -# *** EOF *** +include ../../ports/ARM7/rules.mk diff --git a/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb b/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb deleted file mode 100644 index 876298a3d..000000000 --- a/demos/ARM7-LPC214x-GCC-minimal/Makefile.thumb +++ /dev/null @@ -1,215 +0,0 @@ -# -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project -# -# make clean = Clean project files. -# -# To rebuild project do "make clean" and "make all". -# - -############################################################################################## -# Start of default section -# - -TRGT = arm-elf- -CC = $(TRGT)gcc -CP = $(TRGT)objcopy -AS = $(TRGT)gcc -x assembler-with-cpp -OD = $(TRGT)objdump -HEX = $(CP) -O ihex -BIN = $(CP) -O binary - -MCU = arm7tdmi - -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes - -# List all default C defines here, like -D_DEBUG=1 -DDEFS = - -# List all default ASM defines here, like -D_DEBUG=1 -DADEFS = - -# List all default directories to look for include files here -DINCDIR = - -# List the default directory to look for the libraries here -DLIBDIR = - -# List all default libraries here -DLIBS = - -# -# End of default section -############################################################################################## - -############################################################################################## -# Start of user section -# - -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - -# List all user C define here, like -D_DEBUG=1 -UDEFS = - -# Define ASM defines here -UADEFS = - -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List ARM-mode C source files here -ASRC = - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-LPC214x/vic.c \ - ${KERNSRC} \ - board.c main.c - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-LPC214x/vectors.s - -# List all user directories here -UINCDIR = ../../src/include ../../src/lib \ - ../../ports/ARM7 ../../ports/ARM7-LPC214x - -# List the user directory to look for the libraries here -ULIBDIR = - -# List all user libraries here -ULIBS = - -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -Os -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - -# -# End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/demos/ARM7-LPC214x-GCC/Makefile b/demos/ARM7-LPC214x-GCC/Makefile index 478e9a287..ff75442f2 100644 --- a/demos/ARM7-LPC214x-GCC/Makefile +++ b/demos/ARM7-LPC214x-GCC/Makefile @@ -1,21 +1,87 @@ +############################################################################## +# Build global options +# NOTE: Can be overridden externally. # -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project + +# Compiler options here. +ifeq ($(USE_OPT),) + USE_OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 +endif + +# Enable this if you want the linker to remove unused code and data +ifeq ($(USE_LINK_GC),) + USE_LINK_GC = yes +endif + +# If enabled, this option allows to compile the application in THUMB mode. +ifeq ($(USE_THUMB),) + USE_THUMB = no +endif + +# Enable register caching optimization (read documentation). +ifeq ($(USE_CURRP_CACHING),) + USE_CURRP_CACHING = no +endif + # -# make clean = Clean project files. +# Build global options +############################################################################## + +############################################################################## +# Project, sources and paths # -# To rebuild project do "make clean" and "make all". + +# Define project name here +PROJECT = ch + +# Define linker script file here +LDSCRIPT= ch.ld + +# Imported source files +include ../../src/kernel.mk +include ../../test/test.mk + +# Sources that can be compiled in ARM or THUMB mode depending on the global +# setting. +SRC = ../../ports/ARM7/chcore.c \ + ../../ports/ARM7-LPC214x/vic.c \ + ../../ports/ARM7-LPC214x/lpc214x_serial.c \ + ../../ports/ARM7-LPC214x/lpc214x_ssp.c \ + ${KERNSRC} \ + ${TESTSRC} \ + ../../src/lib/evtimer.c \ + board.c buzzer.c mmcsd.c main.c + +# Sources to be compiled in ARM mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +ASRC = + +# Sources to be compiled in THUMB mode regardless of the global setting. +# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler +# option that results in lower performance and larger code size. +TSRC = + +# List ASM source files here +ASMSRC = ../../ports/ARM7/crt0.s \ + ../../ports/ARM7-LPC214x/vectors.s \ + ../../ports/ARM7/chcoreasm.s + +INCDIR = $(KERNINC) $(TESTINC) \ + ../../src/lib \ + ../../ports/ARM7 \ + ../../ports/ARM7-LPC214x + # +# Project, sources and paths +############################################################################## -############################################################################################## -# Start of default section +############################################################################## +# Compiler settings # +MCU = arm7tdmi + TRGT = arm-elf- CC = $(TRGT)gcc CP = $(TRGT)objcopy @@ -24,10 +90,22 @@ OD = $(TRGT)objdump HEX = $(CP) -O ihex BIN = $(CP) -O binary -MCU = arm7tdmi +# ARM-specific options here +AOPT = -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes +# THUMB-specific options here +TOPT = -mthumb -DTHUMB + +# Define warning options here +WARN = -Wall -Wstrict-prototypes + +# +# Compiler settings +############################################################################## + +############################################################################## +# Start of default section +# # List all default C defines here, like -D_DEBUG=1 DDEFS = @@ -46,50 +124,20 @@ DLIBS = # # End of default section -############################################################################################## +############################################################################## -############################################################################################## +############################################################################## # Start of user section # -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - # List all user C define here, like -D_DEBUG=1 UDEFS = # Define ASM defines here UADEFS = -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List ARM-mode C source files here -ASRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-LPC214x/vic.c \ - ../../ports/ARM7-LPC214x/lpc214x_serial.c \ - ../../ports/ARM7-LPC214x/lpc214x_ssp.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ../../src/lib/evtimer.c \ - board.c buzzer.c mmcsd.c main.c - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-LPC214x/vectors.s - # List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARM7 ../../ports/ARM7-LPC214x +UINCDIR = # List the user directory to look for the libraries here ULIBDIR = @@ -97,123 +145,8 @@ ULIBDIR = # List all user libraries here ULIBS = -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - # # End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) +############################################################################## -# *** EOF *** +include ../../ports/ARM7/rules.mk diff --git a/demos/ARM7-LPC214x-GCC/Makefile.thumb b/demos/ARM7-LPC214x-GCC/Makefile.thumb deleted file mode 100644 index aa3046c20..000000000 --- a/demos/ARM7-LPC214x-GCC/Makefile.thumb +++ /dev/null @@ -1,219 +0,0 @@ -# -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project -# -# make clean = Clean project files. -# -# To rebuild project do "make clean" and "make all". -# - -############################################################################################## -# Start of default section -# - -TRGT = arm-elf- -CC = $(TRGT)gcc -CP = $(TRGT)objcopy -AS = $(TRGT)gcc -x assembler-with-cpp -OD = $(TRGT)objdump -HEX = $(CP) -O ihex -BIN = $(CP) -O binary - -MCU = arm7tdmi - -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes - -# List all default C defines here, like -D_DEBUG=1 -DDEFS = - -# List all default ASM defines here, like -D_DEBUG=1 -DADEFS = - -# List all default directories to look for include files here -DINCDIR = - -# List the default directory to look for the libraries here -DLIBDIR = - -# List all default libraries here -DLIBS = - -# -# End of default section -############################################################################################## - -############################################################################################## -# Start of user section -# - -# Define project name here -PROJECT = ch - -# Define linker script file here -LDSCRIPT= ch.ld - -# List all user C define here, like -D_DEBUG=1 -UDEFS = - -# Define ASM defines here -UADEFS = - -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk - -# List ARM-mode C source files here -ASRC = - -# List THUMB-mode C sources here -# NOTE: If any module is compiled in thumb mode then -mthumb-interwork is -# enabled for all modules and that lowers performance. -TSRC = ../../ports/ARM7/chcore.c \ - ../../ports/ARM7-LPC214x/vic.c \ - ../../ports/ARM7-LPC214x/lpc214x_serial.c \ - ../../ports/ARM7-LPC214x/lpc214x_ssp.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ../../src/lib/evtimer.c \ - board.c buzzer.c mmcsd.c main.c - -# List ASM source files here -ASMSRC = ../../ports/ARM7/crt0.s ../../ports/ARM7/chcoreasm.s \ - ../../ports/ARM7-LPC214x/vectors.s - -# List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARM7 ../../ports/ARM7-LPC214x - -# List the user directory to look for the libraries here -ULIBDIR = - -# List all user libraries here -ULIBS = - -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -D THUMB - -# Common options here -# NOTE: -ffixed-r7 is only needed if you enabled CH_CURRP_REGISTER_CACHE in -# chconf.h. -# NOTE: -falign-functions=16 may improve the performance, not always, but -# increases the code size. -OPT = -Os -ggdb -fomit-frame-pointer -mabi=apcs-gnu -#OPT += -ffixed-r7 -OPT += -falign-functions=16 - -# Define warning options here -WARN = -Wall -Wstrict-prototypes - -# -# End of user defines -############################################################################################## - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -AOBJS = $(ASRC:.c=.o) -TOBJS = $(TSRC:.c=.o) -OBJS = $(ASMOBJS) $(AOBJS) $(TOBJS) -ASMOBJS = $(ASMSRC:.s=.o) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Thumb interwork enabled only if needed because it kills performance. -ifneq ($(TSRC),) - CPFLAGS += -D THUMB_PRESENT - ASFLAGS += -D THUMB_PRESENT - ifneq ($(ASRC),) - # Mixed ARM and THUMB case. - CPFLAGS += -mthumb-interwork - LDFLAGS += -mthumb-interwork - else - # Pure THUMB case, THUMB C code cannot be called by ARM asm code directly. - CPFLAGS += -mno-thumb-interwork -D THUMB_NO_INTERWORKING - LDFLAGS += -mno-thumb-interwork -mthumb - ASFLAGS += -D THUMB_NO_INTERWORKING - endif -else - CPFLAGS += -mno-thumb-interwork - LDFLAGS += -mno-thumb-interwork -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# - -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(AOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(AOPT) -I . $(INCDIR) $< -o $@ - -$(TOBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) $(TOPT) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(AOBJS) $(TOBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(ASRC:.c=.c.bak) - -rm -f $(ASRC:.c=.lst) - -rm -f $(TSRC:.c=.c.bak) - -rm -f $(TSRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) - -# *** EOF *** diff --git a/demos/ARMCM3-STM32F103-GCC/Makefile b/demos/ARMCM3-STM32F103-GCC/Makefile index 12a819086..2fd02d7f5 100644 --- a/demos/ARMCM3-STM32F103-GCC/Makefile +++ b/demos/ARMCM3-STM32F103-GCC/Makefile @@ -1,44 +1,75 @@ +############################################################################## +# Build global options +# NOTE: Can be overridden externally. # -# !!!! Do NOT edit this makefile with an editor which replace tabs by spaces !!!! -# -############################################################################################## -# -# On command line: -# -# make all = Create project -# -# make clean = Clean project files. + +# Compiler options here. +ifeq ($(USE_OPT),) + USE_OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 +endif + +# Enable this if you want the linker to remove unused code and data +ifeq ($(LINK_GC),) + USE_LINK_GC = yes +endif + +# Enable register caching optimization (read documentation). +ifeq ($(USE_CURRP_CACHING),) + USE_CURRP_CACHING = no +endif + +# Enable this if you really want to use the STM FWLib. +ifeq ($(USE_FWLIB),) + USE_FWLIB = no +endif + # -# To rebuild project do "make clean" and "make all". +# Build global options +############################################################################## + +############################################################################## +# Project, sources and paths # -############################################################################################## -# OS, compiler and demo options +# Define project name here +PROJECT = ch -# Compiler options here -OPT = -O2 -ggdb -fomit-frame-pointer -mabi=apcs-gnu -falign-functions=16 +# Define linker script file here +LDSCRIPT= ch.ld -# Enable this if you want the linker to remove unused code and data -LINK_GC = yes +# Imported source files +include ../../src/kernel.mk +include ../../test/test.mk -# Enable this if you really want to use the STM FWLib. ChibiOS/RT does not -# require it and does not support the library except for this Makefile option. -USE_FWLIB = no +# Sources that can be compiled in ARM or THUMB mode depending on the global +# setting. +SRC = ../../ports/ARMCM3/chcore.c \ + ../../ports/ARMCM3/nvic.c \ + ../../ports/ARMCM3-STM32F103/stm32_serial.c \ + ${KERNSRC} \ + ${TESTSRC} \ + ../../src/lib/evtimer.c \ + board.c main.c -# Enable register caching optimization. This option greatly improves both -# code size and execution speed but is incompatible with libraries compiled -# without the very same options. The register R7 becomes a global variable -# and MUST NOT be used anywhere in the code. -USE_CURRP_CACHING = no +# List ASM source files here +ASMSRC = ../../ports/ARMCM3/crt0.s \ + ../../ports/ARMCM3-STM32F103/vectors.s +INCDIR = $(KERNINC) $(TESTINC) \ + ../../src/lib \ + ../../ports/ARMCM3 \ + ../../ports/ARMCM3-STM32F103 \ + ./stm32lib/inc # -# End of OS and demo options -############################################################################################## +# Project, sources and paths +############################################################################## -############################################################################################## -# Start of default section +############################################################################## +# Compiler settings # +MCU = cortex-m3 + #TRGT = arm-none-eabi- #TRGT = arm-eabi- TRGT = arm-elf- @@ -49,7 +80,16 @@ OD = $(TRGT)objdump HEX = $(CP) -O ihex BIN = $(CP) -O binary -MCU = cortex-m3 +# Define warning options here +WARN = -Wall -Wstrict-prototypes + +# +# Compiler settings +############################################################################## + +############################################################################## +# Start of default section +# # List all default C defines here, like -D_DEBUG=1 DDEFS = @@ -68,9 +108,9 @@ DLIBS = # # End of default section -############################################################################################## +############################################################################## -############################################################################################## +############################################################################## # Start of user section # @@ -86,32 +126,8 @@ UDEFS = # Define ASM defines here UADEFS = -# Imported source files -include ../../src/kernel.mk -include ../../test/test.mk -ifeq ($(USE_FWLIB),yes) -include ./stm32lib/stm32lib.mk -endif - -# List ARM-mode C source files here -SRC = ../../ports/ARMCM3/chcore.c ../../ports/ARMCM3/nvic.c \ - ../../ports/ARMCM3-STM32F103/stm32_serial.c \ - ${KERNSRC} \ - ${TESTSRC} \ - ../../src/lib/evtimer.c \ - board.c main.c - -ifeq ($(USE_FWLIB),yes) -SRC += ${STM32SRC} -endif - -# List ASM source files here -ASMSRC = ../../ports/ARMCM3/crt0.s ../../ports/ARMCM3-STM32F103/vectors.s - # List all user directories here -UINCDIR = ../../src/include ../../src/lib ../../test \ - ../../ports/ARMCM3 ../../ports/ARMCM3-STM32F103 \ - ./stm32lib/inc +UINCDIR = # List the user directory to look for the libraries here ULIBDIR = @@ -119,91 +135,8 @@ ULIBDIR = # List all user libraries here ULIBS = -# Define warning options here -WARN = -Wall -Wstrict-prototypes - # # End of user defines -############################################################################################## - -ifeq ($(USE_CURRP_CACHING),yes) -OPT += -ffixed-r7 -DCH_CURRP_REGISTER_CACHE='"r7"' -endif - -ifeq ($(USE_FWLIB),yes) -# The thing generates a lot of aliasing warnings, this disables an optimization -# and the warning disappears, the code is a bit larger however. -OPT += -fno-strict-aliasing -endif - -ifeq ($(LINK_GC),yes) - OPT += -ffunction-sections -fdata-sections -endif - -INCDIR = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -LIBDIR = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -DEFS = $(DDEFS) $(UDEFS) -ADEFS = $(DADEFS) $(UADEFS) -COBJS = $(SRC:.c=.o) -ASMOBJS = $(ASMSRC:.s=.o) -OBJS = $(ASMOBJS) $(COBJS) -LIBS = $(DLIBS) $(ULIBS) -MCFLAGS = -mcpu=$(MCU) -mthumb - -ODFLAGS = -x --syms -ASFLAGS = $(MCFLAGS) -Wa,-amhls=$(<:.s=.lst) $(ADEFS) -CPFLAGS = $(MCFLAGS) $(OPT) $(WARN) -Wa,-alms=$(<:.c=.lst) $(DEFS) -ifeq ($(LINK_GC),yes) - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch,--gc-sections $(LIBDIR) -else - LDFLAGS = $(MCFLAGS) -nostartfiles -T$(LDSCRIPT) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch $(LIBDIR) -endif - -# Generate dependency information -CPFLAGS += -MD -MP -MF .dep/$(@F).d - -# -# Makefile rules -# -all: $(OBJS) $(PROJECT).elf $(PROJECT).hex $(PROJECT).bin $(PROJECT).dmp - -$(COBJS) : %.o : %.c - @echo - $(CC) -c $(CPFLAGS) -I . $(INCDIR) $< -o $@ - -$(ASMOBJS) : %.o : %.s - @echo - $(AS) -c $(ASFLAGS) -I . $(INCDIR) $< -o $@ - -%elf: $(OBJS) - @echo - $(CC) $(ASMOBJS) $(COBJS) $(LDFLAGS) $(LIBS) -o $@ - -%hex: %elf - $(HEX) $< $@ - -%bin: %elf - $(BIN) $< $@ - -%dmp: %elf - $(OD) $(ODFLAGS) $< > $@ - -clean: - -rm -f $(OBJS) - -rm -f $(PROJECT).elf - -rm -f $(PROJECT).dmp - -rm -f $(PROJECT).map - -rm -f $(PROJECT).hex - -rm -f $(PROJECT).bin - -rm -f $(SRC:.c=.c.bak) - -rm -f $(SRC:.c=.lst) - -rm -f $(ASMSRC:.s=.s.bak) - -rm -f $(ASMSRC:.s=.lst) - -rm -fR .dep - -# -# Include the dependency files, should be the last of the makefile -# --include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) +############################################################################## -# *** EOF *** +include ../../ports/ARMCM3/rules.mk -- cgit v1.2.3