bug#9492: cannot override CC when using system copy of libtool ("The wrong-gcc problem")

Ileana Dumitrescu <[email protected]> Mon, 21 Oct 2024 18:22:20 +0300
Newsgroups gmane.comp.gnu.libtool.bugs
Message-ID <[email protected]>
On 19/10/2024 16:57, Maxim Cournoyer wrote:
> Hello Ileana,
> 
> Ileana Dumitrescu <[email protected]> writes:
> 
>> On 13/10/2024 17:01, Maxim Cournoyer wrote:
>>> Hello,
>>> Just a heads-up that this old bug is still relevant.  It means that
>>> one
>>> cannot use libtool stand-alone (without Autotools) and expect
>>> cross-compilation or even just switching temporarily compilers
>>> (e.g. from 'gcc' to 'clang' via CC to test something).  Heres' what the
>>> failure look like:
>>> --8<---------------cut here---------------start------------->8---
>>> libtool: link: gcc -shared -fPIC -DPIC build/obj/Core/.libs/apu.c.o
>>> build/obj/Core/.libs/camera.c.o build/obj/Core/.libs/cheats.c.o
>>> build/obj/Core/.libs/debugger.c.o build/obj/Core/.libs/display.c.o
>>> build/obj/Core/.libs/gb.c.o build/obj/Core/.libs/joypad.c.o
>>> build/obj/Core/.libs/mbc.c.o build/obj/Core/.libs/memory.c.o
>>> build/obj/Core/.libs/printer.c.o build/obj/Core/.libs/random.c.o
>>> build/obj/Core/.libs/rewind.c.o build/obj/Core/.libs/rumble.c.o
>>> build/obj/Core/.libs/save_state.c.o build/obj/Core/.libs/sgb.c.o
>>> build/obj/Core/.libs/sm83_cpu.c.o
>>> build/obj/Core/.libs/sm83_disassembler.c.o
>>> build/obj/Core/.libs/symbol_hash.c.o build/obj/Core/.libs/timing.c.o
>>> build/obj/Core/.libs/workboy.c.o -Wl,-soname -Wl,libsameboy.so.0 -o
>>> build/lib/.libs/libsameboy.so.0.0.0
>>> /gnu/store/gpq3h81bzjpirwnc0fzwsph788b9rwn4-libtool-2.5.3/bin/libtool: line 10778: gcc: command not found
>>> make: *** [Makefile:832: build/lib/libsameboy.la] Error 127
>>> make: *** Waiting for unfinished jobs....
>>> error: in phase 'build': uncaught exception:
>>> --8<---------------cut here---------------end--------------->8---
>>
>> I have not been able to reproduce overriding CC in libtool 2.2.6, but I
>> do not think it would be good practice to do.
> 
> That's what I've been told elsewhere too.  Hence my interest in having
> libtool support it, if that's not too difficult.
> 
>>> That's when building some Make-based software that calls libtool
>>> directly.  Here, the libtool version was built with GCC (has baked
>>> CC="gcc" variable around line 326), which is what it uses when linking
>>> with its $archive_cmds variable defined a bit later (line 368):
>>> --8<---------------cut here---------------start------------->8---
>>> archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib"
>>> --8<---------------cut here---------------end--------------->8---
>>> Seems this should be able to fix?  Check for environment CC, if not
>>> set,
>>> defaults to gcc?  Would this simple fix be enough?
>>>
>>
>> If CC is conditional, other configuration would also need to be
>> conditional for the C compiler set. I have attached two versions of
>> libtool, one with CC=gcc and the other with CC=clang. When diffing them
>> you can see the other variables that would need to be updated if CC was
>> updated at runtime for libtool.
>>
>> If you want to do a quick test and change CC, you can edit the generated
>> libtool to do this and then revert the change after your test. However,
>> you could also generate multiple standalone versions of libtool and
>> switch which is referenced so that the other configuration variables are
>> set properly.
>>
>> I would consider this to be more of a feature request than a bug with
>> libtool to allow for defaults set during configuration to be updated,
>> but there may be files other than libtool generated during configuration
>> that would also need to be updated. Generally, I recommend reconfiguring
>> your project whenever CC is changed.
> 
> The libtool manual doesn't outright says that libtool should NOT be used
> standalone. It doesn't warn against the current gotchas (cannot change
> CC, cannot cross-compile). Hence I'd perhaps consider it a bug.

This section of the libtool manual should help you understand how to use
a system-specific libtool script installed in your binary directory:
https://www.gnu.org/software/libtool/manual/libtool.html#Configuring-libtool

libtool can be used standalone as long as it has been configured for the
"compiler suite and operating system that are used to compile your
package." Cross-compilation is also possible if libtool has been
configured to do it.

To allow CC to be overridden, libtool would not set all of the
configuration variables it needs for the newly set compiler, so it would
not operate correctly. libtool would need to reconfigure itself if CC
was changed during execution... This might be possible if an option was
added to libtool to reconfigure itself, but I am open to other
suggestions for ways to approach making libtool more dynamic for users.

> I'll see if I can get to some required level of M4-foo to attempt some
> partial fix (to get started). I've been trying stuff but without success
> so far, due to the layering of M4 then shell script and still being a
> bit unclear on the expansion order/variables used.
> 
> Thank you.
> 

-- 
Ileana Dumitrescu

GPG Public Key: FA26 CA78 4BE1 8892 7F22 B99F 6570 EA01 146F 7354
OpenPGP_0x6570EA01146F7354.asc (application/pgp-keys, 6.3 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=fGTx
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEE+ibKeEvhiJJ/IrmfZXDqARRvc1QFAmcWcawFAwAAAAAACgkQZXDqARRvc1SA
7A//cb77efqcAtWiTZIAxPpKY9P0WzSmeNEsE9B+cTk2GX0/3hZPb/g3qBriSqyiMJ8aRSTAItYF
4/I97h+llfO5dmBz+gYN808FQt76cnojaZPIGeVoJTexUVXUWhGxo2V9q+alI80p5g7O64Gjih+7
MIqQqHBJAk1qKmHcQKOdo4b+2MCPACClX6iy3JQtQ8V/qHec6iAmoJ78ZozDH+E83sFfRAvG1DPf
Uxqs3bW/ntTUNqnsA/HLj5I301vNPZzkXW3c70UVXSwooNrNPEgBjhP6xrTI7jFQTFPztriXkZmR
p9dnmmnRPAIoph5iSSwOUGPN+k/jQ9nBQ5nS8I7B8jF3nZY/SdPV2UWRA4fmjg32WzDtOa5btL/F
LVtSXS+ZzJeFgkS8MJReZ3XIHF4b9Or08CIfrxWGoIcUnYCkE6x1rrhVoiOT5iSm7jZXZzn6uVZv
DQFMxN6rfmHm0KsX8krkOp7neZ7U+iMnHDt70REcge7flARh/u7GYb69LvDEQGj1Shs9Wo+2Vjqi
oJWTLBgM4VeMVfME8ksm5YI8F+873j0vOE65Ung6/MKGXZHEJEuPriBv259iNcepDfooooAcUSe9
IrQIZNYEw/ZEhsrqyuOYhEk13VM+BAFQRJ6s03CPABbcajVBu9uGGXeZmsJ+zbQMUiJ/BLwlkIWx
K60=
=kDF2
-----END PGP SIGNATURE-----