
On Tue, Aug 25, 2020 at 11:29:21AM +0200, Pavel Hrdina wrote:
On Tue, Aug 25, 2020 at 09:44:41AM +0100, Daniel P. Berrangé wrote:
On Mon, Aug 24, 2020 at 06:15:57PM -0700, Scott Shambarger wrote:
On 2020-08-24 02:34, Daniel P. Berrangé wrote:
I don't think we want to keep compatibility with any libtool quirks. We should do the right thing for the platform, and I think that means using the platform native suffix for shared library modles correctly.
Of course... we'd still have to deal with meson quirks (it suffixes modules with .dylib instead of .bundle on MacOS).
I'm happy to take a crack at a patch using the platform suffix in the code... any idea how to configure meson to put the module suffix into config.h? (I'm kinda new to meson - would be easy in autoconf :)
I wouldn't bother - just #ifdef __APPLE__ in the source code
Meson doesn't export any function to get the default suffix but they have clear definition of the default suffixes:
'By default, for shared libraries this is dylib on macOS, dll on Windows, and so everywhere else.'
As we don't care about Windows in this case we can hard-code .dylib in meson or in source code. With meson you would do something like this in meson.build:
if host_machine.system() == 'darwin' conf.set('MODULE_SUFFIX', '.dylib') else conf.set('MODULE_SUFFIX', '.so') endif
The conf variable is then used to generate meson-config.h which is included in config.h
I don't think that adds any value over just using an #ifdef in the source. Arguably it makes it worse, as you can't see what's happening in the source without serching for the definition of MODULE_SUFFIX in meson. Autoconf skewed our POV towards using defining config.h variables for everything, because when you have a big hammer, everything looks like a nail. We should resist the urge to just blindly follow the same approach we did with autoconf. Use meson generated config.h variables only where truly adding value. ie things that are a response to user config params to meson, or things that we needed to auto-detect from host OS. ...
Or as Dan suggested you can do #ifdef somewhere in source code.
...If it can just be a siple #ifdef in the source though, just do that and skip meson-confg.h Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|