forked from Minki/linux
095ae69b89
Adding automated test for testing the build process. To run it you need to be in perf directory or specify one with PERF variable. It's also possible to specify optional Makefile to test via MK variable. Whole suite is executed twice, the second time with O=/tmp/xxx option added. To run the whole suite: $ make -f tests/make - make_pure: cd . && make -f Makefile test: test -x ./perf - make_clean_all: cd . && make -f Makefile clean all test: test -x ./perf - make_python_perf_so: cd . && make -f Makefile python/perf.so test: test -f ./python/perf.so - make_debug: cd . && make -f Makefile DEBUG=1 test: test -x ./perf - make_no_libperl: cd . && make -f Makefile NO_LIBPERL=1 test: test -x ./perf You see command line for 'make_pure' test right away, and the output is stored into 'make_pure' file. To run simple test: $ make -f tests/make make_debug - make_debug: cd . && make -f Makefile DEBUG=1 test: test -x ./perf At this moment tests checks for successfull build and for existence of several built files. Additional after-build checks could be added. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1369398928-9809-2-git-send-email-jolsa@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
139 lines
3.6 KiB
Plaintext
139 lines
3.6 KiB
Plaintext
PERF := .
|
|
MK := Makefile
|
|
|
|
# standard single make variable specified
|
|
make_clean_all := clean all
|
|
make_python_perf_so := python/perf.so
|
|
make_debug := DEBUG=1
|
|
make_no_libperl := NO_LIBPERL=1
|
|
make_no_libpython := NO_LIBPYTHON=1
|
|
make_no_scripts := NO_LIBPYTHON=1 NO_LIBPERL=1
|
|
make_no_newt := NO_NEWT=1
|
|
make_no_slang := NO_SLANG=1
|
|
make_no_gtk2 := NO_GTK2=1
|
|
make_no_ui := NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
|
|
make_no_demangle := NO_DEMANGLE=1
|
|
make_no_libelf := NO_LIBELF=1
|
|
make_no_libunwind := NO_LIBUNWIND=1
|
|
make_no_backtrace := NO_BACKTRACE=1
|
|
make_no_libnuma := NO_LIBNUMA=1
|
|
make_no_libaudit := NO_LIBAUDIT=1
|
|
make_no_libbionic := NO_LIBBIONIC=1
|
|
make_tags := tags
|
|
make_cscope := cscope
|
|
make_help := help
|
|
make_doc := doc
|
|
make_perf_o := perf.o
|
|
make_util_map_o := util/map.o
|
|
|
|
# all the NO_* variable combined
|
|
make_minimal := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
|
|
make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1
|
|
make_minimal += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1
|
|
|
|
# $(run) contains all available tests
|
|
run := make_pure
|
|
run += make_clean_all
|
|
run += make_python_perf_so
|
|
run += make_debug
|
|
run += make_no_libperl
|
|
run += make_no_libpython
|
|
run += make_no_scripts
|
|
run += make_no_newt
|
|
run += make_no_slang
|
|
run += make_no_gtk2
|
|
run += make_no_ui
|
|
run += make_no_demangle
|
|
run += make_no_libelf
|
|
run += make_no_libunwind
|
|
run += make_no_backtrace
|
|
run += make_no_libnuma
|
|
run += make_no_libaudit
|
|
run += make_no_libbionic
|
|
run += make_tags
|
|
run += make_cscope
|
|
run += make_help
|
|
run += make_doc
|
|
run += make_perf_o
|
|
run += make_util_map_o
|
|
run += make_minimal
|
|
|
|
# $(run_O) contains same portion of $(run) tests with '_O' attached
|
|
# to distinguish O=... tests
|
|
run_O := $(addsuffix _O,$(run))
|
|
|
|
# disable some tests for O=...
|
|
run_O := $(filter-out make_python_perf_so_O,$(run_O))
|
|
|
|
# define test for each compile as 'test_NAME' variable
|
|
# with the test itself as a value
|
|
test_make_tags = test -f tags
|
|
test_make_cscope = test -f cscope.out
|
|
|
|
test_make_tags_O := $(test_make_tags)
|
|
test_make_cscope_O := $(test_make_cscope)
|
|
|
|
test_ok := true
|
|
test_make_help := $(test_ok)
|
|
test_make_doc := $(test_ok)
|
|
test_make_help_O := $(test_ok)
|
|
test_make_doc_O := $(test_ok)
|
|
|
|
test_make_python_perf_so := test -f $(PERF)/python/perf.so
|
|
|
|
test_make_perf_o := test -f $(PERF)/perf.o
|
|
test_make_util_map_o := test -f $(PERF)/util/map.o
|
|
|
|
# Kbuild tests only
|
|
#test_make_python_perf_so_O := test -f $$TMP/tools/perf/python/perf.so
|
|
#test_make_perf_o_O := test -f $$TMP/tools/perf/perf.o
|
|
#test_make_util_map_o_O := test -f $$TMP/tools/perf/util/map.o
|
|
|
|
test_make_perf_o_O := true
|
|
test_make_util_map_o_O := true
|
|
|
|
test_default = test -x $(PERF)/perf
|
|
test = $(if $(test_$1),$(test_$1),$(test_default))
|
|
|
|
test_default_O = test -x $$TMP/perf
|
|
test_O = $(if $(test_$1),$(test_$1),$(test_default_O))
|
|
|
|
all:
|
|
|
|
ifdef DEBUG
|
|
d := $(info run $(run))
|
|
d := $(info run_O $(run_O))
|
|
endif
|
|
|
|
MAKEFLAGS := --no-print-directory
|
|
|
|
clean := @(cd $(PERF); make -s -f $(MK) clean >/dev/null)
|
|
|
|
$(run):
|
|
$(call clean)
|
|
@cmd="cd $(PERF) && make -f $(MK) $($@)"; \
|
|
echo "- $@: $$cmd" && echo $$cmd > $@ && \
|
|
( eval $$cmd ) >> $@ 2>&1; \
|
|
echo " test: $(call test,$@)"; \
|
|
$(call test,$@) && \
|
|
rm -f $@
|
|
|
|
$(run_O):
|
|
$(call clean)
|
|
@TMP=$$(mktemp -d); \
|
|
cmd="cd $(PERF) && make -f $(MK) $($(patsubst %_O,%,$@)) O=$$TMP"; \
|
|
echo "- $@: $$cmd" && echo $$cmd > $@ && \
|
|
( eval $$cmd ) >> $@ 2>&1 && \
|
|
echo " test: $(call test_O,$@)"; \
|
|
$(call test_O,$@) && \
|
|
rm -f $@ && \
|
|
rm -rf $$TMP
|
|
|
|
all: $(run) $(run_O)
|
|
@echo OK
|
|
|
|
out: $(run_O)
|
|
@echo OK
|
|
|
|
.PHONY: all $(run) $(run_O) clean
|