From: Garrett C. <ris...@li...> - 2010-07-05 05:50:27
|
The branch, pu, has been updated via e8d8303f301eb8fd6477346373b8ffe21aed4d09 (commit) via b82db5f13e89331813fd93023adcc48efe27c9bf (commit) via 377d976666335e15fed7cac8d7f48b8a762e25fa (commit) via 20d72c7d3cd67461380cbfb484471c3b39262ebe (commit) via a0f8e08d23a5c34b8045c241f8d258fe67e6729b (commit) via d5ff323a3bc912f877ab31a78046c9388e4235f1 (commit) via 1fb9097d3adfa0bed182344464a773bc53c6061c (commit) via f9508213fbc076538bc650bdb354905674b20ceb (commit) via 5059f459789238c1378da036c16f7eb6dcbc5318 (commit) via 468d4b45c092c8a4d9c46cf45a78f6a772620cb1 (commit) via 17dc34f217c5617baae6abc8d4cbef0ec9caadc2 (commit) from 9b6bb8b07b89314c0d2cc373e668a10525f018e0 (commit) - Log ----------------------------------------------------------------- commit e8d8303f301eb8fd6477346373b8ffe21aed4d09 Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:42:11 2010 -0700 Improve logic breakdown and flow. Fix bugs. The overall description for generate_makefile didn't match the behavior; isolate the Makefile producing portion, so the code could be better tested by itself, and the flow becomes more intuitive. Oh yeah, and fix $AUTHORDATE to print out less crap, and don't print out the Makefile if Makefile.2 (the targets section) does not exist. Also, punt out the last cached data in generate_makefiles, as we were missing the last Makefile (and thus... it was regenerating the Makefiles multiple times unnecessarily at the top-level Makefile, with GNU make in particular, compared to BSD make -- which was bizarre). Signed-off-by: Garrett Cooper <yan...@gm...> commit b82db5f13e89331813fd93023adcc48efe27c9bf Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:40:15 2010 -0700 Use BUILD_MAKE where needed, and optimize. Also, push down distcleans logic into leaf Makefiles for correctness and unmute targets for the time being in order to properly diagnose what's going on, for the time being. Signed-off-by: Garrett Cooper <yan...@gm...> commit 377d976666335e15fed7cac8d7f48b8a762e25fa Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:35:09 2010 -0700 Update scripts for new app name. Signed-off-by: Garrett Cooper <yan...@gm...> commit 20d72c7d3cd67461380cbfb484471c3b39262ebe Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:33:42 2010 -0700 Push down distclean-makefiles into conformance. Also add some local Makefiles missing from the repo. Signed-off-by: Garrett Cooper <yan...@gm...> commit a0f8e08d23a5c34b8045c241f8d258fe67e6729b Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:29:53 2010 -0700 Push distclean-makefiles down into stress Makefile. Signed-off-by: Garrett Cooper <yan...@gm...> commit d5ff323a3bc912f877ab31a78046c9388e4235f1 Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:27:04 2010 -0700 1999 called and want you to update your toolchain. 'k, thanks! Signed-off-by: Garrett Cooper <yan...@gm...> commit 1fb9097d3adfa0bed182344464a773bc53c6061c Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 22:25:38 2010 -0700 Push distclean-makefile down into this file. Signed-off-by: Garrett Cooper <yan...@gm...> commit f9508213fbc076538bc650bdb354905674b20ceb Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 21:11:24 2010 -0700 Properly categorize a src file. Signed-off-by: Garrett Cooper <yan...@gm...> commit 5059f459789238c1378da036c16f7eb6dcbc5318 Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 20:06:34 2010 -0700 Sacrifice modularity for simplicity. Signed-off-by: Garrett Cooper <yan...@gm...> commit 468d4b45c092c8a4d9c46cf45a78f6a772620cb1 Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 17:15:33 2010 -0700 Add more LDLIBS files. Signed-off-by: Garrett Cooper <yan...@gm...> commit 17dc34f217c5617baae6abc8d4cbef0ec9caadc2 Author: Garrett Cooper <yan...@gm...> Date: Sun Jul 4 17:09:42 2010 -0700 Correct _POSIX_SPORADIC_SERVER conformance tests. Signed-off-by: Garrett Cooper <yan...@gm...> ----------------------------------------------------------------------- Summary of changes: testcases/open_posix_testsuite/CFLAGS | 4 +- testcases/open_posix_testsuite/Makefile | 35 ++--- .../open_posix_testsuite/conformance/Makefile | 2 +- .../{stress => conformance/behavior}/Makefile | 3 + .../{stress => conformance/definitions}/Makefile | 3 + .../{stress => conformance/interfaces}/Makefile | 3 + .../timers => interfaces/clock_settime}/LDLIBS | 0 .../conformance/interfaces/sched_setparam/25-3.c | 13 ++- .../{pthread_atfork => sem_destroy}/LDLIBS | 0 .../{pthread_atfork => sem_getvalue}/LDLIBS | 0 .../interfaces/{pthread_atfork => sem_init}/LDLIBS | 0 .../{pthread_atfork => sem_unlink}/LDLIBS | 0 .../conformance/interfaces/sigrelse/3-1.sh | 2 +- .../conformance/interfaces/sigrelse/3-2.sh | 2 +- .../conformance/interfaces/sigrelse/3-3.sh | 2 +- .../conformance/interfaces/sigrelse/3-4.sh | 2 +- .../sigrelse/{3-core-buildonly.c => 3-core.c} | 0 testcases/open_posix_testsuite/functional/Makefile | 3 + .../scripts/generate-makefiles.sh | 156 ++++++++++---------- testcases/open_posix_testsuite/stress/Makefile | 3 + 20 files changed, 127 insertions(+), 106 deletions(-) copy testcases/open_posix_testsuite/{stress => conformance/behavior}/Makefile (77%) copy testcases/open_posix_testsuite/{stress => conformance/definitions}/Makefile (77%) copy testcases/open_posix_testsuite/{stress => conformance/interfaces}/Makefile (77%) copy testcases/open_posix_testsuite/conformance/{behavior/timers => interfaces/clock_settime}/LDLIBS (100%) copy testcases/open_posix_testsuite/conformance/interfaces/{pthread_atfork => sem_destroy}/LDLIBS (100%) copy testcases/open_posix_testsuite/conformance/interfaces/{pthread_atfork => sem_getvalue}/LDLIBS (100%) copy testcases/open_posix_testsuite/conformance/interfaces/{pthread_atfork => sem_init}/LDLIBS (100%) copy testcases/open_posix_testsuite/conformance/interfaces/{pthread_atfork => sem_unlink}/LDLIBS (100%) rename testcases/open_posix_testsuite/conformance/interfaces/sigrelse/{3-core-buildonly.c => 3-core.c} (100%) diff --git a/testcases/open_posix_testsuite/CFLAGS b/testcases/open_posix_testsuite/CFLAGS index 27b85d4..55563b3 100644 --- a/testcases/open_posix_testsuite/CFLAGS +++ b/testcases/open_posix_testsuite/CFLAGS @@ -1,3 +1 @@ -# add -std=c99, -std=gnu99 if compiler supports it (gcc-2.95.3 does not). -# Add appropriate POSIX support as well (needs fixing). -`$(CC) -std=c99 -S -o /dev/null -xc /dev/null >/dev/null 2>&1 && echo "-std=c99"` `$(CC) -std=gnu99 -S -o /dev/null -xc /dev/null >/dev/null 2>&1 && echo "-std=gnu99"` -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 +-std=c99 `$(CC) -std=gnu99 -S -o /dev/null -xc /dev/null >/dev/null 2>&1 && echo "-std=gnu99"` -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 diff --git a/testcases/open_posix_testsuite/Makefile b/testcases/open_posix_testsuite/Makefile index 9e03fe4..55f5f1f 100644 --- a/testcases/open_posix_testsuite/Makefile +++ b/testcases/open_posix_testsuite/Makefile @@ -28,10 +28,9 @@ SUBDIRS= conformance functional stress # Force to -j1 so the output in the logfile won't be wonky. MAKE+= -j1 -MAKE+= LOGFILE=`if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - MAKE_ENV= "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" MAKE_ENV+= "LDLIBS=$(LDLIBS)" +MAKE_ENV+= LOGFILE=`if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ BUILD_MAKE= env $(MAKE_ENV) $(MAKE) @@ -39,56 +38,54 @@ top_srcdir?= . all: conformance-all functional-all stress-all tools -clean: +clean: $(CRITICAL_MAKEFILES) @rm -f $(LOGFILE)* @for dir in $(SUBDIRS) tools; do \ - $(BUILD_MAKE) -C $$dir clean >/dev/null; \ + $(MAKE) -C $$dir clean >/dev/null; \ done # Clean out all of the generated Makefiles; this is done this way to ensure # there won't be an argument overflow, and to remain POSIXly correct (POSIX # find(1) doesn't support -mindepth like BSD and GNU find do...). distclean-makefiles: - @for dir in $(SUBDIRS); do \ - (cd $$dir && for subdir in */; do \ - (cd $$subdir && find */ -name Makefile 2>/dev/null | xargs rm -f); \ - done); \ + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir $@; \ done generate-makefiles: distclean-makefiles @export top_srcdir=$(top_srcdir); \ $(top_srcdir)/scripts/generate-makefiles.sh -$(CRITICAL_MAKEFILES): scripts/generate-makefiles.sh - @$(BUILD_MAKE) generate-makefiles +$(CRITICAL_MAKEFILES): $(top_srcdir)/scripts/generate-makefiles.sh + $(MAKE) generate-makefiles tools: - @$(BUILD_MAKE) -C tools all + $(MAKE) -C tools all # Test build and execution targets. conformance-all: $(CRITICAL_CONFORMANCE_MAKEFILE) @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - @$(BUILD_MAKE) -C conformance all + $(BUILD_MAKE) -C conformance all conformance-test: @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - @$(MAKE) -C conformance test + $(MAKE) -C conformance test functional-all: $(CRITICAL_FUNCTIONAL_MAKEFILE) @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - @$(BUILD_MAKE) -C functional all + $(BUILD_MAKE) -C functional all functional-test: @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - @$(MAKE) -C functional test + $(MAKE) -C functional test stress-all: $(CRITICAL_STRESS_MAKEFILE) @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - @$(BUILD_MAKE) -C stress all + $(BUILD_MAKE) -C stress all stress-test: @rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@ - @$(MAKE) -C stress test + $(MAKE) -C stress test -tests-pretty: - @$(MAKE) all | column -t -s: +#tests-pretty: +# $(MAKE) all | column -t -s: diff --git a/testcases/open_posix_testsuite/conformance/Makefile b/testcases/open_posix_testsuite/conformance/Makefile index e67c7cf..2c6c557 100644 --- a/testcases/open_posix_testsuite/conformance/Makefile +++ b/testcases/open_posix_testsuite/conformance/Makefile @@ -4,7 +4,7 @@ # Garrett Cooper, June 2010 # -all clean install test: +all clean distclean-makefiles install test: @for dir in `ls -d */Makefile 2>/dev/null | sed -e 's,/Makefile$$,,g'`; do \ $(MAKE) -C $$dir $@; \ done diff --git a/testcases/open_posix_testsuite/stress/Makefile b/testcases/open_posix_testsuite/conformance/behavior/Makefile similarity index 77% copy from testcases/open_posix_testsuite/stress/Makefile copy to testcases/open_posix_testsuite/conformance/behavior/Makefile index 5523b02..04e78cd 100644 --- a/testcases/open_posix_testsuite/stress/Makefile +++ b/testcases/open_posix_testsuite/conformance/behavior/Makefile @@ -8,3 +8,6 @@ all clean install test: @for dir in `ls -d */Makefile 2>/dev/null | sed -e 's,/Makefile$$,,g'`; do \ $(MAKE) -C $$dir $@; \ done + +distclean-makefiles: + find */ -name 'Makefile*' | xargs rm -f diff --git a/testcases/open_posix_testsuite/stress/Makefile b/testcases/open_posix_testsuite/conformance/definitions/Makefile similarity index 77% copy from testcases/open_posix_testsuite/stress/Makefile copy to testcases/open_posix_testsuite/conformance/definitions/Makefile index 5523b02..04e78cd 100644 --- a/testcases/open_posix_testsuite/stress/Makefile +++ b/testcases/open_posix_testsuite/conformance/definitions/Makefile @@ -8,3 +8,6 @@ all clean install test: @for dir in `ls -d */Makefile 2>/dev/null | sed -e 's,/Makefile$$,,g'`; do \ $(MAKE) -C $$dir $@; \ done + +distclean-makefiles: + find */ -name 'Makefile*' | xargs rm -f diff --git a/testcases/open_posix_testsuite/stress/Makefile b/testcases/open_posix_testsuite/conformance/interfaces/Makefile similarity index 77% copy from testcases/open_posix_testsuite/stress/Makefile copy to testcases/open_posix_testsuite/conformance/interfaces/Makefile index 5523b02..04e78cd 100644 --- a/testcases/open_posix_testsuite/stress/Makefile +++ b/testcases/open_posix_testsuite/conformance/interfaces/Makefile @@ -8,3 +8,6 @@ all clean install test: @for dir in `ls -d */Makefile 2>/dev/null | sed -e 's,/Makefile$$,,g'`; do \ $(MAKE) -C $$dir $@; \ done + +distclean-makefiles: + find */ -name 'Makefile*' | xargs rm -f diff --git a/testcases/open_posix_testsuite/conformance/behavior/timers/LDLIBS b/testcases/open_posix_testsuite/conformance/interfaces/clock_settime/LDLIBS similarity index 100% copy from testcases/open_posix_testsuite/conformance/behavior/timers/LDLIBS copy to testcases/open_posix_testsuite/conformance/interfaces/clock_settime/LDLIBS diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/25-3.c b/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/25-3.c index 7354c60..4415c03 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/25-3.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/25-3.c @@ -14,9 +14,9 @@ * * @pt:SS */ +#include <errno.h> #include <sched.h> #include <stdio.h> -#include <errno.h> #include <unistd.h> #include "posixtest.h" @@ -51,9 +51,18 @@ int main(){ printf("This process does not have the permission to set its own scheduling parameter.\nTry to launch this test as root\n"); return PTS_UNRESOLVED; } else { - perror("Unknow error"); + perror("Unknown error"); return PTS_FAIL; } } +#elif _POSIX_SPORADIC_SERVER == -1 +int +main(void) { + printf("_POSIX_SPORADIC_SERVER support not available\n"); + return PTS_UNRESOLVED; +} + +#else +#error "_POSIX_SPORADIC_SERVER not defined correctly" #endif diff --git a/testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS b/testcases/open_posix_testsuite/conformance/interfaces/sem_destroy/LDLIBS similarity index 100% copy from testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS copy to testcases/open_posix_testsuite/conformance/interfaces/sem_destroy/LDLIBS diff --git a/testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS b/testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/LDLIBS similarity index 100% copy from testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS copy to testcases/open_posix_testsuite/conformance/interfaces/sem_getvalue/LDLIBS diff --git a/testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS b/testcases/open_posix_testsuite/conformance/interfaces/sem_init/LDLIBS similarity index 100% copy from testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS copy to testcases/open_posix_testsuite/conformance/interfaces/sem_init/LDLIBS diff --git a/testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS b/testcases/open_posix_testsuite/conformance/interfaces/sem_unlink/LDLIBS similarity index 100% copy from testcases/open_posix_testsuite/conformance/interfaces/pthread_atfork/LDLIBS copy to testcases/open_posix_testsuite/conformance/interfaces/sem_unlink/LDLIBS diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-1.sh b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-1.sh index cdd5f39..509b806 100755 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-1.sh +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-1.sh @@ -9,4 +9,4 @@ # Test various methods of adding invalid signals to sigrelse(). # -conformance/interfaces/sigrelse/3-core-buildonly.test 1 +conformance/interfaces/sigrelse/3-core.test 1 diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-2.sh b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-2.sh index 9d500ef..c4a1d64 100755 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-2.sh +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-2.sh @@ -9,4 +9,4 @@ # Test various methods of adding invalid signals to sigrelse(). # -conformance/interfaces/sigrelse/3-core-buildonly.test 2 +conformance/interfaces/sigrelse/3-core.test 2 diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-3.sh b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-3.sh index 247fea6..1f725da 100755 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-3.sh +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-3.sh @@ -9,4 +9,4 @@ # Test various methods of adding invalid signals to sigrelse(). # -conformance/interfaces/sigrelse/3-core-buildonly.test 3 +conformance/interfaces/sigrelse/3-core.test 3 diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-4.sh b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-4.sh index 8bb8daa..add0504 100755 --- a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-4.sh +++ b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-4.sh @@ -9,4 +9,4 @@ # Test various methods of adding invalid signals to sigrelse(). # -conformance/interfaces/sigrelse/3-core-buildonly.test 4 +conformance/interfaces/sigrelse/3-core.test 4 diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-core-buildonly.c b/testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-core.c similarity index 100% rename from testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-core-buildonly.c rename to testcases/open_posix_testsuite/conformance/interfaces/sigrelse/3-core.c diff --git a/testcases/open_posix_testsuite/functional/Makefile b/testcases/open_posix_testsuite/functional/Makefile index e67c7cf..9de651a 100644 --- a/testcases/open_posix_testsuite/functional/Makefile +++ b/testcases/open_posix_testsuite/functional/Makefile @@ -8,3 +8,6 @@ all clean install test: @for dir in `ls -d */Makefile 2>/dev/null | sed -e 's,/Makefile$$,,g'`; do \ $(MAKE) -C $$dir $@; \ done + +distclean-makefiles: + find */ -name 'Makefile*' | grep -v threads/Makefile | xargs rm -f diff --git a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh index 71cd1f5..710e774 100755 --- a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh +++ b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh @@ -16,7 +16,7 @@ # Garrett Cooper, June 2010 # -AUTHORDATE=$(grep "Garrett Cooper" "$0" | head -n 1) +AUTHORDATE=$(grep "Garrett Cooper" "$0" | head -n 1 | sed 's,# *,,') export PATH="$PATH:$(dirname "$0")" generate_locate_test_makefile() { @@ -27,7 +27,7 @@ generate_locate_test_makefile() { locate-test --$maketype | sed -e 's,^./,,g' > make-gen.$maketype - generate_makefile make-gen.$maketype $* + generate_makefiles make-gen.$maketype $* rm -f make-gen.$maketype @@ -38,39 +38,26 @@ generate_makefile() { local make_target_prereq_cache= local prereq_cache= - local make_gen_list=$1; shift - local suffix=$1; shift - local compiler_args=$* + local makefile=$1 + local prereq_dir=$2 + local compiler_args=$3 + shift 3 - while read filename; do + prereq_cache="$*" - prereq_dir=$(dirname "$filename") + # Add all source files to $make_target_prereq_cache. + for prereq in $prereq_cache; do + if echo "$prereq" | grep -q 'test$'; then + if [ "$make_target_prereq_cache" != "" ]; then + make_target_prereq_cache="$make_target_prereq_cache " + fi + make_target_prereq_cache="$make_target_prereq_cache$prereq" + fi + done - # First run. - if [ "$prereq_cache_dir" = "" ] ; then - makefile="$prereq_dir/Makefile" - prereq_cache_dir="$prereq_dir" - elif [ "$prereq_cache_dir" != "$prereq_dir" ]; then + if [ -f "$makefile.1" ]; then - # Add all non-.c files to $make_target_prereq_cache. - for prereq in $prereq_cache; do - if echo "$prereq" | grep -q '.test$'; then - if [ "$make_target_prereq_cache" != "" ]; then - make_target_prereq_cache="$make_target_prereq_cache " - fi - make_target_prereq_cache="$make_target_prereq_cache$prereq" - fi - done - - # Print out the Makefile header for the first round. - if [ ! -f "$makefile.1" ]; then - - # The empty set for {INSTALL,MAKE}_TARGETS is - # because some versions of make (like gmake) - # must predefine the variables beforehand in - # order for the value to be expanded properly - # in the make rules. - cat > "$makefile.1" <<EOF + cat > "$makefile.1" <<EOF # # Automatically generated by $(basename "$0") -- DO NOT EDIT. # @@ -81,7 +68,7 @@ generate_makefile() { # # Path variables. -top_srcdir?= $(echo "$prereq_cache_dir" | sed -E -e 's,[^/]+,\.\.,g') +top_srcdir?= $(echo "$prereq_dir" | sed -E -e 's,[^/]+,\.\.,g') subdir= $prereq_cache_dir srcdir= \$(top_srcdir)/\$(subdir) @@ -95,28 +82,28 @@ CFLAGS+= -I\$(top_srcdir)/include # XXX: for testfrmw.c -- needs to be moved into a library. CFLAGS+= -I\$(srcdir) -EOF +# Include top-level make definitions and submake make definitions. +CFLAGS+= \`grep -v '^#' 2>/dev/null \$(top_srcdir)/CFLAGS\` +CFLAGS+= \`grep -v '^#' 2>/dev/null \$(srcdir)/CFLAGS\` + +LDFLAGS+= \`grep -v '^#' 2>/dev/null \$(top_srcdir)/LDFLAGS\` +LDFLAGS+= \`grep -v '^#' 2>/dev/null \$(srcdir)/LDFLAGS\` - # Include top-level definitions - cat >> "$makefile.1" <<EOF -CFLAGS+= `grep -v '^#' 2>/dev/null CFLAGS` +LDLIBS+= \`grep -v '^#' 2>/dev/null \$(top_srcdir)/LDLIBS\` +LDLIBS+= \`grep -v '^#' 2>/dev/null \$(srcdir)/LDLIBS\` EOF - for var in CFLAGS LDFLAGS LDLIBS; do + fi - if [ -f "$prereq_cache_dir/$var" ]; then + cat >> "$makefile.2" <<EOF +INSTALL_TARGETS+= ${prereq_cache} - cat >> "$makefile.1" <<EOF -$var+= `grep -v '^#' 2>/dev/null $prereq_cache_dir/$var` +MAKE_TARGETS+= ${make_target_prereq_cache} EOF - fi - - done - - cat > "$makefile.3" <<EOF + cat > "$makefile.3" <<EOF all: \$(MAKE_TARGETS) clean: @@ -134,51 +121,61 @@ test: all mkdir -p \$@ EOF - fi - - cat >> "$makefile.2" <<EOF -INSTALL_TARGETS+= ${prereq_cache} - -MAKE_TARGETS+= ${make_target_prereq_cache} - -EOF - # Produce _awesome_ target rules for everything that - # needs it. - for prereq in ${make_target_prereq_cache}; do + # Produce _awesome_ target rules for everything that needs it. + for prereq in ${make_target_prereq_cache}; do - test_name=$(echo "$prereq" | sed -e "s,\.$suffix,,") - c_file="$test_name.c" + test_name=$(echo "$prereq" | sed -e "s,.$suffix,,") + c_file="$test_name.c" - case "$suffix" in - run-test) - grep -q 'main' "$prereq_cache_dir/$c_file" || echo >&2 "$prereq_cache_dir/$c_file should be test." - ;; - test) - grep -q 'main' "$prereq_cache_dir/$c_file" && echo >&2 "$prereq_cache_dir/$c_file should be run-test." - ;; - esac + case "$suffix" in + run-test) + grep -q 'main' "$prereq_dir/$c_file" || echo >&2 "$prereq_dir/$c_file should be test." + ;; + test) + grep -q 'main' "$prereq_dir/$c_file" && echo >&2 "$prereq_dir/$c_file should be run-test." + ;; + esac - COMPILE_STR="\$(CC) $compiler_args \$(CFLAGS) \$(LDFLAGS) -o \$@ \$(srcdir)/$c_file \$(LDLIBS)" + COMPILE_STR="\$(CC) $compiler_args \$(CFLAGS) \$(LDFLAGS) -o \$@ \$(srcdir)/$c_file \$(LDLIBS)" - cat >> "$makefile.4" <<EOF + cat >> "$makefile.3" <<EOF $prereq: \$(srcdir)/$c_file @if $COMPILE_STR >logfile.\$\$\$\$ 2>&1; then \\ - echo "$prereq_cache_dir/$test_name compile PASSED"; \\ - echo "$prereq_cache_dir/$test_name compile PASSED" >> \$(LOGFILE); \\ + echo "$prereq_dir/$test_name compile PASSED"; \\ + echo "$prereq_dir/$test_name compile PASSED" >> \$(LOGFILE); \\ else \\ - echo "$prereq_cache_dir/$test_name compile FAILED"; \\ - (echo "$prereq_cache_dir/$test_name compile FAILED"; cat logfile.\$\$\$\$) >> \$(LOGFILE); \\ + echo "$prereq_dir/$test_name compile FAILED"; \\ + (echo "$prereq_dir/$test_name compile FAILED"; cat logfile.\$\$\$\$) >> \$(LOGFILE); \\ fi; \\ rm -f logfile.\$\$\$\$ EOF - done + done + +} + +generate_makefiles() { + + local prereq_cache= + + local make_gen_list=$1; shift + local suffix=$1; shift + local compiler_args="$@" + + while read filename; do + + prereq_dir=$(dirname "$filename") + + # First run. + if [ "$prereq_cache_dir" = "" ] ; then + prereq_cache_dir="$prereq_dir" + elif [ "$prereq_cache_dir" != "$prereq_dir" ]; then + + generate_makefile "$prereq_cache_dir/Makefile" $prereq_cache_dir "$compiler_args" $prereq_cache # Prep for the next round.. - make_target_prereq_cache= - makefile="$prereq_dir/Makefile" prereq_cache= prereq_cache_dir="$prereq_dir" @@ -193,6 +190,9 @@ EOF done < $make_gen_list + # Dump the last Makefile data cached up. + generate_makefile "$prereq_cache_dir/Makefile" $prereq_cache_dir "$compiler_args" $prereq_cache + } DEFAULT_PREFIX= @@ -212,6 +212,8 @@ generate_locate_test_makefile buildonly "test" -c generate_locate_test_makefile runnable "run-test" find . -name Makefile.1 -exec dirname {} \; | while read dir; do - cat $dir/Makefile.1 $dir/Makefile.2 $dir/Makefile.3 $dir/Makefile.4 > $dir/Makefile - rm $dir/Makefile.1 $dir/Makefile.2 $dir/Makefile.3 $dir/Makefile.4 + if [ -f "$dir/Makefile.2" ]; then + cat $dir/Makefile.1 $dir/Makefile.2 $dir/Makefile.3 > $dir/Makefile + fi + rm $dir/Makefile.1 $dir/Makefile.2 $dir/Makefile.3 done diff --git a/testcases/open_posix_testsuite/stress/Makefile b/testcases/open_posix_testsuite/stress/Makefile index 5523b02..04e78cd 100644 --- a/testcases/open_posix_testsuite/stress/Makefile +++ b/testcases/open_posix_testsuite/stress/Makefile @@ -8,3 +8,6 @@ all clean install test: @for dir in `ls -d */Makefile 2>/dev/null | sed -e 's,/Makefile$$,,g'`; do \ $(MAKE) -C $$dir $@; \ done + +distclean-makefiles: + find */ -name 'Makefile*' | xargs rm -f hooks/post-receive -- ltp |