From: Pavel TvrdĂ­k Date: Fri, 13 Mar 2015 17:23:31 +0000 (+0100) Subject: Birdtest: Customize Makefiles build system X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=56fe8bc26c77c9c63e72e4608711b51611ddcb68;p=thirdparty%2Fbird.git Birdtest: Customize Makefiles build system From root dir is possible launch: $ make check # for re-build and run all tests $ make build-tests # for re-build all tests only --- diff --git a/conf/Makefile b/conf/Makefile index 5d729a421..4a4759b5a 100644 --- a/conf/Makefile +++ b/conf/Makefile @@ -1,5 +1,7 @@ source=cf-parse.tab.c cf-lex.c conf.c root-rel=../ +dir-name=conf +dynamic-dir=1 include ../Rules diff --git a/tools/Makefile-top.in b/tools/Makefile-top.in index 83ff4f58f..367b19b6d 100644 --- a/tools/Makefile-top.in +++ b/tools/Makefile-top.in @@ -3,12 +3,30 @@ objdir=@objdir@ -all depend tags install install-docs check: +all depend tags install install-docs build-tests: $(MAKE) -C $(objdir) $@ docs userdocs progdocs: $(MAKE) -C doc $@ +check: build-tests + @all_tests=( `find . -name '*_test' -executable` ) ; \ + test_num=1 ; \ + num_succ_tests=0 ; \ + num_fail_tests=0 ; \ + echo -e "\n== Start all $${#all_tests[@]} unit tests ==\n" ; \ + for test in "$${all_tests[@]}" ; do \ + echo -e "=[$$((test_num++))/$${#all_tests[@]}]= $$test" ; \ + ./$$test \ + && num_succ_tests=$$((num_succ_tests+1)) \ + || num_fail_tests=$$((num_fail_tests+1)) ; \ + done ; \ + echo "" ; \ + echo "------------------------------" ; \ + echo " Success: $$num_succ_tests" ; \ + echo " Failure: $$num_fail_tests" ; \ + echo "------------------------------" + clean: $(MAKE) -C $(objdir) clean find . -name "*~" -or -name "*.[oa]" -or -name "\#*\#" -or -name TAGS -or -name core -or -name depend -or -name ".#*" | xargs rm -f diff --git a/tools/Makefile.in b/tools/Makefile.in index 174b3e81f..dfd61ce2b 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -7,12 +7,9 @@ include Rules all: sysdep/paths.h .dep-stamp subdir daemon birdcl @CLIENT@ -check: build-tests - find . -name '*_test' -executable -exec {} \; - -build-tests: subdir birdtest/birdtest.a - set -e ; for a in $(dynamic-dirs) ; do $(MAKE) -C $$a build-test ; done - set -e ; for a in $(static-dirs) $(client-dirs) ; do $(MAKE) -C $$a -f $(srcdir_abs)/$$a/Makefile build-test ; done +build-tests: birdtest/birdtest.a + set -e ; for a in $(dynamic-dirs) ; do $(MAKE) -C $$a $@ ; done + set -e ; for a in $(static-dirs) $(client-dirs) ; do $(MAKE) -C $$a -f $(srcdir_abs)/$$a/Makefile $@ ; done birdtest/birdtest.a: birdtest/birdtest.o $(AR) rcs $@ $^ diff --git a/tools/Rules.in b/tools/Rules.in index 79bf0761f..ef42094e9 100644 --- a/tools/Rules.in +++ b/tools/Rules.in @@ -41,25 +41,26 @@ sysconfdir=@sysconfdir@ localstatedir=@localstatedir@ docdir=@prefix@/doc +test-src-path := $(srcdir)/$(dir-name)/ + +build-tests: + @for i in `find $(test-src-path) -name '*_test.c'` ; do \ + testname=`basename $$i .c` ; \ + testobj=$${testname}.o ; \ + $(CC) $(CFLAGS) -I $(srcdir)/birdtest/ -o $$testobj -c $$i && \ + $(CC) $(LDFLAGS) $$testobj -o $$testname $(root-rel)birdtest/birdtest.a || \ + rm -rf $$testname ; \ + done + ifdef source objs := $(subst .c,.o,$(source)) -ifdef dir-name + +ifndef dynamic-dir src-path := $(srcdir)/$(dir-name)/ endif -build-test: - for i in $(source); do \ - test_name=`echo $$i | sed 's/\.c$$/_test/g'` ; \ - test_source=$(src-path)$${test_name}.c ; \ - test_obj=$${test_name}.o ; \ - if [ -f $$test_source ]; then \ - $(CC) $(CFLAGS) -I $(srcdir)/birdtest/ -o $$test_obj -c $$test_source ; \ - $(CC) $(LDFLAGS) $$test_obj -o $$test_name $(root-rel)birdtest/birdtest.a ; \ - fi ; \ - done - all: cd $(root-rel) && make diff --git a/tools/mergedirs b/tools/mergedirs index fb48c6c79..a6395df41 100755 --- a/tools/mergedirs +++ b/tools/mergedirs @@ -52,6 +52,8 @@ cat >$LIBDIR/Makefile <