From bce6c42c4ad5213126adcf13786642589750776f Mon Sep 17 00:00:00 2001 From: David Hunt Date: Fri, 4 Aug 2017 11:39:02 +0100 Subject: [PATCH] mk: add sensible default target with defconfig Users can now use 'make defconfig' to generate a configuration using the most appropriate defaults for the current machine. arch taken from uname -m machine defaults to native execenv is taken from uname, Linux=linuxapp, otherwise bsdapp toolchain is taken from $CC -v to see which compiler to use Signed-off-by: David Hunt Acked-by: Shreyansh Jain Tested-by: Jerin Jacob Acked-by: Thomas Monjalon --- doc/build-sdk-quick.txt | 3 +++ mk/rte.sdkconfig.mk | 28 +++++++++++++++++++++++++--- mk/rte.sdkroot.mk | 4 ++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/doc/build-sdk-quick.txt b/doc/build-sdk-quick.txt index 8d4105254f..2b5d4931fa 100644 --- a/doc/build-sdk-quick.txt +++ b/doc/build-sdk-quick.txt @@ -1,7 +1,10 @@ Basic build + make defconfig && make + or make config T=x86_64-native-linuxapp-gcc && make Build commands config get configuration from target template (T=) + defconfig auto-select target template based on arch, OS, etc. all same as build (default rule) build build in a configured directory clean remove files but keep configuration diff --git a/mk/rte.sdkconfig.mk b/mk/rte.sdkconfig.mk index 1f2d6bdfa0..97363416a7 100644 --- a/mk/rte.sdkconfig.mk +++ b/mk/rte.sdkconfig.mk @@ -60,16 +60,38 @@ showconfigs: .PHONY: notemplate notemplate: - @printf "No template specified. " - @echo "Use T=template among the following list:" + @printf "No template specified. Use 'make defconfig' or " + @echo "use T=template from the following list:" @$(MAKE) -rR showconfigs | sed 's,^, ,' + +.PHONY: defconfig +defconfig: + @$(MAKE) config T=$(shell \ + uname -m | awk '{ \ + if ($$0 == "aarch64") { \ + print "arm64-armv8a"} \ + else if ($$0 == "armv7l") { \ + print "arm-armv7a"} \ + else if ($$0 == "ppc64") { \ + print "ppc_64-power8"} \ + else { \ + printf "%s-native", $$0} }')-$(shell \ + uname | awk '{ \ + if ($$0 == "Linux") { \ + print "linuxapp"} \ + else { \ + print "bsdapp"} }')-$(shell \ + ${CC} -v 2>&1 | \ + grep " version " | cut -d ' ' -f 1) + .PHONY: config ifeq ($(RTE_CONFIG_TEMPLATE),) config: notemplate else config: $(RTE_OUTPUT)/include/rte_config.h $(RTE_OUTPUT)/Makefile - @echo "Configuration done" + @echo "Configuration done using" \ + $(patsubst defconfig_%,%,$(notdir $(RTE_CONFIG_TEMPLATE))) endif $(RTE_OUTPUT): diff --git a/mk/rte.sdkroot.mk b/mk/rte.sdkroot.mk index 2843b7de1e..e2e3effa84 100644 --- a/mk/rte.sdkroot.mk +++ b/mk/rte.sdkroot.mk @@ -88,8 +88,8 @@ export ROOTDIRS-y ROOTDIRS- ROOTDIRS-n .PHONY: default default: all -.PHONY: config showconfigs showversion showversionum -config showconfigs showversion showversionum: +.PHONY: config defconfig showconfigs showversion showversionum +config defconfig showconfigs showversion showversionum: $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk $@ .PHONY: cscope gtags tags etags -- 2.20.1