[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: $(EXEEXT) in TESTS required?
From: |
Bruno Haible |
Subject: |
Re: $(EXEEXT) in TESTS required? |
Date: |
Mon, 23 Jan 2006 21:51:57 +0100 |
User-agent: |
KMail/1.5 |
[For the automake people: The problem is that a Makefile.am snippet like
TESTS = test-lock
check_PROGRAMS = test-lock
test_LOCK_LDFLAGS = -lmyspeciallib
when cross-compiling to mingw on a Unix system with 'wine', will cause
"make check" to build 'test-lock', rather than 'test-lock.exe', thus
executing a compile and link command line that ignores the specific
CPPFLAGS and LDFLAGS. The thread started at
http://lists.gnu.org/archive/html/bug-gnulib/2006-01/msg00175.html]
Ralf Wildenhues wrote:
> Now I wonder how to best "fix" this in Automake:
> - document the fact that $(EXEEXT) should be used in `TESTS', for the
> benefit of cross-compilation,
> - have Automake rewrite TESTS to add $(EXEEXT) where appropriate (is
> this possible in all cases?),
I'm in favour of the second choice, and I claim that it is possible in all
cases. Why? Look at the currently generated tests/Makefile.in:
...
noinst_PROGRAMS =
check_PROGRAMS = test-lock$(EXEEXT)
TESTS = test-lock
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check-TESTS: $(TESTS)
@failed=0; all=0; xfail=0; xpass=0; skip=0; \
...
What you see is:
1) $(TESTS) occurs as a dependency in a target.
2) automake has rewritten the check_PROGRAMS variable.
From 1) I conclude that the TESTS variable cannot contain shell escapes
like backquoted commands,
`show-all-tests`
since they wouldn't work as target dependencies anyway.
Therefore automake can indeed add a variable am_TESTS_DEPENDENCIES
that is constructed from TESTS by adding $(EXEEXT) to all elements that
also occur in the original value of check_PROGRAMS (and maybe also
noinst_PROGRAMS - why not?). Then change
check-TESTS: $(TESTS)
into
check-TESTS: $(am_TESTS_DEPENDENCIES)
and you're done.
From 2) I conclude that it would even be acceptable to change the TESTS
variable itself, to assume the contents of am_TESTS_DEPENDENCIES.
Bruno