summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2009-10-03 20:08:20 +0000
committerPaul Smith <psmith@gnu.org>2009-10-03 20:08:20 +0000
commitf87715a62c2e6a5660c2a176fffc0d7333bcfd8c (patch)
tree815c7f2dcc9e2220f7f21c7d30f7533fdd2a4542
parent56653d852446e74a4d998c7d91e6591e28c240f9 (diff)
downloadgunmake-f87715a62c2e6a5660c2a176fffc0d7333bcfd8c.tar.gz
- Include <alloca.h> even on non-__GNUC__ systems.
- Add some tests for unresolved bugs.
-rw-r--r--ChangeLog6
-rw-r--r--function.c3
-rw-r--r--make.h25
-rw-r--r--tests/ChangeLog9
-rw-r--r--tests/scripts/features/include11
-rw-r--r--tests/scripts/variables/MAKE45
-rw-r--r--tests/scripts/variables/MAKEFLAGS43
7 files changed, 99 insertions, 43 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b894ad..860a1f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-03 Paul Smith <psmith@gnu.org>
+
+ * make.h: Include <alloca.h> even on systems where __GNUC__ is
+ defined. Not sure why it was done the other way.
+ Requested by David Boyce <dsb@boyski.com>.
+
2009-09-30 Boris Kolpackov <boris@codesynthesis.com>
* dep.h (dep): Add the DONTCARE bitfield.
diff --git a/function.c b/function.c
index d3acd8b..ad3e0d2 100644
--- a/function.c
+++ b/function.c
@@ -382,7 +382,8 @@ string_glob (char *line)
idx += len;
result[idx++] = ' ';
- free (chain->name);
+ /* Because we used PARSEFS_NOCACHE above, we have to free() NAME. */
+ free ((char *)chain->name);
free (chain);
chain = next;
}
diff --git a/make.h b/make.h
index 60d1412..f9c7e1b 100644
--- a/make.h
+++ b/make.h
@@ -23,28 +23,25 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#undef HAVE_CONFIG_H
#define HAVE_CONFIG_H 1
+/* Specify we want GNU source code. This must be defined before any
+ system headers are included. */
+
+#define _GNU_SOURCE 1
+
/* AIX requires this to be the first thing in the file. */
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
+#if HAVE_ALLOCA_H
+# include <alloca.h>
+#else
+# ifdef _AIX
#pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
char *alloca ();
-# endif
# endif
# endif
#endif
-/* Specify we want GNU source code. This must be defined before any
- system headers are included. */
-
-#define _GNU_SOURCE 1
-
-
#ifdef CRAY
/* This must happen before #include <signal.h> so
that the declaration therein is changed. */
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 77b37e3..aeee9b4 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,12 @@
+2009-10-03 Paul Smith <psmith@gnu.org>
+
+ * scripts/variables/MAKE: Rewrite for new run_make_test() format.
+
+ * scripts/variables/MAKEFLAGS: Created.
+ Add test for Savannah bug #2216 (still open).
+
+ * scripts/features/include: Test for Savannah bug #102 (still open).
+
2009-09-30 Boris Kolpackov <boris@codesynthesis.com>
* scripts/features/include: Add diagnostics issuing tests for
diff --git a/tests/scripts/features/include b/tests/scripts/features/include
index 7ad4112..ba8908c 100644
--- a/tests/scripts/features/include
+++ b/tests/scripts/features/include
@@ -165,4 +165,15 @@ baz: end
#MAKE#: *** No rule to make target `end', needed by `baz'. Stop.\n",
512);
+if ($all_tests) {
+ # Test that include of a rebuild-able file doesn't show a warning
+ # Savannah bug #102
+ run_make_test(q!
+include foo
+foo: ; @echo foo = bar > $@
+!,
+ '', "#MAKE#: `foo' is up to date.\n");
+ rmfiles('foo');
+}
+
1;
diff --git a/tests/scripts/variables/MAKE b/tests/scripts/variables/MAKE
index 079c57e..d1081da 100644
--- a/tests/scripts/variables/MAKE
+++ b/tests/scripts/variables/MAKE
@@ -1,35 +1,24 @@
# -*-perl-*-
-$description = "The following test creates a makefile to test MAKE \n"
- ."(very generic)";
+$description = "Test proper behavior of the MAKE variable";
$details = "DETAILS";
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "TMP := \$(MAKE)\n";
-print MAKEFILE "MAKE := \$(subst X=\$(X),,\$(MAKE))\n\n";
-print MAKEFILE "all:\n";
-print MAKEFILE "\t\@echo \$(TMP)\n";
-print MAKEFILE "\t\$(MAKE) -f $makefile foo\n\n";
-print MAKEFILE "foo:\n";
-print MAKEFILE "\t\@echo \$(MAKE)\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-# Create the answer to what should be produced by this Makefile
-$answer = "$mkpath\n$mkpath -f $makefile foo\n"
- . "${make_name}[1]: Entering directory `$pwd'\n"
- . "$mkpath\n${make_name}[1]: Leaving directory `$pwd'\n";
-
-&run_make_with_options($makefile,"",&get_logfile,0);
-
-&rmfiles("foo");
-# COMPARE RESULTS
-&compare_output($answer,&get_logfile(1));
+run_make_test(q!
+TMP := $(MAKE)
+MAKE := $(subst X=$(X),,$(MAKE))
+all:
+ @echo $(TMP)
+ $(MAKE) -f #MAKEFILE# foo
+
+foo:
+ @echo $(MAKE)
+!,
+ '',
+ "#MAKEPATH#\n#MAKEPATH# -f #MAKEFILE# foo\n"
+ . "#MAKE#[1]: Entering directory `#PWD#'\n"
+ . "#MAKEPATH#\n#MAKE#[1]: Leaving directory `#PWD#'\n");
+
+rmfiles("foo");
1;
diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS
new file mode 100644
index 0000000..0b567e8
--- /dev/null
+++ b/tests/scripts/variables/MAKEFLAGS
@@ -0,0 +1,43 @@
+# -*-perl-*-
+
+$description = "Test proper behavior of MAKEFLAGS";
+
+$details = "DETAILS";
+
+# Normal flags aren't prefixed with "-"
+run_make_test(q!
+all: ; @echo $(MAKEFLAGS)
+!,
+ '-e -r -R', 'Rre');
+
+# Long arguments mean everything is prefixed with "-"
+run_make_test(q!
+all: ; @echo $(MAKEFLAGS)
+!,
+ '--no-print-directory -e -r -R', '--no-print-directory -Rre');
+
+
+if ($all_tests) {
+ # Recursive invocations of make should accumulate MAKEFLAGS values.
+ # Savannah bug #2216
+ run_make_test(q!
+MSG = Fails
+all:
+ @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
+ @MSG=Works $(MAKE) -e -f #MAKEFILE# jump
+jump:
+ @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
+ @$(MAKE) -f #MAKEFILE# print
+print:
+ @echo '$@: MAKEFLAGS=$(MAKEFLAGS)'
+ @echo $(MSG)
+.PHONY: all jump print
+!,
+ '--no-print-directory',
+ 'all: MAKEFLAGS= --no-print-directory
+jump: MAKEFLAGS= --no-print-directory -e
+print: MAKEFLAGS= --no-print-directory -e
+Works');
+}
+
+1;