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-boun...@lists.freedesktop.org] De la part de
Olivier PENA
Envoyé : vendredi 10 avril 2015 11:38
À : Jose Fonseca; Emil Velikov; olivier.pena...@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-boun...@lists.freedesktop.org] De la part de
Jose Fonseca
Envoyé : mercredi 8 avril 2015 21:55
À : Emil Velikov; olivier.pena...@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...@gmail.com> wrote:
From: Olivier Pena <op...@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@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@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=
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev