scripts: move to buildtools
[dpdk.git] / mk / rte.sdkconfig.mk
index 564a5c3..97581c9 100644 (file)
@@ -42,6 +42,13 @@ showversion:
                        else echo $$(($$5 - 16)); fi; \
                fi
 
+.PHONY: showversionum
+showversionum:
+       @set -- \
+               $$(sed -rne 's,^#define RTE_VER_[A-Z_]*[[:space:]]+([0-9]+).*,\1,p' \
+                       $(RTE_SRCDIR)/lib/librte_eal/common/include/rte_version.h); \
+               printf '%02d%02d\n' "$$1" "$$2"
+
 INSTALL_CONFIGS := $(sort $(filter-out %~,\
        $(patsubst $(RTE_SRCDIR)/config/defconfig_%,%,\
        $(wildcard $(RTE_SRCDIR)/config/defconfig_*))))
@@ -72,11 +79,22 @@ $(RTE_OUTPUT):
 ifdef NODOTCONF
 $(RTE_OUTPUT)/.config: ;
 else
+# Generate config from template, if there are duplicates keep only the last.
+# To do so the temp config is checked for duplicate keys with cut/sort/uniq
+# Then for each of those identified duplicates as long as there are more than
+# just one left the last match is removed.
 $(RTE_OUTPUT)/.config: $(RTE_CONFIG_TEMPLATE) FORCE | $(RTE_OUTPUT)
        $(Q)if [ "$(RTE_CONFIG_TEMPLATE)" != "" -a -f "$(RTE_CONFIG_TEMPLATE)" ]; then \
                $(CPP) -undef -P -x assembler-with-cpp \
                -ffreestanding \
                -o $(RTE_OUTPUT)/.config_tmp $(RTE_CONFIG_TEMPLATE) ; \
+               config=$$(cat $(RTE_OUTPUT)/.config_tmp) ; \
+               echo "$$config" | awk -F '=' 'BEGIN {i=1} \
+                       /^#/ {pos[i++]=$$0} \
+                       !/^#/ {if (!s[$$1]) {pos[i]=$$0; s[$$1]=i++} \
+                               else {pos[s[$$1]]=$$0}} END \
+                       {for (j=1; j<i; j++) print pos[j]}' \
+                       > $(RTE_OUTPUT)/.config_tmp ; \
                if ! cmp -s $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config; then \
                        cp $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config ; \
                        cp $(RTE_OUTPUT)/.config_tmp $(RTE_OUTPUT)/.config.orig ; \
@@ -89,22 +107,22 @@ endif
 
 # generate a Makefile for this build directory
 # use a relative path so it will continue to work even if we move the directory
-SDK_RELPATH=$(shell $(RTE_SDK)/scripts/relpath.sh $(abspath $(RTE_SRCDIR)) \
+SDK_RELPATH=$(shell $(RTE_SDK)/buildtools/relpath.sh $(abspath $(RTE_SRCDIR)) \
                                $(abspath $(RTE_OUTPUT)))
-OUTPUT_RELPATH=$(shell $(RTE_SDK)/scripts/relpath.sh $(abspath $(RTE_OUTPUT)) \
+OUTPUT_RELPATH=$(shell $(RTE_SDK)/buildtools/relpath.sh $(abspath $(RTE_OUTPUT)) \
                                $(abspath $(RTE_SRCDIR)))
 $(RTE_OUTPUT)/Makefile: | $(RTE_OUTPUT)
-       $(Q)$(RTE_SDK)/scripts/gen-build-mk.sh $(SDK_RELPATH) $(OUTPUT_RELPATH) \
+       $(Q)$(RTE_SDK)/buildtools/gen-build-mk.sh $(SDK_RELPATH) $(OUTPUT_RELPATH) \
                > $(RTE_OUTPUT)/Makefile
 
 # clean installed files, and generate a new config header file
 # if NODOTCONF variable is defined, don't try to rebuild .config
 $(RTE_OUTPUT)/include/rte_config.h: $(RTE_OUTPUT)/.config
        $(Q)rm -rf $(RTE_OUTPUT)/include $(RTE_OUTPUT)/app \
-               $(RTE_OUTPUT)/hostapp $(RTE_OUTPUT)/lib \
+               $(RTE_OUTPUT)/lib \
                $(RTE_OUTPUT)/hostlib $(RTE_OUTPUT)/kmod $(RTE_OUTPUT)/build
        $(Q)mkdir -p $(RTE_OUTPUT)/include
-       $(Q)$(RTE_SDK)/scripts/gen-config-h.sh $(RTE_OUTPUT)/.config \
+       $(Q)$(RTE_SDK)/buildtools/gen-config-h.sh $(RTE_OUTPUT)/.config \
                > $(RTE_OUTPUT)/include/rte_config.h
 
 # generate the rte_config.h