aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Poimboeuf <jpoimboe@redhat.com>2015-12-15 10:39:32 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-12-16 13:31:33 -0500
commit1925459b4d92d92e62d67ddc763cda650d2aa79c (patch)
treeaceb17bc00a469f16704fccd8c8fbc4eb7c0fe27
parent7a29c087ff80f5d534bd6729c852099fc572c8d0 (diff)
tools build: Fix feature Makefile issues with 'O='
When building perf binaries outside the source tree with 'make O=<dir>', the auto-detected features get re-tested for every build, which is unnecessary and inconsistent with the behavior seen when building directly in the source tree. Another issue is that 'make O=<dir> clean' doesn't remove the feature files from the object tree. Fix these problems by looking for the binaries in the $(OUTPUT) directory. Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/113bd01530e9761778c60a75a96c65fc59860f68.1450193761.git.jpoimboe@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/build/Makefile.feature2
-rw-r--r--tools/build/feature/Makefile93
2 files changed, 48 insertions, 47 deletions
diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index b8c31ece2d96..6c0519de765d 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -7,7 +7,7 @@ endif
7 7
8feature_check = $(eval $(feature_check_code)) 8feature_check = $(eval $(feature_check_code))
9define feature_check_code 9define feature_check_code
10 feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) 10 feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0)
11endef 11endef
12 12
13feature_set = $(eval $(feature_set_code)) 13feature_set = $(eval $(feature_set_code))
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index cea04ce9f35c..bf8f0352264d 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -1,4 +1,3 @@
1
2FILES= \ 1FILES= \
3 test-all.bin \ 2 test-all.bin \
4 test-backtrace.bin \ 3 test-backtrace.bin \
@@ -38,38 +37,40 @@ FILES= \
38 test-bpf.bin \ 37 test-bpf.bin \
39 test-get_cpuid.bin 38 test-get_cpuid.bin
40 39
40FILES := $(addprefix $(OUTPUT),$(FILES))
41
41CC := $(CROSS_COMPILE)gcc -MD 42CC := $(CROSS_COMPILE)gcc -MD
42PKG_CONFIG := $(CROSS_COMPILE)pkg-config 43PKG_CONFIG := $(CROSS_COMPILE)pkg-config
43 44
44all: $(FILES) 45all: $(FILES)
45 46
46__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) 47__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS)
47 BUILD = $(__BUILD) > $(OUTPUT)$(@:.bin=.make.output) 2>&1 48 BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1
48 49
49############################### 50###############################
50 51
51test-all.bin: 52$(OUTPUT)test-all.bin:
52 $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma 53 $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma
53 54
54test-hello.bin: 55$(OUTPUT)test-hello.bin:
55 $(BUILD) 56 $(BUILD)
56 57
57test-pthread-attr-setaffinity-np.bin: 58$(OUTPUT)test-pthread-attr-setaffinity-np.bin:
58 $(BUILD) -D_GNU_SOURCE -lpthread 59 $(BUILD) -D_GNU_SOURCE -lpthread
59 60
60test-stackprotector-all.bin: 61$(OUTPUT)test-stackprotector-all.bin:
61 $(BUILD) -fstack-protector-all 62 $(BUILD) -fstack-protector-all
62 63
63test-fortify-source.bin: 64$(OUTPUT)test-fortify-source.bin:
64 $(BUILD) -O2 -D_FORTIFY_SOURCE=2 65 $(BUILD) -O2 -D_FORTIFY_SOURCE=2
65 66
66test-bionic.bin: 67$(OUTPUT)test-bionic.bin:
67 $(BUILD) 68 $(BUILD)
68 69
69test-libelf.bin: 70$(OUTPUT)test-libelf.bin:
70 $(BUILD) -lelf 71 $(BUILD) -lelf
71 72
72test-glibc.bin: 73$(OUTPUT)test-glibc.bin:
73 $(BUILD) 74 $(BUILD)
74 75
75DWARFLIBS := -ldw 76DWARFLIBS := -ldw
@@ -77,37 +78,37 @@ ifeq ($(findstring -static,${LDFLAGS}),-static)
77DWARFLIBS += -lelf -lebl -lz -llzma -lbz2 78DWARFLIBS += -lelf -lebl -lz -llzma -lbz2
78endif 79endif
79 80
80test-dwarf.bin: 81$(OUTPUT)test-dwarf.bin:
81 $(BUILD) $(DWARFLIBS) 82 $(BUILD) $(DWARFLIBS)
82 83
83test-libelf-mmap.bin: 84$(OUTPUT)test-libelf-mmap.bin:
84 $(BUILD) -lelf 85 $(BUILD) -lelf
85 86
86test-libelf-getphdrnum.bin: 87$(OUTPUT)test-libelf-getphdrnum.bin:
87 $(BUILD) -lelf 88 $(BUILD) -lelf
88 89
89test-libnuma.bin: 90$(OUTPUT)test-libnuma.bin:
90 $(BUILD) -lnuma 91 $(BUILD) -lnuma
91 92
92test-numa_num_possible_cpus.bin: 93$(OUTPUT)test-numa_num_possible_cpus.bin:
93 $(BUILD) -lnuma 94 $(BUILD) -lnuma
94 95
95test-libunwind.bin: 96$(OUTPUT)test-libunwind.bin:
96 $(BUILD) -lelf 97 $(BUILD) -lelf
97 98
98test-libunwind-debug-frame.bin: 99$(OUTPUT)test-libunwind-debug-frame.bin:
99 $(BUILD) -lelf 100 $(BUILD) -lelf
100 101
101test-libaudit.bin: 102$(OUTPUT)test-libaudit.bin:
102 $(BUILD) -laudit 103 $(BUILD) -laudit
103 104
104test-libslang.bin: 105$(OUTPUT)test-libslang.bin:
105 $(BUILD) -I/usr/include/slang -lslang 106 $(BUILD) -I/usr/include/slang -lslang
106 107
107test-gtk2.bin: 108$(OUTPUT)test-gtk2.bin:
108 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) 109 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
109 110
110test-gtk2-infobar.bin: 111$(OUTPUT)test-gtk2-infobar.bin:
111 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) 112 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
112 113
113grep-libs = $(filter -l%,$(1)) 114grep-libs = $(filter -l%,$(1))
@@ -119,63 +120,63 @@ PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
119PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` 120PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
120FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) 121FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
121 122
122test-libperl.bin: 123$(OUTPUT)test-libperl.bin:
123 $(BUILD) $(FLAGS_PERL_EMBED) 124 $(BUILD) $(FLAGS_PERL_EMBED)
124 125
125test-libpython.bin: 126$(OUTPUT)test-libpython.bin:
126 $(BUILD) 127 $(BUILD)
127 128
128test-libpython-version.bin: 129$(OUTPUT)test-libpython-version.bin:
129 $(BUILD) 130 $(BUILD)
130 131
131test-libbfd.bin: 132$(OUTPUT)test-libbfd.bin:
132 $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl 133 $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl
133 134
134test-liberty.bin: 135$(OUTPUT)test-liberty.bin:
135 $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty 136 $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty
136 137
137test-liberty-z.bin: 138$(OUTPUT)test-liberty-z.bin:
138 $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz 139 $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz
139 140
140test-cplus-demangle.bin: 141$(OUTPUT)test-cplus-demangle.bin:
141 $(BUILD) -liberty 142 $(BUILD) -liberty
142 143
143test-backtrace.bin: 144$(OUTPUT)test-backtrace.bin:
144 $(BUILD) 145 $(BUILD)
145 146
146test-timerfd.bin: 147$(OUTPUT)test-timerfd.bin:
147 $(BUILD) 148 $(BUILD)
148 149
149test-libdw-dwarf-unwind.bin: 150$(OUTPUT)test-libdw-dwarf-unwind.bin:
150 $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) 151 $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind)
151 152
152test-libbabeltrace.bin: 153$(OUTPUT)test-libbabeltrace.bin:
153 $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) 154 $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace)
154 155
155test-sync-compare-and-swap.bin: 156$(OUTPUT)test-sync-compare-and-swap.bin:
156 $(BUILD) 157 $(BUILD)
157 158
158test-compile-32.bin: 159$(OUTPUT)test-compile-32.bin:
159 $(CC) -m32 -o $(OUTPUT)$@ test-compile.c 160 $(CC) -m32 -o $@ test-compile.c
160 161
161test-compile-x32.bin: 162$(OUTPUT)test-compile-x32.bin:
162 $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c 163 $(CC) -mx32 -o $@ test-compile.c
163 164
164test-zlib.bin: 165$(OUTPUT)test-zlib.bin:
165 $(BUILD) -lz 166 $(BUILD) -lz
166 167
167test-lzma.bin: 168$(OUTPUT)test-lzma.bin:
168 $(BUILD) -llzma 169 $(BUILD) -llzma
169 170
170test-get_cpuid.bin: 171$(OUTPUT)test-get_cpuid.bin:
171 $(BUILD) 172 $(BUILD)
172 173
173test-bpf.bin: 174$(OUTPUT)test-bpf.bin:
174 $(BUILD) 175 $(BUILD)
175 176
176-include *.d 177-include $(OUTPUT)*.d
177 178
178############################### 179###############################
179 180
180clean: 181clean:
181 rm -f $(FILES) *.d $(FILES:.bin=.make.output) 182 rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)