mk: optimize directory dependencies
[dpdk.git] / mk / rte.sdkconfig.mk
index e93237f..1f2d6bd 100644 (file)
@@ -69,7 +69,6 @@ ifeq ($(RTE_CONFIG_TEMPLATE),)
 config: notemplate
 else
 config: $(RTE_OUTPUT)/include/rte_config.h $(RTE_OUTPUT)/Makefile
-       $(Q)$(MAKE) depdirs
        @echo "Configuration done"
 endif
 
@@ -88,11 +87,13 @@ $(RTE_OUTPUT)/.config: $(RTE_CONFIG_TEMPLATE) FORCE | $(RTE_OUTPUT)
                $(CPP) -undef -P -x assembler-with-cpp \
                -ffreestanding \
                -o $(RTE_OUTPUT)/.config_tmp $(RTE_CONFIG_TEMPLATE) ; \
-               for config in $$(grep -v "^#" $(RTE_OUTPUT)/.config_tmp | cut -d"=" -f1 | sort | uniq -d); do \
-                       while [ $$(grep "^$${config}=" $(RTE_OUTPUT)/.config_tmp -c ) -gt 1 ]; do \
-                               sed -i "0,/^$${config}=/{//d}" $(RTE_OUTPUT)/.config_tmp; \
-                       done; \
-               done; \
+               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 ; \
@@ -105,12 +106,12 @@ 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
@@ -120,7 +121,7 @@ $(RTE_OUTPUT)/include/rte_config.h: $(RTE_OUTPUT)/.config
                $(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
@@ -138,7 +139,6 @@ checkconfig:
        fi
        $(Q)$(MAKE) -f $(RTE_SDK)/mk/rte.sdkconfig.mk \
                headerconfig NODOTCONF=1
-       $(Q)$(MAKE) -s depdirs
 
 .PHONY: FORCE
 FORCE: