summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorNicolas Schodet2015-10-07 11:06:21 +0200
committerNicolas Schodet2019-10-07 00:44:50 +0200
commit3c14e95166da27c3a9c6a1d800edf514589372f1 (patch)
tree24a3ea6119ec26088273ea647e9a977937d1833c /build
parent70bdcfef7a72d30951f2be1c8bb30a7ee6ded007 (diff)
build: add source specific variable assignment
Diffstat (limited to 'build')
-rw-r--r--build/arch.mk22
-rw-r--r--build/host.mk14
-rw-r--r--build/macros.mk9
-rw-r--r--build/stm32.mk20
-rw-r--r--build/stm32f1.mk8
-rw-r--r--build/stm32f4.mk8
-rw-r--r--build/top.mk10
7 files changed, 50 insertions, 41 deletions
diff --git a/build/arch.mk b/build/arch.mk
index 8f6142d..33b8379 100644
--- a/build/arch.mk
+++ b/build/arch.mk
@@ -6,18 +6,18 @@
# Define standard commands.
define arch_cmds
-$1_TARGET_DEFS := -DTARGET_$1=1 $$($1_SUBTARGETS:%=-DTARGET_%=1)
+$1_TARGET_DEFS = -DTARGET_$1=1 $$($1_SUBTARGETS:%=-DTARGET_%=1)
$1_CPPFLAGS += $$($1_TARGET_DEFS)
-$1_CC := $$($1_PREFIX)gcc
-$1_CXX := $$($1_PREFIX)g++
-$1_OBJCOPY := $$($1_PREFIX)objcopy
-$1_OBJDUMP := $$($1_PREFIX)objdump
-$1_SIZE := $$($1_PREFIX)size
-$1_COMPILE.c := $$($1_CC) $$($1_CFLAGS) $$($1_CPPFLAGS) -c
-$1_COMPILE.cc := $$($1_CXX) $$($1_CXXFLAGS) $$($1_CPPFLAGS) -c
-$1_COMPILE.S := $$($1_CC) $$($1_ASFLAGS) $$($1_CPPFLAGS) -c
-$1_LINK.c := $$($1_CC) $$($1_CFLAGS) $$($1_LDFLAGS)
-$1_LINK.cc := $$($1_CXX) $$($1_CXXFLAGS) $$($1_LDFLAGS)
+$1_CC = $$($1_PREFIX)gcc
+$1_CXX = $$($1_PREFIX)g++
+$1_OBJCOPY = $$($1_PREFIX)objcopy
+$1_OBJDUMP = $$($1_PREFIX)objdump
+$1_SIZE = $$($1_PREFIX)size
+$1_COMPILE.c = $$($1_CC) $$($1_CFLAGS) $$($1_CPPFLAGS) -c
+$1_COMPILE.cc = $$($1_CXX) $$($1_CXXFLAGS) $$($1_CPPFLAGS) -c
+$1_COMPILE.S = $$($1_CC) $$($1_ASFLAGS) $$($1_CPPFLAGS) -c
+$1_LINK.c = $$($1_CC) $$($1_CFLAGS) $$($1_LDFLAGS)
+$1_LINK.cc = $$($1_CXX) $$($1_CXXFLAGS) $$($1_LDFLAGS)
endef
diff --git a/build/host.mk b/build/host.mk
index 89a22b9..70a3a44 100644
--- a/build/host.mk
+++ b/build/host.mk
@@ -2,13 +2,13 @@
#
# Rules for Host.
-host_CPPFLAGS := $(CPPFLAGS) $(host_DEFS)
-host_CFLAGS := $(CFLAGS) -Wl,--gc-sections -ffunction-sections
-host_CXXFLAGS := $(sort $(host_CFLAGS) $(CXXFLAGS))
-host_ASFLAGS := $(ASFLAGS)
-host_LDFLAGS := $(LDFLAGS)
-host_LDLIBS := $(LDLIBS) $(host_LIBS)
-host_RUN :=
+host_CPPFLAGS = $(CPPFLAGS) $(host_DEFS)
+host_CFLAGS = $(CFLAGS) -Wl,--gc-sections -ffunction-sections
+host_CXXFLAGS = $(sort $(host_CFLAGS) $(CXXFLAGS))
+host_ASFLAGS = $(ASFLAGS)
+host_LDFLAGS = $(LDFLAGS)
+host_LDLIBS = $(LDLIBS) $(host_LIBS)
+host_RUN =
$(eval $(call arch_cmds,host))
diff --git a/build/macros.mk b/build/macros.mk
index f06e9b3..cd8347c 100644
--- a/build/macros.mk
+++ b/build/macros.mk
@@ -35,3 +35,12 @@ mkdir_if_needed = $(if $(wildcard $(dir $1)),,$Qmkdir -p $(dir $1))
# $(call rmdir_as_needed,DIRS,ROOT)
rmdir_as_needed = $Qrmdir $(call reverse,$(sort $(call parents,$1,$2))) \
$2 2>/dev/null || true
+
+# Emit a source specific variable assignment.
+# $(call source_specific,MODULE,SOURCES,VAR=value)
+define source_specific_sub
+$(foreach target,$(TARGETS),\
+ $(patsubst %,$(OBJDIR)/%.$(target).o,\
+ $(addprefix $1/,$(basename $2)))): $3
+endef
+source_specific = $(eval $(call source_specific_sub,$1,$2,$3))
diff --git a/build/stm32.mk b/build/stm32.mk
index cd2f549..79a4c17 100644
--- a/build/stm32.mk
+++ b/build/stm32.mk
@@ -16,30 +16,30 @@ ifneq ($$(LIBOPENCM3_PATH),)
$$(LIBOPENCM3_PATH) or change LIBOPENCM3_PATH (you can set it to \
empty string to use system library))
endif
- $1_LIBOPENCM3_CPPFLAGS := -I$$(LIBOPENCM3_PATH)/include
- $1_LIBOPENCM3_LDFLAGS := -L$$(LIBOPENCM3_PATH)/lib
+ $1_LIBOPENCM3_CPPFLAGS = -I$$(LIBOPENCM3_PATH)/include
+ $1_LIBOPENCM3_LDFLAGS = -L$$(LIBOPENCM3_PATH)/lib
endif
endef
# Define flags.
-stm32_cortex-m3_CPU_CFLAGS := \
+stm32_cortex-m3_CPU_CFLAGS = \
-mthumb -mcpu=cortex-m3
-stm32_cortex-m4_CPU_CFLAGS := \
+stm32_cortex-m4_CPU_CFLAGS = \
-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
define stm32_flags
-$1_CPPFLAGS := $$(CPPFLAGS) $$($1_DEFS) \
+$1_CPPFLAGS = $$(CPPFLAGS) $$($1_DEFS) \
$$($1_STM32_DEFS) $$($1_LIBOPENCM3_CPPFLAGS)
-$1_CFLAGS := $$(CFLAGS) \
+$1_CFLAGS = $$(CFLAGS) \
$$(stm32_$$($1_CPU)_CPU_CFLAGS) \
-Wl,--gc-sections -ffunction-sections
-$1_CXXFLAGS := $$(sort $$($1_CFLAGS) $$(CXXFLAGS))
-$1_ASFLAGS := $$(ASFLAGS)
+$1_CXXFLAGS = $$(sort $$($1_CFLAGS) $$(CXXFLAGS))
+$1_ASFLAGS = $$(ASFLAGS)
$1_LDSCRIPT ?= $(if $2,$2,$1).ld
$1_LDSCRIPT_PATH ?= $$(UCOO_BASE)/ucoo/arch/$(if $2,$2,$1)
-$1_LDFLAGS := $$(LDFLAGS) -T$$($1_LDSCRIPT) -L$$($1_LDSCRIPT_PATH) \
+$1_LDFLAGS = $$(LDFLAGS) -T$$($1_LDSCRIPT) -L$$($1_LDSCRIPT_PATH) \
$$($1_LIBOPENCM3_LDFLAGS)
-$1_LDLIBS := -nostartfiles $$(LDLIBS) $$($1_LIBS) \
+$1_LDLIBS = -nostartfiles $$(LDLIBS) $$($1_LIBS) \
-lopencm3_$(if $2,$2,$1)
endef
diff --git a/build/stm32f1.mk b/build/stm32f1.mk
index 93ef9ab..cb9410f 100644
--- a/build/stm32f1.mk
+++ b/build/stm32f1.mk
@@ -6,14 +6,14 @@ include $(UCOO_BASE)/build/stm32.mk
$(eval $(call stm32_libopencm3,stm32f1))
-stm32f1_SUBTARGETS := stm32 arm newlib
+stm32f1_SUBTARGETS = stm32 arm newlib
-stm32f1_CPU := cortex-m3
-stm32f1_STM32_DEFS := -DSTM32F1
+stm32f1_CPU = cortex-m3
+stm32f1_STM32_DEFS = -DSTM32F1
$(eval $(call stm32_flags,stm32f1))
-stm32f1_PREFIX := arm-none-eabi-
+stm32f1_PREFIX = arm-none-eabi-
$(eval $(call arch_cmds,stm32f1))
stm32f1_ELF_SUFFIX = .elf
diff --git a/build/stm32f4.mk b/build/stm32f4.mk
index cf110c6..8d0aa67 100644
--- a/build/stm32f4.mk
+++ b/build/stm32f4.mk
@@ -6,14 +6,14 @@ include $(UCOO_BASE)/build/stm32.mk
$(eval $(call stm32_libopencm3,stm32f4))
-stm32f4_SUBTARGETS := stm32 arm newlib
+stm32f4_SUBTARGETS = stm32 arm newlib
-stm32f4_CPU := cortex-m4
-stm32f4_STM32_DEFS := -DSTM32F4
+stm32f4_CPU = cortex-m4
+stm32f4_STM32_DEFS = -DSTM32F4
$(eval $(call stm32_flags,stm32f4))
-stm32f4_PREFIX := arm-none-eabi-
+stm32f4_PREFIX = arm-none-eabi-
$(eval $(call arch_cmds,stm32f4))
stm32f4_ELF_SUFFIX = .elf
diff --git a/build/top.mk b/build/top.mk
index cdc04f9..0aa6698 100644
--- a/build/top.mk
+++ b/build/top.mk
@@ -16,13 +16,13 @@ include $(UCOO_BASE)/build/macros.mk
OBJDIR := obj
INCLUDES := $(INCLUDES) -I$(UCOO_BASE) -I$(BASE) -I$(OBJDIR)
-CPPFLAGS := $(DEFS) $(INCLUDES) -MP -MMD
+CPPFLAGS = $(DEFS) $(INCLUDES) -MP -MMD
OPTIMIZE ?= -Os
-CFLAGS := -g3 -Wall -W -Wundef -Wno-unused-parameter \
+CFLAGS = -g3 -Wall -W -Wundef -Wno-unused-parameter \
-fno-exceptions $(OPTIMIZE)
-CXXFLAGS := $(CFLAGS) -fno-rtti -fno-threadsafe-statics -std=gnu++11 -Wno-deprecated-declarations
-LDFLAGS :=
-LDLIBS := $(LIBS)
+CXXFLAGS = $(CFLAGS) -fno-rtti -fno-threadsafe-statics -std=gnu++11 -Wno-deprecated-declarations
+LDFLAGS =
+LDLIBS = $(LIBS)
# Quiet, unset to see executed lines.
Q = @