- Include <alloca.h> even on non-__GNUC__ systems.

- Add some tests for unresolved bugs.
This commit is contained in:
Paul Smith 2009-10-03 20:08:20 +00:00
parent 56653d8524
commit f87715a62c
7 changed files with 99 additions and 43 deletions

View File

@ -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.

View File

@ -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;
}

29
make.h
View File

@ -23,27 +23,24 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#undef HAVE_CONFIG_H
#define HAVE_CONFIG_H 1
/* AIX requires this to be the first thing in the file. */
#ifndef __GNUC__
# if HAVE_ALLOCA_H
# include <alloca.h>
# else
# ifdef _AIX
#pragma alloca
# 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
/* AIX requires this to be the first thing in the file. */
#if HAVE_ALLOCA_H
# include <alloca.h>
#else
# ifdef _AIX
#pragma alloca
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
char *alloca ();
# endif
# endif
#endif
#ifdef CRAY
/* This must happen before #include <signal.h> so

View File

@ -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

View File

@ -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;

View File

@ -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");
run_make_test(q!
TMP := $(MAKE)
MAKE := $(subst X=$(X),,$(MAKE))
all:
@echo $(TMP)
$(MAKE) -f #MAKEFILE# foo
# The Contents of the MAKEFILE ...
foo:
@echo $(MAKE)
!,
'',
"#MAKEPATH#\n#MAKEPATH# -f #MAKEFILE# foo\n"
. "#MAKE#[1]: Entering directory `#PWD#'\n"
. "#MAKEPATH#\n#MAKE#[1]: Leaving directory `#PWD#'\n");
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));
rmfiles("foo");
1;

View File

@ -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;