[Mesa-dev] The long way to a faster build with shared libs and some fixes ...

Christian König deathsimple at vodafone.de
Wed Sep 11 23:41:10 PDT 2013


I completely agree.

Building everything shared might speed up the build process a little bit 
and save some space, but for the cost of having to handle allot of 
rather small shared libraries where which each clashing the symbol space 
of any application using these drivers with a bunch of unnecessary symbols.

Building everything as one big blob sounds like the better idea.

Christian.

Am 12.09.2013 02:03, schrieb Marek Olšák:
> BTW, the build system fixes would be good to have anyway, but I'm not
> an expert on the Mesa build system.
>
> Marek
>
> On Thu, Sep 12, 2013 at 1:51 AM, Marek Olšák <maraeo at gmail.com> wrote:
>> I don't like this. I prefer to have one big blob for whole Mesa as
>> discussed on Eric's blog:
>>
>> http://anholt.livejournal.com/43652.html
>>
>> I have no problem with longer compile times for release builds if I
>> get a little bit higher CPU performance with link-time optimizations.
>> And for debug builds, we can stick to standard "-O2 -g" or "-O0 -g".
>>
>> Marek
>>
>> On Thu, Sep 12, 2013 at 12:32 AM, Johannes Obermayr
>> <johannesobermayr at gmx.de> wrote:
>>> [PATCH 01/21] ilo: Fix out-of-tree build.
>>>
>>> [PATCH 02/21] Suppress clang's warnings about unused CFLAGS and CXXFLAGS.
>>>
>>> [PATCH 03/21] configure.ac: Save user {C,CXX}FLAGS and append them at end.
>>>
>>> [PATCH 04/21] radeon: Build and use libradeon the right way.
>>>                Link libradeon only once in egl-static
>>>
>>> [PATCH 05/21] gallium/targets: Make use of prebuilt libdricommon.la.
>>>                Avoid duplicate build.
>>>
>>> [PATCH 06/21] Drop support for --enable-static / --disable-shared.
>>>
>>> [PATCH 07/21] gallium/auxiliary: Build libgallium shared.
>>>                Hundreds of symbols to be PUBLIC. But saves on a full build
>>>                19 x ~ 1.8 MB.
>>>
>>> [PATCH 08/21] Drop last parts of compatibility for the old Mesa build
>>>                I want it to avoid these stupid symlinks while distro build but
>>>                with more work on follow-up patches it should be possible to keep
>>>
>>> [PATCH 09/21] mapi: Build libglapi always shared.
>>>                I assume it could be improved later
>>>
>>> [PATCH 10/21] mesa: Build libmesa shared.
>>>                Hundreds of PUBLICs but we can get rid of libdricore and get an
>>>                libmesadri which depends as well as libmesagallium on a libmesacore.
>>>                This really speeds up build since duplicate build in libdricore
>>>                with all PUBLIC can be avoided.
>>>                Also dlopen classic drivers should be faster.
>>>
>>> [PATCH 11/21] Install all internal shared libs to $(libdir)/mesa-$VERSION.
>>>
>>> [PATCH 12/21] Also do it for egl_gallium.so, pipe_*.so and gbm_gallium_drm.
>>>
>>> [PATCH 13/21] Makefile.am: s:-no-undefined:-Wl,--no-undefined to make it work.
>>>                libtool will set it back to allow_undefined=yes in func_mode_link ()
>>>                otherwise.
>>>
>>> [PATCH 14/21] gallium/drivers: Build libs -shared.
>>>
>>> [PATCH 15/21] vdpau,xvmc: Add install-data-hooks to remove unneccessary symlinks.
>>>                libvdpau_*.so.1 and libXvMC*.so libs are dlopened by wrappers.
>>>                Nothing should link them directly.
>>>
>>> [PATCH 16/21] glx: Get rid of libglx.la.
>>>
>>> [PATCH 17/21] gbm: Get rid of libgbm_dri.la.
>>>
>>> [PATCH 18/21] i915: Conditionally build an i915g driver instead of
>>>
>>> [PATCH 19/21] freedreno: Make print_sequence a macro to fix clang.
>>>
>>> [PATCH 20/21] freedreno: One Makefile.am with a Makefile.sources is
>>>
>>> [PATCH 21/21] clover: Force gcc and g++ to fix clang builds.
>>>
>>>
>>> openSUSE x86_64 binary RPMs will look like this:
>>> $ du -a etc/ usr/
>>> 4       etc/drirc
>>> 8       etc/
>>> 88      usr/lib64/libXvMCr600.so
>>> 140     usr/lib64/libEGL.so.1.0.0
>>> 0       usr/lib64/libGL.so.1.2
>>> 380     usr/lib64/libGL.so.1.2.0
>>> 0       usr/lib64/libGLESv1_CM.so.1
>>> 88      usr/lib64/libXvMCr300.so
>>> 36      usr/lib64/libXvMCsoftpipe.so
>>> 212     usr/lib64/mesa-9.2.0/libllvmpipe.so
>>> 608     usr/lib64/mesa-9.2.0/libmesadri.so
>>> 324     usr/lib64/mesa-9.2.0/libmesagallium.so
>>> 1140    usr/lib64/mesa-9.2.0/libnouveau.so
>>> 60      usr/lib64/mesa-9.2.0/libtrace.so
>>> 60      usr/lib64/mesa-9.2.0/pipe_r600.so
>>> 308     usr/lib64/mesa-9.2.0/libr300.so
>>> 20      usr/lib64/mesa-9.2.0/libgalahad.so
>>> 16      usr/lib64/mesa-9.2.0/libnoop.so
>>> 32      usr/lib64/mesa-9.2.0/librbug.so
>>> 60      usr/lib64/mesa-9.2.0/pipe_r300.so
>>> 60      usr/lib64/mesa-9.2.0/pipe_radeonsi.so
>>> 164     usr/lib64/mesa-9.2.0/egl_gallium.so
>>> 152     usr/lib64/mesa-9.2.0/libglapi.so
>>> 136     usr/lib64/mesa-9.2.0/libradeonsi.so
>>> 16      usr/lib64/mesa-9.2.0/libr300-helper.so
>>> 16      usr/lib64/mesa-9.2.0/libidentity.so
>>> 8       usr/lib64/mesa-9.2.0/pipe_nouveau.so
>>> 184     usr/lib64/mesa-9.2.0/libsvga.so
>>> 1888    usr/lib64/mesa-9.2.0/libgallium.so
>>> 20      usr/lib64/mesa-9.2.0/gbm_gallium_drm.so
>>> 1016    usr/lib64/mesa-9.2.0/libr600.so
>>> 20      usr/lib64/mesa-9.2.0/pipe_vmwgfx.so
>>> 3228    usr/lib64/mesa-9.2.0/libmesacore.so
>>> 152     usr/lib64/mesa-9.2.0/libsoftpipe.so
>>> 8       usr/lib64/mesa-9.2.0/pipe_swrast.so
>>> 9912    usr/lib64/mesa-9.2.0
>>> 0       usr/lib64/libOSMesa.so.8
>>> 0       usr/lib64/libxatracker.so.1
>>> 64      usr/lib64/dri/swrast_dri.so
>>> 184     usr/lib64/dri/nouveau_vieux_dri.so
>>> 116     usr/lib64/dri/r600_dri.so
>>> 288     usr/lib64/dri/radeon_dri.so
>>> 876     usr/lib64/dri/i965_dri.so
>>> 320     usr/lib64/dri/r200_dri.so
>>> 116     usr/lib64/dri/r300_dri.so
>>> 120     usr/lib64/dri/radeonsi_dri.so
>>> 72      usr/lib64/dri/nouveau_dri.so
>>> 4       usr/lib64/dri/updates/README.updates
>>> 8       usr/lib64/dri/updates
>>> 324     usr/lib64/dri/i915_dri.so
>>> 84      usr/lib64/dri/vmwgfx_dri.so
>>> 2576    usr/lib64/dri
>>> 28      usr/lib64/libgbm.so.1.0.0
>>> 0       usr/lib64/libGL.so.1
>>> 8       usr/lib64/libwayland-egl.so.1.0.0
>>> 116     usr/lib64/libxatracker.so.1.0.0
>>> 32      usr/lib64/libOSMesa.so.8.0.0
>>> 28      usr/lib64/libGLESv1_CM.so.1.1.0
>>> 0       usr/lib64/libGLESv2.so.2
>>> 112     usr/lib64/vdpau/libvdpau_radeonsi.so.1
>>> 112     usr/lib64/vdpau/libvdpau_r300.so.1
>>> 68      usr/lib64/vdpau/libvdpau_softpipe.so.1
>>> 68      usr/lib64/vdpau/libvdpau_nouveau.so.1
>>> 112     usr/lib64/vdpau/libvdpau_r600.so.1
>>> 476     usr/lib64/vdpau
>>> 32      usr/lib64/libGLESv2.so.2.0.0
>>> 0       usr/lib64/libEGL.so.1
>>> 36      usr/lib64/libXvMCnouveau.so
>>> 0       usr/lib64/libwayland-egl.so.1
>>> 0       usr/lib64/libgbm.so.1
>>> 13980   usr/lib64
>>> 28      usr/share/doc/packages/Mesa/COPYING
>>> 4       usr/share/doc/packages/Mesa/README.THREADS
>>> 8       usr/share/doc/packages/Mesa/README.QUAKE
>>> 4       usr/share/doc/packages/Mesa/README.MITS
>>> 4       usr/share/doc/packages/Mesa/README.UVD
>>> 12      usr/share/doc/packages/Mesa/README.CYGWIN
>>> 64      usr/share/doc/packages/Mesa
>>> 68      usr/share/doc/packages
>>> 72      usr/share/doc
>>> 76      usr/share
>>> 14060   usr/
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev



More information about the mesa-dev mailing list