diff options
author | Nathaniel Graff <nathaniel.graff@sifive.com> | 2019-03-13 16:55:29 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-13 16:55:29 +0000 |
commit | a08201f87076002f585edac7e94b28c7ebf22cc1 (patch) | |
tree | 9ab34c83711fa9dff0b4719fc6a4b50bcd97af17 /scripts/libmetal.mk | |
parent | 97273d31d812b3ead12fa050fd90c03dafa4f26c (diff) | |
parent | 74fa7c2f23d7639781cf23101488d797cd06aec6 (diff) |
Merge pull request #200 from sifive/debugrelease
Support Debug/Release build configurations
Diffstat (limited to 'scripts/libmetal.mk')
-rw-r--r-- | scripts/libmetal.mk | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/scripts/libmetal.mk b/scripts/libmetal.mk index e00c9cf..b50c599 100644 --- a/scripts/libmetal.mk +++ b/scripts/libmetal.mk @@ -6,17 +6,22 @@ METAL_SOURCE_PATH ?= freedom-metal METAL_LDSCRIPT = $(BSP_DIR)/metal.lds METAL_HEADER = $(BSP_DIR)/metal.h +METAL_PREFIX = $(abspath $(BSP_DIR)/install) +METAL_BUILD_DIR = $(abspath $(BSP_DIR)/build/$(CONFIGURATION)) +METAL_LIB_DIR = $(abspath $(BSP_DIR)/install/lib/$(CONFIGURATION)) + .PHONY: metal -metal: $(BSP_DIR)/install/stamp +metal: $(METAL_LIB_DIR)/stamp -$(BSP_DIR)/build/Makefile: +$(METAL_BUILD_DIR)/Makefile: @rm -rf $(dir $@) @mkdir -p $(dir $@) cd $(dir $@) && \ - CFLAGS="-march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) -ffunction-sections -fdata-sections -g -mcmodel=$(RISCV_CMODEL)" \ + CFLAGS="$(RISCV_CFLAGS)" \ $(abspath $(METAL_SOURCE_PATH)/configure) \ --host=$(CROSS_COMPILE) \ - --prefix=$(abspath $(BSP_DIR)/install) \ + --prefix=$(METAL_PREFIX) \ + --libdir=$(METAL_LIB_DIR) \ --disable-maintainer-mode \ --with-preconfigured \ --with-machine-name=$(TARGET) \ @@ -25,22 +30,31 @@ $(BSP_DIR)/build/Makefile: --with-builtin-libgloss touch -c $@ -$(BSP_DIR)/install/stamp: $(BSP_DIR)/build/Makefile - $(MAKE) -C $(abspath $(BSP_DIR)/build) install +$(METAL_LIB_DIR)/stamp: $(BSP_DIR)/build/$(CONFIGURATION)/Makefile + $(MAKE) -C $(abspath $(BSP_DIR)/build/$(CONFIGURATION)) install date > $@ -$(BSP_DIR)/install/lib/libriscv%.a: $(BSP_DIR)/install/stamp ;@: +$(METAL_LIB_DIR)/libriscv%.a: $(METAL_LIB_DIR)/stamp ;@: -$(BSP_DIR)/install/lib/libmetal.a: $(BSP_DIR)/install/lib/libriscv__mmachine__$(TARGET).a +$(METAL_LIB_DIR)/libmetal.a: $(METAL_LIB_DIR)/libriscv__mmachine__$(TARGET).a cp $< $@ -$(BSP_DIR)/install/lib/libmetal-gloss.a: $(BSP_DIR)/install/lib/libriscv__menv__metal.a +$(METAL_LIB_DIR)/libmetal-gloss.a: $(METAL_LIB_DIR)/libriscv__menv__metal.a cp $< $@ +# If we're cleaning the last Metal library for a TARGET, then remove +# the install directory, otherwise just remove the built libs for that +# CONFIGURATION. +ifeq ($(words $(wildcard $(METAL_PREFIX)/lib/*)),1) +METAL_CLEAN = $(METAL_PREFIX) +else +METAL_CLEAN = $(METAL_LIB_DIR) +endif + .PHONY: clean-metal clean-metal: - rm -rf $(BSP_DIR)/install - rm -rf $(BSP_DIR)/build + rm -rf $(METAL_CLEAN) + rm -rf $(METAL_BUILD_DIR) clean: clean-metal metal_install: metal |