[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Support for Interix 5.2 and 6.0?
From: |
Martin Koeppe |
Subject: |
Re: Support for Interix 5.2 and 6.0? |
Date: |
Tue, 3 Apr 2007 21:10:48 +0200 (CEST) |
Hello Ralf,
On Mon, 2 Apr 2007, Ralf Wildenhues wrote:
Hello Martin,
* Martin Koeppe wrote on Wed, Mar 28, 2007 at 11:23:14PM CEST:
I now downloaded libtool-2.1a as of 20070328 13:48 +0200,
applied the patch below and did a complete re-test, i.e. I renamed both the
"make"s to "make.gnu" and "make.itx" respectively,
made sure that there is no plain "make" in PATH, and built both on 3.5 and
5.2 with both make's. (./configure MAKE=make.{gnu,itx})
[...]
On 5.2 with Interix make, however, there is no build! I ran:
$ ./configure MAKE=make.itx
[ normal configure output ]
Of this normal output, please show the bits around
| checking whether make.itx sets $(MAKE)
(config.log should have those bits, too).
Yes, it does set MAKE, config.log, but see below:
configure:2139: checking for a BSD-compatible install
configure:2195: result: /bin/install -c
configure:2206: checking whether build environment is sane
configure:2249: result: yes
configure:2314: checking for gawk
configure:2330: found /bin/gawk
configure:2341: result: gawk
configure:2352: checking whether make.itx sets $(MAKE)
configure:2373: result: yes
configure:2564: checking whether subdir libobjs are useable
configure:2577: result: no
configure:2669: checking for gcc
configure:2685: found /opt/gcc.3.3/bin/gcc
configure:2696: result: gcc
configure:2934: checking for C compiler version
configure:2941: gcc --version >&5
gcc (GCC) 3.3
Copyright (C) 2003 Free Software Foundation, Inc.
I also just rerun ./configure MAKE=make.itx with the new 2.61/1.10
built libtool as of 20070403 12:00 +0200 (note libobjs useability):
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... libltdl/config/install-sh -c -d
checking for gawk... gawk
checking whether make.itx sets $(MAKE)... yes
checking whether subdir libobjs are useable... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make.itx... GNU
checking dependency style of gcc... gcc3
checking whether gcc and cc understand -c and -o together... yes
checking how to run the C preprocessor... gcc -E
[...]
$ make.itx
cd . && /bin/sh /tmp/libtool-2.1a/libltdl/config/missing --run aclocal-1.10 -I
libltdl/m4
/tmp/libtool-2.1a/libltdl/config/missing: line 54: aclocal-1.10: command not
found
WARNING: `aclocal-1.10' is missing on your system. You should only need it if
you modified `acinclude.m4' or `configure.ac'. You might want
to install the `Automake' and `Perl' packages. Grab them from
any GNU archive site.
cd . && /bin/sh /tmp/libtool-2.1a/libltdl/config/missing --run autoconf
/bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure MAKE=make.itx --no-create
--no-recursion
## ------------------------------------------------------------ ##
## Configuring libtool (Build: 1.2442 2007/03/29 22:24:31) 2.1a ##
## ------------------------------------------------------------ ##
checking for a BSD-compatible install... /bin/install -c
[...]
checking if g77 static flag -static works... no
checking if g77 supports -c -o file.o... yes
checking if g77 supports -c -o file.o... (cached) yes
checking whether the g77 linker (/opt/gcc.3.3/i586-pc-interix3/bin/ld)
supports
shared libraries... yes
checking dynamic linker characteristics... Interix 3.x ld.so.1 (PE,
like ELF)
checking how to hardcode library paths into programs... immediate
checking for gcj... no
checking for windres... no
configure: creating ./config.status
/bin/sh /tmp/libtool-2.1a/libltdl/config/install-sh -d . libltdl/
cp ./libltdl/argz_.h libltdl/argz.h-t
mv libltdl/argz.h-t libltdl/argz.h
cd . && /bin/sh /tmp/libtool-2.1a/libltdl/config/missing --run
autoheader
rm -f stamp-h1
touch ./config-h.in
cd . && /bin/sh ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
make all-recursive
make: not found
*** Error code 1
Stop.
But it also reconfigures and fails.
So Interix make decides to rerun ./configure while GNU make doesn't, and at
some point there must be hardcoded "make"! configure isn't rerun by GNU
make, so the bug might be hidden for it.
Please show output of
grep '^MAKE' Makefile
grep '\<make\>' Makefile
However, I now found out why 'make' is called. Interix make has some
standard build rules in /usr/share/mk/sys.mk, which also define
MAKE=make. When calling "make.itx -r", then MAKE and also MAKEFLAGS
are set correctly and sys.mk isn't read.
When using Interix make without -r, AC_PROC_MAKE_SET isn't smart
enough to check if MAKE is not just set, but also set correctly.
When OTOH one calls
$ ./configure MAKE=make.itx MAKEFLAGS=-r
and later
$ make.itx -r
then libtool and/or automake apparently isn't smart enough to call
recursive makes as "$(MAKE) $(MAKEFLAGS)" instead of just "$(MAKE)",
so the second recursion fails again.
Why, however, ./configure is called a second time with make.itx and
not with make.gnu, I couldn't yet figure out. Maybe someone has some
hints?
Martin