From: batt Date: Fri, 10 Apr 2009 13:07:04 +0000 (+0000) Subject: Refactor to not have toolchain in path; Now a specific flash project_HOSTED is needed... X-Git-Tag: 2.1.0~203 X-Git-Url: https://codewiz.org/gitweb?p=bertos.git;a=commitdiff_plain;h=fda30a7344dd7041a4594140f9986f18bd8c7f79 Refactor to not have toolchain in path; Now a specific flash project_HOSTED is needed to signal that the project must be compiled in hosted mode. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@2479 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/bertos/rules.mk b/bertos/rules.mk index e25d7359..fcf62f27 100644 --- a/bertos/rules.mk +++ b/bertos/rules.mk @@ -62,18 +62,13 @@ tags: # Run testsuite .PHONY: check -check: +check: $L "Running testsuite" $Q test/run_tests.sh define build_target -ifneq ($$($(1)_CROSS),) - #use embedded specific map flags - $(1)_MAP_FLAGS = $$(MAP_FLAGS_EMB) - #In embedded we need s19, hex and bin - $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1).s19 $$(OUTDIR)/$(1).hex $$(OUTDIR)/$(1).bin -else +ifeq ($$($(1)_HOSTED),1) #On Darwin architecture the assembly doesn't link correctly if these flags are set. ifeq ($(shell uname | grep -c "Darwin"),1) LIST_FLAGS := "" @@ -90,12 +85,17 @@ else #Otherwise in hosted application we need only executable file. $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1) endif +else + #use embedded specific map flags + $(1)_MAP_FLAGS = $$(MAP_FLAGS_EMB) + #In embedded we need s19, hex and bin + $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1).s19 $$(OUTDIR)/$(1).hex $$(OUTDIR)/$(1).bin endif $(1)_LDFLAGS += $$($(1)_MAP_FLAGS) # In embedded systems the target CPU is needed, -# but there are different options on how pass +# but there are different options on how to pass # it to the compiler. ifneq ($$(strip $$($(1)_MCU)),) $(1)_MCPU = -mmcu=$$($(1)_MCU) @@ -104,7 +104,7 @@ ifneq ($$(strip $$($(1)_CPU)),) $(1)_MCPU = -mcpu=$$($(1)_CPU) endif -# If a CPU is specified add to +# If a CPU is specified add to # project specific flags. ifneq ($$($(1)_MCPU),) $(1)_CFLAGS += $$($(1)_MCPU) @@ -118,12 +118,30 @@ ifneq ($$(strip $$($(1)_LDSCRIPT)),) $(1)_LDFLAGS += -Wl,-T$$($(1)_LDSCRIPT) endif +ifneq ($$($(1)_CROSS),) + #deprecated: use PREFIX, SUFFIX and HOSTED mechanism instead + $(1)_PREFIX = $$($(1)_CROSS) + $(1)_SUFFIX = "" +endif + +$(1)_CC ?= $$($(1)_PREFIX)$$(CC)$$($(1)_SUFFIX) +$(1)_CXX ?= $$($(1)_PREFIX)$$(CXX)$$($(1)_SUFFIX) +$(1)_AS ?= $$($(1)_PREFIX)$$(AS)$$($(1)_SUFFIX) +$(1)_AR ?= $$($(1)_PREFIX)$$(AR)$$($(1)_SUFFIX) +$(1)_OBJCOPY ?= $$($(1)_PREFIX)$$(OBJCOPY)$$($(1)_SUFFIX) +$(1)_STRIP ?= $$($(1)_PREFIX)$$(STRIP)$$($(1)_SUFFIX) +ifneq ($$(strip $$($(1)_CXXSRC)),) + $(1)_LD = $$($(1)_PREFIX)$$(LDXX)$$($(1)_SUFFIX) +else + $(1)_LD = $$($(1)_PREFIX)$$(LD)$$($(1)_SUFFIX) +endif + # Debug stuff ifeq ($$($(1)_DEBUG),1) # AVR is an harvard processor # and needs debug module # to be compiled in program memory - ifeq ($$(findstring avr, $$($(1)_CROSS)),avr) + ifeq ($$(findstring avr, $$($(1)_PREFIX)),avr) $(1)_DEBUGSRC = $(1)_PCSRC else $(1)_DEBUGSRC = $(1)_CSRC @@ -136,17 +154,15 @@ ifeq ($$($(1)_DEBUG),1) $$($(1)_DEBUGSRC) += bertos/mware/formatwr.c endif - $(1)_CFLAGS += -D_DEBUG + # Also add hex.c (for printf) if not already present + ifneq ($$(findstring hex.c, $$($$($(1)_CSRC))),hex.c) + $$($(1)_CSRC) += bertos/mware/hex.c + endif + + $(1)_CFLAGS += -D_DEBUG $(1)_CXXFLAGS += -D_DEBUG endif -$(1)_CC ?= $$($(1)_CROSS)$$(CC) -$(1)_CXX ?= $$($(1)_CROSS)$$(CXX) -$(1)_AS ?= $$($(1)_CROSS)$$(AS) -$(1)_AR ?= $$($(1)_CROSS)$$(AR) -$(1)_OBJCOPY ?= $$($(1)_CROSS)$$(OBJCOPY) -$(1)_STRIP ?= $$($(1)_CROSS)$$(STRIP) - $(1)_COBJ = $$(foreach file,$$($(1)_CSRC:%.c=%.o),$$(OBJDIR)/$(1)/$$(file)) $(1)_CXXOBJ = $$(foreach file,$$($(1)_CXXSRC:%.cpp=%.o),$$(OBJDIR)/$(1)/$$(file)) $(1)_PCOBJ = $$(foreach file,$$($(1)_PCSRC:%.c=%_P.o),$$(OBJDIR)/$(1)/$$(file)) @@ -156,12 +172,6 @@ $(1)_OBJ := $$($(1)_COBJ) $$($(1)_CXXOBJ) $$($(1)_PCOBJ) $$($(1)_AOBJ) $$($(1 $(1)_SRC := $$($(1)_CSRC) $$($(1)_CXXSRC) $$($(1)_PCSRC) $$($(1)_ASRC) $$($(1)_CPPASRC) OBJ += $$($(1)_OBJ) -ifneq ($$(strip $$($(1)_CXXSRC)),) -$(1)_LD = $$($(1)_CROSS)$$(LDXX) -else -$(1)_LD = $$($(1)_CROSS)$$(LD) -endif - # Sometimes $(CC) is actually set to a C++ compiler in disguise, and it # would whine if we passed it C-only flags. Checking for the presence of # "++" in the name is a kludge that seems to work mostly. diff --git a/examples/at91sam7s/at91sam7s.mk b/examples/at91sam7s/at91sam7s.mk index f7d2a9d9..86c3180a 100644 --- a/examples/at91sam7s/at91sam7s.mk +++ b/examples/at91sam7s/at91sam7s.mk @@ -35,7 +35,7 @@ at91sam7s_CPPASRC = \ bertos/cpu/arm/hw/crtat91sam7_rom.S \ bertos/cpu/arm/hw/switch_arm.S -at91sam7s_CROSS = arm-none-eabi- +at91sam7s_PREFIX = arm-none-eabi- at91sam7s_CPPAFLAGS = -O0 -g -gdwarf-2 -g -gen-debug at91sam7s_CPPFLAGS = -O0 -D'ARCH=0' -D__ARM_AT91SAM7S256__ -g3 -gdwarf-2 -fverbose-asm -Iexamples/at91sam7s/hw -Iexamples/at91sam7s -Ibertos/cpu/arm diff --git a/examples/demo/demo.mk b/examples/demo/demo.mk index cec05508..d2588fd4 100644 --- a/examples/demo/demo.mk +++ b/examples/demo/demo.mk @@ -14,6 +14,9 @@ include bertos/emul/emul.mk # Set to 1 for debug builds demo_DEBUG = 1 +# This is an hosted application +demo_HOSTED = 1 + # Our target application TRG += demo diff --git a/examples/lm3s1968/lm3s1968.mk b/examples/lm3s1968/lm3s1968.mk index bf516125..10025e2c 100644 --- a/examples/lm3s1968/lm3s1968.mk +++ b/examples/lm3s1968/lm3s1968.mk @@ -20,8 +20,8 @@ lm3s1968_CSRC = \ examples/lm3s1968/lm3s1968.c \ #bertos/cpu/cortex-m3/startup_lm3s.c - -lm3s1968_CROSS = arm-none-eabi- +# This is an hosted application +lm3s1968_PREFIX = arm-none-eabi- lm3s1968_CPPAFLAGS = -O0 -g -gdwarf-2 -g -gen-debug -mthumb lm3s1968_CPPFLAGS = -O0 -D'ARCH=0' -D__ARM_LM3S1968__ -g3 -gdwarf-2 -fverbose-asm -mthumb -Iexamples/lm3s1968 -Ibertos/cpu/cortex-m3 diff --git a/examples/randpool/randpool_demo.mk b/examples/randpool/randpool_demo.mk index 680f3cff..4c0d738d 100644 --- a/examples/randpool/randpool_demo.mk +++ b/examples/randpool/randpool_demo.mk @@ -17,6 +17,8 @@ # Set to 1 for debug builds randpool_demo_DEBUG = 0 +randpool_demo_HOSTED = 1 + # Our target application TRG += randpool_demo @@ -25,7 +27,7 @@ randpool_demo_CSRC = \ algos/randpool.c \ algos/md2.c \ drv/timer.c \ - os/hptime.c + os/hptime.c randpool_demo_CFLAGS = -O0 -D'ARCH=0' -Iexamples/randpool/ -Iexamples/randpool/hw diff --git a/examples/test/armtest.mk b/examples/test/armtest.mk index 06a643cc..9d2bc1aa 100644 --- a/examples/test/armtest.mk +++ b/examples/test/armtest.mk @@ -22,7 +22,7 @@ armtest_CSRC = $(arm_CSRC) examples/test/empty_main.c armtest_CPPASRC = $(arm_ASRC) -armtest_CROSS = arm-none-eabi- +armtest_PREFIX = arm-none-eabi- armtest_CPPAFLAGS = -O0 -g -gdwarf-2 -g -gen-debug armtest_CPPFLAGS = -O0 -D'ARCH=ARCH_NIGHTTEST' -D__ARM_AT91SAM7S256__ -g3 -gdwarf-2 -fverbose-asm -Iexamples/test -Ibertos/cpu/arm diff --git a/examples/test/avrtest.mk b/examples/test/avrtest.mk index dc72d83e..c2d3adb3 100644 --- a/examples/test/avrtest.mk +++ b/examples/test/avrtest.mk @@ -27,6 +27,6 @@ avrtest_CPPASRC = $(avr_ASRC) avrtest_PCSRC += bertos/mware/formatwr.c -avrtest_CROSS = avr- -avrtest_CPPFLAGS = -D'ARCH=ARCH_NIGHTTEST' -Iexamples/test -Ibertos/cpu/avr +avrtest_PREFIX = avr- +avrtest_CPPFLAGS = -D'ARCH=ARCH_NIGHTTEST' -Iexamples/test -Ibertos/cpu/avr avrtest_CFLAGS = -Os -mcall-prologues -fno-strict-aliasing diff --git a/examples/triface/triface.mk b/examples/triface/triface.mk index 85cb1edd..1ee8f4c8 100644 --- a/examples/triface/triface.mk +++ b/examples/triface/triface.mk @@ -17,7 +17,7 @@ TRG += triface CPU = atmega1281 BOOT_ADDR_START = 0x1E000 -triface_CROSS = avr- +triface_PREFIX = avr- ifeq ($(CPU), atmega1281) triface_hfuse = 0x98 @@ -77,7 +77,7 @@ boot_CSRC = \ bertos/mware/hex.c \ bertos/kern/kfile.c \ # -boot_CROSS = avr- +boot_PREFIX = avr- boot_CPPFLAGS = -D'ARCH=(ARCH_TRIFACE|ARCH_BOOT)' -Iexamples/triface/boot -Ibertos/cpu/avr boot_CFLAGS = -Os -mcall-prologues boot_LDFLAGS = -Wl,--relax -Wl,--section-start=.text=$(BOOT_ADDR_START)