Now each project can have its own EMBEDDED_TGT variable to be compiled in embedded...
authorbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 24 Jun 2008 16:31:55 +0000 (16:31 +0000)
committerbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 24 Jun 2008 16:31:55 +0000 (16:31 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1484 38d2e660-2303-0410-9eaa-f027e97ec537

app/at91sam7s/at91sam7s.mk
app/demo/demo.mk
app/triface/triface.mk
bertos/config.mk
bertos/rules.mk

index 81bc4c2b4316609ca9a5d0c6535fe6985f7e8706..5cb34b68d34c4f8bff2130c9bb7158fe28bf31f6 100644 (file)
@@ -12,6 +12,9 @@
 # Set to 1 for debug builds
 at91sam7s_DEBUG = 1
 
+#This is an embedded project
+at91sam7s_EMBEDDED_TGT = 1
+
 # Our target application
 TRG += at91sam7s
 
index f9dbd8186fa932ac4530f562879b629300d0abb5..7bf46ae538e2339efa40c2d74c46059c5c4bde7d 100644 (file)
@@ -11,6 +11,9 @@
 include bertos/fonts/fonts.mk
 include bertos/emul/emul.mk
 
+#Demo application is hosted
+demo_EMBEDDED_TGT = 0
+
 # Set to 1 for debug builds
 demo_DEBUG = 1
 
index 9cf4fed620164094261cb4a20fd9b44574dafc89..e3792be55d5c82cfe1e2ac027016bef9dd17b3e8 100644 (file)
@@ -9,6 +9,8 @@
 #
 #
 
+# This is an embedded project
+triface_EMBEDDED_TGT = 1
 
 # Set to 1 for debug builds
 triface_DEBUG = 1
index b21b2c1f96210576eff3606c293eabee5a6797b3..8151259453ee29f69d42013215b84ec84be2b1cc 100644 (file)
 -include pgm_config.mk
 DPROG ?= -V -c stk500 -P /dev/ttyS0
 
-# Set to 1 to build for embedded devices.
-# e.g. produce target.elf instead of target and target_nostrip
-#EMBEDDED_TARGET = 1
-EMBEDDED_TARGET = 0
-
 OPTCFLAGS = -ffunction-sections -fdata-sections
 #OPTCFLAGS = -funsafe-loop-optimizations
 
@@ -74,11 +69,9 @@ DEP_FLAGS = -MMD -MP
 LIST_FLAGS = -Wa,-anhlmsd=$(@:.o=.lst)
 
 # Linker flags for generating map files
-ifeq ($(EMBEDDED_TARGET), 1)
-MAP_FLAGS = -Wl,-Map=$(@:%.elf=%.map),--cref
-else
-MAP_FLAGS =
-endif
+# Only in embedded related projects generate map files
+MAP_FLAGS_EMB = -Wl,-Map=$(@:%.elf=%.map),--cref
+MAP_FLAGS_HOST =
 
 # Compiler warning flags for both C and C++
 WARNFLAGS = \
@@ -113,7 +106,7 @@ ASFLAGS     = $(DEBUGCFLAGS)
 #LDFLAGS = $(MAP_FLAGS)
 
 #bernie: does not complain for missing symbols!
-LDFLAGS = $(MAP_FLAGS) -Wl,--gc-sections
+LDFLAGS = -Wl,--gc-sections
 
 # Flags for avrdude
 AVRDUDEFLAGS = $(DPROG)
index 153364945850863dc8ef72494514298c479dcae3..f62c5cd8a1e8158843217e52de2ba9fc91df4df9 100644 (file)
@@ -36,25 +36,16 @@ endif
 # Initialize $(top_srcdir) with current directory, unless it was already initialized
 top_srcdir ?= $(shell pwd)
 
-# Products
-TRG_ELF = $(TRG:%=$(OUTDIR)/%.elf)
-TRG_S19 = $(TRG:%=$(OUTDIR)/%.s19)
-TRG_HEX = $(TRG:%=$(OUTDIR)/%.hex)
-TRG_BIN = $(TRG:%=$(OUTDIR)/%.bin)
-TRG_ROM = $(TRG:%=$(OUTDIR)/%.rom)
-TRG_COF = $(TRG:%=$(OUTDIR)/%.cof)
-TRG_EXE = $(TRG:%=$(OUTDIR)/%)
-
+# Virtual Product: based on target products may be different.
+# e.g. Embedded target = hex, s19, bin
+#      Hosted = exe
+TRG_TGT = $(TRG:%=$(OUTDIR)/%.tgt)
 
 RECURSIVE_TARGETS = all-recursive install-recursive clean-recursive
 
 # The default target
 .PHONY: all
-ifeq ($(EMBEDDED_TARGET),1)
-all:: all-recursive $(TRG_S19) $(TRG_HEX) $(TRG_BIN)
-else
-all:: all-recursive $(TRG_EXE)
-endif
+all:: all-recursive $(TRG_TGT) 
 
 # Generate project documentation
 .PHONY: docs
@@ -76,6 +67,20 @@ check:
 
 define build_target
 
+ifeq ($$($(1)_EMBEDDED_TGT),1)
+#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
+#use hosted specific map flags
+$(1)_MAP_FLAGS = $$(MAP_FLAGS_HOST)
+#in hosted application we need only executable file.
+$$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1)
+endif
+
+$(1)_LDFLAGS += $$($(1)_MAP_FLAGS)
+
 ifneq ($$(strip $$($(1)_MCU)),)
 # Define all project specific object files
 $(1)_CFLAGS    += -mmcu=$$($(1)_MCU)