mk: add sensible default target with defconfig
authorDavid Hunt <david.hunt@intel.com>
Fri, 4 Aug 2017 10:39:02 +0000 (11:39 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Sat, 5 Aug 2017 08:27:04 +0000 (10:27 +0200)
Users can now use 'make defconfig' to generate a configuration using
the most appropriate defaults for the current machine.

<arch-machine-execenv-toolchain>
  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 <david.hunt@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Tested-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
doc/build-sdk-quick.txt
mk/rte.sdkconfig.mk
mk/rte.sdkroot.mk

index 8d41052..2b5d493 100644 (file)
@@ -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
index 1f2d6bd..9736341 100644 (file)
@@ -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):
index 2843b7d..e2e3eff 100644 (file)
@@ -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