automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Automake,cygwin: 'make clean' with libtool wrappers...


From: Charles Wilson
Subject: Re: Automake,cygwin: 'make clean' with libtool wrappers...
Date: Wed, 08 May 2002 00:58:38 -0400
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2

Alexandre Duret-Lutz wrote:

"Charles" == Charles Wilson <address@hidden> writes:


[...]

 >> So let's make a new test case to be on the safe side.  Could you
 >> try the following and confirm it FAILs before and PASSes after
 >> your patch?

 Charles> Okay, first I'm not sure how this tests
 Charles> clean-*PROGRAMS, since it doesn't build any
 Charles> executables (on purpose).  It only builds a library.

Ooops! :)  Does the following look better?



Better, but not quite. When using "noinst_LTLIBRARIES", the library is built as a static archive. Therefore, there is no "need" for a wrapper -- since the program is linked statically. You have to use 'lib_LTLIBRARIES" instead, so that the library is built as a shared lib, and the executable is linked dynamically -- requiring a wrapper script.

With that change(*), then this test fails without your-version-of-my-patch to progs.am, and passes with that patch to progs.am.

(*) I had to manually delete 'a.exe' at appropriate times during the test, in the appropriate directories; that problem is unrelated to this.

******************************************************

I also tracked down the a.exe problem to libtool.m4 (line 3150) within the g++ configuration block (20020502 CVS):

-----------------------------------
    esac
  done

  # Clean up.
  rm -f a.out  <<<<<<< HERE
else
  echo "libtool.m4: error: problem compiling C++ test program"
fi

$rm -f confest.$objext

case " $_LT_AC_TAGVAR(postdeps, $1) " in
*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-------------------------------------

Scanning through configure, I see that in many places -- even after 'EXEEXT' has been found, both a.out and a.exe are explicitly removed:

rm -f a.out a.exe conftest$ac_cv_exeext

I also notice that there is an explicit test for "C compiler default output" -- but none for "C++ compiler default output".

Is this an autoconf bug AND a libtool bug -- autoconf doesn't test for C++ "default output" variable, and libtool.m4 should use that variable (rm -f ${cxx_default_output))?

Or is it purely a libtool bug, and libtool.m4 should just 'rm -f a.out a.exe' and not just 'rm -f a.out'?

--Chuck






reply via email to

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