[Mesa-dev] [PATCH] scons: add target gallium-osmesa
Jose Fonseca
jfonseca at vmware.com
Wed Apr 22 05:04:25 PDT 2015
Yes, it fails with Mingw (I only tried with Linux cross-compilation):
$ scons platform=windows osmesa
scons: Reading SConscript files ...
Checking for GCC ... yes
Checking for Clang ... no
scons: Using build cache in /home/jfonseca/.sconscache.
Checking for X11 (x11 xext xdamage xfixes glproto >= 1.4.13)... no
Checking for XCB (x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8)... no
Checking for XF86VIDMODE (xxf86vm)... no
Checking for DRM (libdrm >= 2.4.38)... no
Checking for UDEV (libudev >= 151)... no
Checking for GCC ... yes
Checking for Clang ... no
scons: Using build cache in /home/jfonseca/.sconscache.
Checking for X11 (x11 xext xdamage xfixes glproto >= 1.4.13)... yes
Checking for XCB (x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8)... yes
Checking for XF86VIDMODE (xxf86vm)... yes
Checking for DRM (libdrm >= 2.4.38)... yes
Checking for UDEV (libudev >= 151)... yes
warning: LLVM disabled: not building llvmpipe
scons: done reading SConscript files.
scons: Building targets ...
Linking build/windows-x86-debug/gallium/targets/osmesa/osmesa.dll ...
Cannot export OSMesaColorClamp: symbol not defined
Cannot export OSMesaCreateContext: symbol not defined
Cannot export OSMesaCreateContextExt: symbol not defined
Cannot export OSMesaDestroyContext: symbol not defined
Cannot export OSMesaGetColorBuffer: symbol not defined
Cannot export OSMesaGetCurrentContext: symbol not defined
Cannot export OSMesaGetDepthBuffer: symbol not defined
Cannot export OSMesaGetIntegerv: symbol not defined
Cannot export OSMesaGetProcAddress: symbol not defined
Cannot export OSMesaMakeCurrent: symbol not defined
Cannot export OSMesaPixelStore: symbol not defined
Cannot export OSMesaPostprocess: symbol not defined
collect2: ld returned 1 exit status
scons: *** [build/windows-x86-debug/gallium/targets/osmesa/osmesa.dll]
Error 1
scons: building terminated because of errors.
I suspect the order that libries is set is wrong (because GNU linker is
sensitve to the order of libaries.)
But I haven;t had time to figure it out.
My recommendatino would be to match what
src/gallium/targets/libgl-gdi/SConscript does. It's known to work. (Yes,
that basically means go back on Emil's suggestion.)
Jose
On 22/04/15 08:39, Olivier PENA wrote:
> Hi,
> Something wrong with the corrected patch I sent ?
>
>
> -----Message d'origine-----
> De : mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] De la part de Olivier PENA
> Envoyé : vendredi 10 avril 2015 11:38
> À : Jose Fonseca; Emil Velikov; olivier.pena.80 at gmail.com
> Cc : ML mesa-dev
> Objet : Re: [Mesa-dev] [PATCH] scons: add target gallium-osmesa
>
> Hi,
> I treated your requests and I'm going to send another patch.
> Thanks
>
> -----Message d'origine-----
> De : mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] De la part de Jose Fonseca
> Envoyé : mercredi 8 avril 2015 21:55
> À : Emil Velikov; olivier.pena.80 at gmail.com
> Cc : ML mesa-dev
> Objet : Re: [Mesa-dev] [PATCH] scons: add target gallium-osmesa
>
> Besides the issue Emil mentioned, one minor request: lets call the
> target just "osmesa". As we don't plan to have any other "osmesa" target.
>
> Jose
>
> On 08/04/15 18:18, Emil Velikov wrote:
>> Hi Olivier
>>
>> Thanks for the patch !
>>
>> Adding Jose to the Cc list as I believe he'll have some input on the topic.
>>
>> On 3 April 2015 at 15:06, <olivier.pena.80 at gmail.com> wrote:
>>> From: Olivier Pena <opena at isagri.fr>
>>>
>>> ---
>>> src/gallium/SConscript | 5 ++++
>>> src/gallium/state_trackers/osmesa/SConscript | 25 +++++++++++++++++
>>> src/gallium/state_trackers/osmesa/osmesa.def | 16 +++++++++++
>>> src/gallium/targets/osmesa/SConscript | 41 ++++++++++++++++++++++++++++
>>> 4 files changed, 87 insertions(+)
>>> create mode 100644 src/gallium/state_trackers/osmesa/SConscript
>>> create mode 100644 src/gallium/state_trackers/osmesa/osmesa.def
>>> create mode 100644 src/gallium/targets/osmesa/SConscript
>>>
>> Can you add the three new files into the EXTRA_DIST variable in the
>> relevant Makefile.am ? This way one we can build scons gallium-osmesa
>> from a release tarball :-)
>>
>>> diff --git a/src/gallium/SConscript b/src/gallium/SConscript
>>> index 680ad92..eeb1c78 100644
>>> --- a/src/gallium/SConscript
>>> +++ b/src/gallium/SConscript
>>> @@ -60,6 +60,11 @@ SConscript([
>>> ])
>>>
>>> if not env['embedded']:
>>> + SConscript([
>>> + 'state_trackers/osmesa/SConscript',
>>> + 'targets/osmesa/SConscript',
>>> + ])
>>> +
>>> if env['x11']:
>>> SConscript([
>>> 'state_trackers/glx/xlib/SConscript',
>>> diff --git a/src/gallium/state_trackers/osmesa/SConscript b/src/gallium/state_trackers/osmesa/SConscript
>>> new file mode 100644
>>> index 0000000..fa7c968
>>> --- /dev/null
>>> +++ b/src/gallium/state_trackers/osmesa/SConscript
>>> @@ -0,0 +1,25 @@
>>> +import os
>>> +
>>> +Import('*')
>>> +
>>> +env = env.Clone()
>>> +
>>> +env.Append(CPPPATH = [
>>> + '#src/mapi',
>>> + '#src/mesa',
>>> + '.',
>>> +])
>>> +
>>> +env.AppendUnique(CPPDEFINES = [
>>> + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
>>> + 'WIN32_LEAN_AND_MEAN', # https://urldefense.proofpoint.com/v2/url?u=http-3A__msdn2.microsoft.com_en-2Dus_library_6dwk3a1z.aspx&d=AwIBaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=V7sOetAjivzNtMiJzzOh63AXslqGWPwHWPoxHrHKbGs&s=2ddtnvnyotNzbqM7WTXS_y4myuI1d-lxwzZA9RPX34o&e=
>>> +])
>>> +if not env['gles']:
>>> + # prevent _glapi_* from being declared __declspec(dllimport)
>>> + env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
>>> +
>> Shouldn't these be used when building for windows only ?
>>
>>> +st_osmesa = env.ConvenienceLibrary(
>>> + target ='st_osmesa',
>>> + source = env.ParseSourceList('Makefile.sources', 'C_SOURCES'),
>>> +)
>>> +Export('st_osmesa')
>>> diff --git a/src/gallium/state_trackers/osmesa/osmesa.def b/src/gallium/state_trackers/osmesa/osmesa.def
>>> new file mode 100644
>>> index 0000000..e2a31ab
>>> --- /dev/null
>>> +++ b/src/gallium/state_trackers/osmesa/osmesa.def
>> Can we move this file next to it's only user - i.e. into targets/osmesa/ ?
>>
>>> @@ -0,0 +1,16 @@
>>> +;DESCRIPTION 'Mesa OSMesa lib for Win32'
>>> +VERSION 4.1
>>> +
>>> +EXPORTS
>>> + OSMesaCreateContext
>>> + OSMesaCreateContextExt
>>> + OSMesaDestroyContext
>>> + OSMesaMakeCurrent
>>> + OSMesaGetCurrentContext
>>> + OSMesaPixelStore
>>> + OSMesaGetIntegerv
>>> + OSMesaGetDepthBuffer
>>> + OSMesaGetColorBuffer
>>> + OSMesaGetProcAddress
>>> + OSMesaColorClamp
>>> + OSMesaPostprocess
>>> diff --git a/src/gallium/targets/osmesa/SConscript b/src/gallium/targets/osmesa/SConscript
>>> new file mode 100644
>>> index 0000000..2c936cf
>>> --- /dev/null
>>> +++ b/src/gallium/targets/osmesa/SConscript
>>> @@ -0,0 +1,41 @@
>>> +Import('*')
>>> +
>>> +env = env.Clone()
>>> +
>>> +env.Prepend(CPPPATH = [
>>> + '#src/mapi',
>>> + '#src/mesa',
>>> + #Dir('../../../mapi'), # src/mapi build path for python-generated GL API files/headers
>>> +])
>>> +
>>> +sources = [
>>> + 'target.c',
>>> +]
>>> +sources += ['#src/gallium/state_trackers/osmesa/osmesa.def']
>>> +
>> Afaict this should be included only if the target is Windows.
>>
>>> +drivers = []
>>> +
>>> +if env['llvm']:
>>> + env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
>>> + env.Append(CPPDEFINES = 'GALLIUM_TRACE')
>>> + drivers += [llvmpipe]
>>> +else:
>>> + env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
>>> + env.Append(CPPDEFINES = 'GALLIUM_TRACE')
>>> + drivers += [softpipe]
>>> +
>> One should include softpipe unconditionally as we can switch between
>> llvmpipe and softpipe at runtime.
>>
>>> +if env['platform'] == 'windows':
>>> + env.AppendUnique(CPPDEFINES = [
>>> + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
>>> + ])
>>> + if not env['gles']:
>>> + # prevent _glapi_* from being declared __declspec(dllimport)
>>> + env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
>>> +
>> Don't think you need this if block.
>>
>>> +gallium_osmesa = env.SharedLibrary(
>>> + target ='osmesa',
>>> + source = sources,
>>> + LIBS = drivers + st_osmesa + ws_null + glapi + mesa + gallium + trace + glsl + mesautil + env['LIBS'],
>> How about we move this before the SharedLibrary construct and use
>> env.Prepend(LIBS =... like other places in mesa ?
>>
>> Thanks
>> Emil
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=5Y-aMKVsXCayE-0DQOWPSGU-NPtdHqLZKkNHMqnmxh4&s=5VSTdm8czj25KeHEattxdj120ccXHEbjG--pGLJqe-o&e=
>
>
> Click https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mailcontrol.com_sr_MZbqvYs5QwJvpeaetUwhCQ-3D-3D&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=5Y-aMKVsXCayE-0DQOWPSGU-NPtdHqLZKkNHMqnmxh4&s=KQkxCODmrEYate7MRQxvzxSkdBvaaUNq7CubILxFNhA&e= to report this email as spam.
>
>
>>>>> -------------------------------------------------------------<<<<
> Ce message a été traité contre les virus par quatre outils différents (Kaspersky, McAfee, Symantec et ThreatSeeker).
> This message has been scanned for viruses (by Kaspersky, McAfee, Symantec and ThreatSeeker).
>>>>> -------------------------------------------------------------<<<<
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=5Y-aMKVsXCayE-0DQOWPSGU-NPtdHqLZKkNHMqnmxh4&s=5VSTdm8czj25KeHEattxdj120ccXHEbjG--pGLJqe-o&e=
>
More information about the mesa-dev
mailing list