summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2017-02-06 11:29:53 +0000
committerPeter Maydell <peter.maydell@linaro.org>2017-02-07 11:52:34 +0000
commitac7568bd3ff381e1e0624ac2c07954f01aa45aad (patch)
tree92a4ef3c63a9da6e2cb2cb0097fd6af1110f2eb5
parent7d2c6c95511e42dffe2b263275e09957723d0ff4 (diff)
downloadfocaccia-qemu-ac7568bd3ff381e1e0624ac2c07954f01aa45aad.tar.gz
focaccia-qemu-ac7568bd3ff381e1e0624ac2c07954f01aa45aad.zip
rules: don't try to create missing include dirs
In

  commit ba78db44f6532d66a1e704bd44613e841baa2fc5
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Wed Jan 25 16:14:10 2017 +0000

  make: move top level dir to end of include search path

The dir $(BUILD_DIR)/$(@D) was added to the include
path. This would sometimes point to a non-existant
directory, if the sub-dir in question did not contain
any target-independant files (eg tcg/). To deal with
this the rules.mak attempted to create the directory.

While this was succesful, it also caused accidental
creation of files in the parent of the build dir.
e.g. when building common source files into target
specific output files.

Rather than trying to workaround this, just revert
the code that attempted to mkdir the missing include
directories. Instead just turn off the compiler warning
in question as the missing dir is expected & harmless
in general.

NB: you can clean up a build directory parent that has
been filled with empty directories by commit ba78db44f653
using this GNU find command in that parent directory:
  find audio backends block chardev crypto disas fsdev hw io linux-user \
    migration nbd net qapi qom replay slirp target ui util \
    -type d -empty -delete

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Tested-by: Alberto Garcia <berto@igalia.com>
[PMM: added note about how to clean up a polluted directory]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to '')
-rwxr-xr-xconfigure2
-rw-r--r--rules.mak1
2 files changed, 1 insertions, 2 deletions
diff --git a/configure b/configure
index 86fd833feb..63253398a2 100755
--- a/configure
+++ b/configure
@@ -1474,7 +1474,7 @@ fi
 
 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
-gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
+gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
 gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
 gcc_flags="-Wno-initializer-overrides $gcc_flags"
 gcc_flags="-Wno-string-plus-int $gcc_flags"
diff --git a/rules.mak b/rules.mak
index 575a3afdff..83d6dd1dae 100644
--- a/rules.mak
+++ b/rules.mak
@@ -374,7 +374,6 @@ define unnest-vars
                 $(eval $(o:%.mo=%$(DSOSUF)): module-common.o $($o-objs)),
                 $(error $o added in $v but $o-objs is not set)))
         $(shell mkdir -p ./ $(sort $(dir $($v))))
-        $(shell cd $(BUILD_DIR) && mkdir -p ./ $(sort $(dir $($v))))
         # Include all the .d files
         $(eval -include $(patsubst %.o,%.d,$(patsubst %.mo,%.d,$($v))))
         $(eval $v := $(filter-out %/,$($v))))