Re: On Mac Ventura, Pike v9 missing GMP symbols

Mike Kilmer <[email protected]> Mon, 11 Mar 2024 18:45:42 -0500
Newsgroups gmane.comp.lang.pike.user
Message-ID <[email protected]>
Okay. Seems like we're getting there:

echo Lang: $LANG
echo Locale: $LOCALE
Lang: en_US.UTF-8
Locale:

make linker_options
sed: 1: "s@-L/usr/local/opt/ruby ...": bad flag in substitute command: =
'@'
echo =
/Users/mikekilmer/pike/build/darwin-22.6.0-x86_64/modules/Gmp/module.a  =
> linker_options

So perhaps it is a SED error, but a different one than that linked in =
the issue.

echo $LDFLAGS
-L/usr/local/opt/ruby/lib -L/usr/local/opt/postgresql@15/lib =
-L/usr/local/opt/icu4c/lib -L/usr/local/lib

On version 8, manually adding -lgmp to linker_options seemed to work, =
but on version 9 not (maybe I'm doing something wrong this time).

This is what I have in Gmp/linker_options:

/Users/mikekilmer/pike/build/darwin-22.6.0-x86_64/modules/Gmp/module.a =
-lgmp

Same in modules/linker_options:

/Users/mikekilmer/pike/build/darwin-22.6.0-x86_64/modules/Gmp/module.a =
-lgmp


> On Mar 11, 2024, at 5:08 PM, [email protected] wrote:
>=20
> Yes, that's sort of what I was getting at. The error seems like it's =
not trying to link the gmp library. Is the library present in your =
/usr/local/lib? You could try adding -lgmp to modules/linker_options and =
modules/Gmp/linker_options? If you can avoid triggering a rewrite of =
those files, it should try to link with -lgmp added.
>=20
> A little more detail:
>=20
> MODULE_LDFLAGS is used as input to the linker_options make target in =
the modules/Gmp directory, which is then used to generate the =
modules/linker_options file, which is used to statically link a few =
modules into the pike binary (Gmp and Stdio, in particular).
>=20
> linker_options is generated by running MODULE_LDFLAGS through a sed =
command, and if the sed command fails, it doesn't include any libs. Is =
it possible you're running into this:
>=20
> https://git.lysator.liu.se/pikelang/pike/-/issues/10082
>=20
> ?
>=20
> Can you run the following commands in the build/.../modules/Gmp =
directory and upload all of the results somewhere?
>=20
> echo Lang: $LANG
> echo Locale: $LOCALE
> rm linker_options
> make linker_options
> cat linker_options
>=20
> Bill
>=20
> On 2024-03-11 10:15, Mike Kilmer wrote:
>> Poking around further, linker_options contains:
>> =
/Users/mikekilmer/pike/build/darwin-22.6.0-x86_64/modules/Gmp/module.a
>> Chris says that his (Debian) install includes the -lgmp option at the
>> end of that path.
>> config.status contains:
>> S["LIBS"]=3D" -lgmp"
>> Makefile:
>> MODULE_LDFLAGS=3D-L/usr/local/opt/ruby/lib
>> -L/usr/local/opt/postgresql@15/lib -L/usr/local/opt/icu4c/lib \
>> -L/usr/local/lib -framework Foundation -framework System -framework
>> CoreServices \
>> =
-L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoo=
lchain/usr/lib/clang/14.0.3
>> \
>>  -ldl -lutil -lm -lpoll -framework CoreServices -lgmp
>> gmp_machine.h:
>>> #define HAVE_GMP_H 1
>>> #define HAVE_LIBGMP 1
>> Mike