VirtualBox

Changeset 100576 in vbox


Ignore:
Timestamp:
Jul 14, 2023 1:56:58 PM (19 months ago)
Author:
vboxsync
Message:

Additions/VBoxClient: More trickery needed in order to get this working on Solaris, as the required libs don't have any suffixes there. For that we now use a macro which can generate different .def files for different Oses on-the-fly. See comments for details. Only tested on Linux so far. bugref:10427

Location:
trunk/src/VBox
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk

    r100247 r100576  
    200200
    201201ifdef VBOX_WITH_VBOXCLIENT_LAZY_LOAD
     202 # Macro for generating the lazy loading assembly stub loader for a specific .def file.
     203 #
     204 # @param 1  Absolute path of the .def file to use as a template.
     205 # @param 2  The library name w/o suffix (e.g. "libFoo").
     206 # @param 3  The library version, to be appended to the library .so name (e.g. "6.42" -> "libFoo.so.6.42").
     207 define def_libToLazyLoad
     208        VBoxClient_SOURCES += \
     209                $$(VBoxClient_0_OUTDIR)/$(2)LazyLoad.asm
     210        VBoxClient_CLEAN   += \
     211                $$(VBoxClient_0_OUTDIR)/$(2).def \
     212                $$(VBoxClient_0_OUTDIR)/$(2)LazyLoad.asm
     213        $$$$(VBoxClient_0_OUTDIR)/$(2).def: \
     214                $$(PATH_ROOT)/src/VBox/GuestHost/$(2).def $(MAKEFILE_CURRENT) | $$$$(dir $$@)
     215                $$(call MSG_GENERATE,$(2).def,$$@,$$<)
     216                $$(eval LIB_TO_LAZYLOAD_SUFF=$$$$(if $(3),$(SUFF_DLL).$(3),$(SUFF_DLL)))
     217                $$(QUIET)$$(RM) -f $$@
     218                $$(QUIET)$$(REDIRECT) -o $$@ -- $$(SED) -e "s+@VBOX_LAZYLOAD_DEF_LIB_STRING@+$(2)$$(LIB_TO_LAZYLOAD_SUFF)+g" $$(PATH_ROOT)/src/VBox/GuestHost/$(2).def
     219        $$$$(VBoxClient_0_OUTDIR)/$(2)LazyLoad.asm: $$$$(VBoxClient_0_OUTDIR)/$(2).def $$(VBOX_DEF_2_LAZY_LOAD) | $$$$(dir $$@)
     220                $$(call MSG_TOOL,VBoxDef2LazyLoad,VBoxClient,$$(VBoxClient_0_OUTDIR)/$(2).def -> $$@)
     221                $$(QUIET)$$(RM) -f -- "$$@"
     222                $$(QUIET)$$(VBOX_DEF_2_LAZY_LOAD) --system --library $(2)$(SUFF_DLL).$(3) --output "$$@" $$(VBoxClient_0_OUTDIR)/$(2).def
     223 endef # VBOXCLIENT_LAZYLOAD_GEN_ASM_FN
     224
    202225 VBoxClient_DEFS    += VBOX_WITH_VBOXCLIENT_LAZY_LOAD
    203  # Dynamic import no. 1: libX11.so.6
    204  VBoxClient_SOURCES += \
    205         $(VBoxClient_0_OUTDIR)/libX11LazyLoad.asm
    206  VBoxClient_CLEAN         += $(VBoxClient_0_OUTDIR)/libX11LazyLoad.asm
    207  $$(VBoxClient_0_OUTDIR)/libX11LazyLoad.asm: $(PATH_ROOT)/src/VBox/GuestHost/libX11.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
    208         $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxClient,$(filter %.def, $^),$@)
    209         $(QUIET)$(RM) -f -- "$@"
    210         $(VBOX_DEF_2_LAZY_LOAD) --system --library libX11.so.6 --output "$@" $(filter %.def, $^)
    211 
    212  # Dynamic import no. 2: libXt.so.6
    213  VBoxClient_SOURCES += \
    214         $(VBoxClient_0_OUTDIR)/libXtLazyLoad.asm
    215  VBoxClient_CLEAN         += $(VBoxClient_0_OUTDIR)/libXtLazyLoad.asm
    216  $$(VBoxClient_0_OUTDIR)/libXtLazyLoad.asm: $(PATH_ROOT)/src/VBox/GuestHost/libXt.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
    217         $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxClient,$(filter %.def, $^),$@)
    218         $(QUIET)$(RM) -f -- "$@"
    219         $(VBOX_DEF_2_LAZY_LOAD) --system --library libXt.so.6 --output "$@" $(filter %.def, $^)
    220 
    221  # Dynamic import no. 3: libXmu.so.6
    222  VBoxClient_SOURCES += \
    223         $(VBoxClient_0_OUTDIR)/libXmuLazyLoad.asm
    224  VBoxClient_CLEAN         += $(VBoxClient_0_OUTDIR)/libXmuLazyLoad.asm
    225  $$(VBoxClient_0_OUTDIR)/libXmuLazyLoad.asm: $(PATH_ROOT)/src/VBox/GuestHost/libXmu.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
    226         $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxClient,$(filter %.def, $^),$@)
    227         $(QUIET)$(RM) -f -- "$@"
    228         $(VBOX_DEF_2_LAZY_LOAD) --system --library libXmu.so.6 --output "$@" $(filter %.def, $^)
    229 
    230  # Dynamic import no. 4: libXrandr.so.2
    231  VBoxClient_SOURCES += \
    232         $(VBoxClient_0_OUTDIR)/libXrandrLazyLoad.asm
    233  VBoxClient_CLEAN         += $(VBoxClient_0_OUTDIR)/libXrandrLazyLoad.asm
    234  $$(VBoxClient_0_OUTDIR)/libXrandrLazyLoad.asm: $(PATH_ROOT)/src/VBox/GuestHost/libXrandr.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@)
    235         $(call MSG_TOOL,VBoxDef2LazyLoad,VBoxClient,$(filter %.def, $^),$@)
    236         $(QUIET)$(RM) -f -- "$@"
    237         $(VBOX_DEF_2_LAZY_LOAD) --system --library libXrandr.so.2 --output "$@" $(filter %.def, $^)
     226
     227 # Define library versions to use, depending on the OS we build for.
     228 # Note: Solaris does *not* have any of those libs with a version suffix, so simply keep those empty (= unset) then.
     229 if1of ($(KBUILD_TARGET), linux)
     230  LIBX11_VER=6
     231  LIBXT_VER=6
     232  LIBXMU_VER=6
     233  LIBXRANDR_VER=2
     234 endif
     235 ## Dynamic import no. 1: libX11.so.6
     236 $(evalcall2 def_libToLazyLoad,$(PATH_ROOT)/src/VBox/GuestHost/libX11.def,libX11,$(LIBX11_VER))
     237 ## Dynamic import no. 2: libXt.so.6
     238 $(evalcall2 def_libToLazyLoad,$(PATH_ROOT)/src/VBox/GuestHost/libXt.def,libXt,$(LIBXT_VER))
     239 ## Dynamic import no. 3: libXmu.so.6
     240 $(evalcall2 def_libToLazyLoad,$(PATH_ROOT)/src/VBox/GuestHost/libXmu.def,libXmu,$(LIBXMU_VER))
     241 ## Dynamic import no. 4: libXrandr.so.2
     242 $(evalcall2 def_libToLazyLoad,$(PATH_ROOT)/src/VBox/GuestHost/libXrandr.def,libXrandr,$(LIBXRANDR_VER))
    238243endif
    239244
  • trunk/src/VBox/GuestHost/libX11.def

    r99566 r100576  
    2626;
    2727
    28 LIBRARY libX11.so.6
     28LIBRARY @VBOX_LAZYLOAD_DEF_LIB_STRING@
    2929EXPORTS
    3030    _XData32
  • trunk/src/VBox/GuestHost/libXmu.def

    r99564 r100576  
    2525; SPDX-License-Identifier: GPL-3.0-only
    2626;
    27 LIBRARY libXmu.so.6
     27LIBRARY @VBOX_LAZYLOAD_DEF_LIB_STRING@
    2828EXPORTS
    2929    XmuClientWindow
    30 
  • trunk/src/VBox/GuestHost/libXrandr.def

    r99564 r100576  
    2525; SPDX-License-Identifier: GPL-3.0-only
    2626;
    27 LIBRARY libXrandr.so.2
     27LIBRARY @VBOX_LAZYLOAD_DEF_LIB_STRING@
    2828EXPORTS
    2929    XRRAddOutputMode
     
    4848    XRRSetScreenSize
    4949    XRRUpdateConfiguration
    50 
  • trunk/src/VBox/GuestHost/libXt.def

    r99564 r100576  
    2525; SPDX-License-Identifier: GPL-3.0-only
    2626;
    27 LIBRARY libXt.so.6
     27LIBRARY @VBOX_LAZYLOAD_DEF_LIB_STRING@
    2828EXPORTS
    2929    applicationShellWidgetClass         DATA
     
    5252    XtVaAppCreateShell
    5353    XtWindow
    54 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette