OS checks with configuration time DLOPEN_NEEDS_LIBDL

Richard PALO richard at netbsd.org
Wed Sep 30 07:38:48 PDT 2015

Le 22/09/15 18:51, Norbert Thiebaud a écrit :
> On Tue, Sep 22, 2015 at 6:31 AM, Richard PALO <richard at netbsd.org> wrote:
>> Since GUIBASE was replaced with the equivalent OS checks, there seems
>> to be a bit of abandon in keeping multiple OSes up to snuff.
>> in https://gerrit.libreoffice.org/#/c/18591/  I took our base in pkgsrc and
>> given the biggest difference in unix systems is the need for -ldl or not for dlopen,
>> I added a configuration check for DLOPEN_NEEDS_LIBDL and updated a number of the existing
>> OS checks to check simultaneously for, among others, %BSD and SOLARIS in addition to LINUX.
>> It would be nice to get some review on this approach.
> Jenkins got us a first review. the patch break on windows because it seems that
> AC_SEARCH_LIBS([dlopen],
> trigger a search of gcc...
> is there any chance that is relevant for windows ? if not the 'if
> test' that out of configure ofr cygwin case (and prolly for macosx
> case as at bes it will work , but it can pick up accidentally some
> crap if the mac has some extra stuff installed)
> that being said couldn't this be done without putting all that logic
> in the 'client' makefile.
> and just have $(if $(DLOPEN_NEEDS_LIBDL), -ldl) logic in gbuild and
> define a gb_LIBDL defined to -ldl or empty (most likely in
> RepositoryExternal.mk or in platform/* not sure on top of my head
> which is the cleanest.
> and then have for example
> $(eval $(call gb_Executable_add_libs,gengal,\
>     $(gb_LIBDL) \
>     -lpthread \
> (and yes that could be extended to the few place that do the same kind
> of exercise with lpthread... and there is maybe an even better way but
> one step at the time...)
> also you may want to split the part of the patch that touch
> Repositoty.mk as that seems somewhat orthogonal with the -ldl stuff
> Norbert

Well, personally I'm of the opinion that configure is the typical place for this type
of check, in order to leave more pertinent things in platform...

I added an `if test $_OS != "WINNT"` guard, I believe that should be ok.
As far as -lpthread, I guess I agree...  I can add that to this now as well,
or it could be a follow up patch.

gerrit updated, if it's possible to launch a jenkins run.

Also, I wonder if it is worthwhile to already fix all (or most of) the cases :
> richard at omnis:/home/richard/src/libreoffice$ git grep -w '\-ldl\>' -- '*.mk' |grep -v DLOPEN_NEED
> bridges/Library_cpp_uno.mk:	-ldl \
> chart2/Library_chartcore.mk:	-ldl \
> chart2/Library_chartopengl.mk:	-ldl \
> clew/Library_clew.mk:	-ldl \
> connectivity/Library_postgresql-sdbc-impl.mk:	$(if $(filter-out MACOSX,$(OS)),-ldl) \
> extensions/Executable_pluginapp.bin.mk:	-ldl \
> extensions/Executable_pluginapp.bin.mk:	-ldl \
> extensions/Library_scn.mk:	-ldl \
> external/clucene/Library_clucene.mk:	-ldl \
> external/libxslt/ExternalProject_xslt.mk:			$(if $(SYSBASE),$(if $(filter SOLARIS LINUX,$(OS)),-L$(SYSBASE)/lib -L$(SYSBASE)/usr/lib -lpthread -ldl))" \
> external/mysqlcppconn/Library_mysqlcppconn.mk:	$(if $(filter-out MACOSX,$(OS)),-ldl) \
> external/neon/Library_neon.mk:	-ldl \
> external/redland/ExternalProject_raptor.mk:			$(if $(SYSBASE),$(if $(filter LINUX SOLARIS,$(OS)),-L$(SYSBASE)/lib -L$(SYSBASE)/usr/lib -lpthread -ldl))" \
> external/redland/ExternalProject_rasqal.mk:			$(if $(SYSBASE),$(if $(filter LINUX SOLARIS,$(OS)),-L$(SYSBASE)/lib -L$(SYSBASE)/usr/lib -lpthread -ldl))" \
> external/redland/ExternalProject_redland.mk:			$(if $(SYSBASE),$(if $(filter LINUX SOLARIS,$(OS)),-L$(SYSBASE)/lib -L$(SYSBASE)/usr/lib -lpthread -ldl))" \
> libreofficekit/CppunitTest_libreofficekit_tiledrendering.mk:    -ldl \
> odk/Executable_unoapploader.mk:    $(if $(filter-out FREEBSD NETBSD DRAGONFLY,$(OS)),-ldl) \
> pyuno/Library_pyuno_wrapper.mk:	-ldl \
> sal/Library_sal.mk:		-ldl \
> setup_native/Library_getuid.mk:	-ldl \
> smoketest/Executable_libtest.mk:	-ldl \
> ucb/Library_ucpdav1.mk:	-ldl \
> vcl/Executable_xid_fullscreen_on_all_monitors.mk:    -ldl \
> vcl/Library_vclplug_gen.mk:	-ldl \
> vcl/Library_vclplug_gtk.mk:	-ldl \
> vcl/Library_vclplug_gtk3.mk:	-ldl \
> vcl/Library_vclplug_kde4.mk:	-ldl \
> vcl/Library_vclplug_tde.mk:	-ldl \
> vcl/StaticLibrary_glxtest.mk:	-ldl \
> xmlsecurity/Library_xsec_xmlsec.mk:	-ldl \

Richard PALO

More information about the LibreOffice mailing list