libtool-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]