tools build: Add test for missing include
authorJiri Olsa <jolsa@kernel.org>
Wed, 23 Sep 2015 10:33:57 +0000 (12:33 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 28 Sep 2015 18:50:54 +0000 (15:50 -0300)
The current build framework fails to cope with header file removal. The
reason is that the removed header file stays in the .cmd file target
rule and forces the build to fail.

This issue is fixed and explained in the following patches.

Adding a new build test that simulates header removal.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1443004442-32660-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/build/tests/ex/Build
tools/build/tests/ex/Makefile
tools/build/tests/ex/ex.c
tools/build/tests/ex/inc.c [new file with mode: 0644]
tools/build/tests/run.sh

index 429c7d4521016283ef81bc1dbd1e9ae93e8f2581..4d502f9b1a50e5c55e8ddd4b745a77acf72f6a87 100644 (file)
@@ -4,6 +4,7 @@ ex-y += b.o
 ex-y += b.o
 ex-y += empty/
 ex-y += empty2/
+ex-y += inc.o
 
 libex-y += c.o
 libex-y += d.o
index a8f596e37fd289ef81b3dd5beb0ec67f6884d647..f279b84cb85943b3ecbb529df83927e3a49a8f40 100644 (file)
@@ -1,4 +1,4 @@
-export srctree := ../../../..
+export srctree := $(abspath ../../../..)
 export CC      := gcc
 export LD      := ld
 export AR      := ar
index dc42eb2e1a677414b32001de061eb1868acd5827..57de6074d252857fdbaf4c115a25c254b3bd2a94 100644 (file)
@@ -5,6 +5,7 @@ int c(void);
 int d(void);
 int e(void);
 int f(void);
+int inc(void);
 
 int main(void)
 {
@@ -14,6 +15,7 @@ int main(void)
        d();
        e();
        f();
+       inc();
 
        return 0;
 }
diff --git a/tools/build/tests/ex/inc.c b/tools/build/tests/ex/inc.c
new file mode 100644 (file)
index 0000000..c20f1e9
--- /dev/null
@@ -0,0 +1,8 @@
+#ifdef INCLUDE
+#include "krava.h"
+#endif
+
+int inc(void)
+{
+       return 0;
+}
index 5494f8ea75670f91a77034959b32db9a88ceb203..44d2a0fade677b9a456647120d1bb60f3b711aa1 100755 (executable)
@@ -34,9 +34,36 @@ function test_ex_suffix {
        make -C ex V=1 clean > /dev/null 2>&1
        rm -f ex.out
 }
+
+function test_ex_include {
+       make -C ex V=1 clean > ex.out 2>&1
+
+       # build with krava.h include
+       touch ex/krava.h
+       make -C ex V=1 CFLAGS=-DINCLUDE >> ex.out 2>&1
+
+       if [ ! -x ./ex/ex ]; then
+         echo FAILED
+         exit -1
+       fi
+
+       # build without the include
+       rm -f ex/krava.h ex/ex
+       make -C ex V=1 >> ex.out 2>&1
+
+       if [ ! -x ./ex/ex ]; then
+         echo FAILED
+         exit -1
+       fi
+
+       make -C ex V=1 clean > /dev/null 2>&1
+       rm -f ex.out
+}
+
 echo -n Testing..
 
 test_ex
 test_ex_suffix
+test_ex_include
 
 echo OK