Mesa (master): scons: Updates for targets/egl-static.

Chia-I Wu olv at kemper.freedesktop.org
Wed Jan 12 09:40:45 UTC 2011


Module: Mesa
Branch: master
Commit: a8b6b6555c7d6a02a3d095c72ebbdc218bc45cd3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a8b6b6555c7d6a02a3d095c72ebbdc218bc45cd3

Author: Chia-I Wu <olv at lunarg.com>
Date:   Sun Jan  9 23:37:32 2011 +0800

scons: Updates for targets/egl-static.

Update SConscripts to re-enable or add support for EGL on windows and
x11 platforms respectively.  targets/egl-gdi is replaced by
targets/egl-static, where "-static" means pipe drivers and state
trackers are linked to statically by egl_gallium, and egl_gallium is a
built-in driver of libEGL.  There is no more egl_gallium.dll on Windows.

---

 src/SConscript                            |    6 +-
 src/egl/main/SConscript                   |   30 ++++---
 src/egl/main/egldriver.c                  |    3 +
 src/egl/main/egldriver.h                  |    4 +
 src/gallium/SConscript                    |   12 ++-
 src/gallium/state_trackers/egl/SConscript |   38 +++++++---
 src/gallium/targets/egl-static/SConscript |  122 +++++++++++++++++++++++++++++
 src/mapi/vgapi/SConscript                 |    5 +-
 8 files changed, 187 insertions(+), 33 deletions(-)

diff --git a/src/SConscript b/src/SConscript
index c42d9bf..116c9b3 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -1,16 +1,16 @@
 Import('*')
 
-SConscript('mapi/vgapi/SConscript')
-
 if env['platform'] == 'windows':
-    SConscript('egl/main/SConscript')
     SConscript('talloc/SConscript')
 
 SConscript('glsl/SConscript')
 SConscript('mapi/glapi/SConscript')
 SConscript('mesa/SConscript')
 
+SConscript('mapi/vgapi/SConscript')
+
 if env['platform'] != 'embedded':
+    SConscript('egl/main/SConscript')
     SConscript('glut/glx/SConscript')
 
 SConscript('gallium/SConscript')
diff --git a/src/egl/main/SConscript b/src/egl/main/SConscript
index f001b81..8c57cea 100644
--- a/src/egl/main/SConscript
+++ b/src/egl/main/SConscript
@@ -7,13 +7,23 @@ Import('*')
 env = env.Clone()
 
 env.Append(CPPDEFINES = [
-    '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_WINDOWS',
+    '_EGL_BUILT_IN_DRIVER_GALLIUM',
     '_EGL_DRIVER_SEARCH_DIR=\\"\\"',
-    '_EGL_OS_WINDOWS',
-    '_EGL_GET_CORE_ADDRESSES',
-    'KHRONOS_DLL_EXPORTS',
 ])
 
+if env['platform'] == 'windows':
+    env.Append(CPPDEFINES = [
+        '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_WINDOWS',
+        '_EGL_OS_WINDOWS',
+        '_EGL_GET_CORE_ADDRESSES',
+        'KHRONOS_DLL_EXPORTS',
+    ])
+else:
+    env.Append(CPPDEFINES = [
+        '_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_X11',
+        '_EGL_OS_UNIX',
+    ])
+
 env.Append(CPPPATH = [
     '#/include',
 ])
@@ -38,15 +48,9 @@ egl_sources = [
     'eglsync.c',
 ]
 
-egl = env.SharedLibrary(
-    target = 'libEGL',
-    source = egl_sources + ['egl.def'],
+egl = env.ConvenienceLibrary(
+    target = 'egl',
+    source = egl_sources,
 )
 
-installed_egl = env.InstallSharedLibrary(egl, version=(1, 4, 0))
-
-env.Alias('egl', installed_egl)
-
-egl = [env.FindIxes(egl, 'LIBPREFIX', 'LIBSUFFIX')]
-
 Export('egl')
diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c
index 46876d0..b7c3de3 100644
--- a/src/egl/main/egldriver.c
+++ b/src/egl/main/egldriver.c
@@ -37,6 +37,9 @@ const struct {
    const char *name;
    _EGLMain_t main;
 } _eglBuiltInDrivers[] = {
+#ifdef _EGL_BUILT_IN_DRIVER_GALLIUM
+   { "egl_gallium", _eglBuiltInDriverGALLIUM },
+#endif
 #ifdef _EGL_BUILT_IN_DRIVER_DRI2
    { "egl_dri2", _eglBuiltInDriverDRI2 },
 #endif
diff --git a/src/egl/main/egldriver.h b/src/egl/main/egldriver.h
index 651788c..d617757 100644
--- a/src/egl/main/egldriver.h
+++ b/src/egl/main/egldriver.h
@@ -65,6 +65,10 @@ struct _egl_driver
 
 
 extern _EGLDriver *
+_eglBuiltInDriverGALLIUM(const char *args);
+
+
+extern _EGLDriver *
 _eglBuiltInDriverDRI2(const char *args);
 
 
diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index 0efab83..2265f1d 100644
--- a/src/gallium/SConscript
+++ b/src/gallium/SConscript
@@ -55,6 +55,7 @@ SConscript('winsys/sw/null/SConscript')
 SConscript('state_trackers/python/SConscript')
 if env['platform'] != 'embedded':
     SConscript('state_trackers/vega/SConscript')
+    SConscript('state_trackers/egl/SConscript')
 
     if env['x11']:
         SConscript('state_trackers/glx/xlib/SConscript')
@@ -66,10 +67,7 @@ if env['platform'] != 'embedded':
         SConscript('state_trackers/xorg/SConscript')
 
 if env['platform'] == 'windows':
-    SConscript([
-        'state_trackers/egl/SConscript',
-        'state_trackers/wgl/SConscript',
-    ])
+    SConscript('state_trackers/wgl/SConscript')
 
 #
 # Winsys
@@ -85,6 +83,11 @@ SConscript([
     'targets/graw-null/SConscript',
 ])
 
+if env['platform'] != 'embedded':
+    SConscript([
+        'targets/egl-static/SConscript'
+    ])
+
 if env['x11']:
     SConscript([
         'targets/graw-xlib/SConscript',
@@ -95,7 +98,6 @@ if env['platform'] == 'windows':
     SConscript([
         'targets/graw-gdi/SConscript',
         'targets/libgl-gdi/SConscript',
-        #'egl-gdi/SConscript',
     ])
 
 if env['dri']:
diff --git a/src/gallium/state_trackers/egl/SConscript b/src/gallium/state_trackers/egl/SConscript
index 50c7681..9ade76e 100644
--- a/src/gallium/state_trackers/egl/SConscript
+++ b/src/gallium/state_trackers/egl/SConscript
@@ -10,11 +10,8 @@ env.Append(CPPPATH = [
     '#/src/gallium/winsys/sw',
     '.',
 ])
-env.Append(CPPDEFINES = [
-    'HAVE_GDI_BACKEND',
-])
 
-common_sources = [
+sources = [
     'common/egl_g3d.c',
     'common/egl_g3d_api.c',
     'common/egl_g3d_image.c',
@@ -23,12 +20,31 @@ common_sources = [
     'common/native_helper.c',
 ]
 
-gdi_sources = common_sources + [
-    'gdi/native_gdi.c',
-]
+if env['platform'] == 'windows':
+    env.Append(CPPDEFINES = ['HAVE_GDI_BACKEND'])
+    sources.append('gdi/native_gdi.c')
+else:
+    if env['x11']:
+        env.Append(CPPDEFINES = ['HAVE_X11_BACKEND'])
+        env.Prepend(CPPPATH = [
+            '#/src/glx',
+            '#/src/mapi',
+        ])
+        sources.append([
+            'x11/native_x11.c',
+            'x11/native_dri2.c',
+            'x11/native_ximage.c',
+            'x11/x11_screen.c',
+            'x11/glxinit.c'])
+        if env['dri']:
+            env.Append(CPPDEFINES = ['GLX_DIRECT_RENDERING'])
+            sources.append(['#/src/glx/dri2.c'])
+    if env['drm']:
+        env.Append(CPPDEFINES = ['HAVE_DRM_BACKEND'])
+        sources.append(['drm/native_drm.c', 'drm/modeset.c'])
 
-st_egl_gdi = env.ConvenienceLibrary(
-    target = 'st_egl_gdi',
-    source = gdi_sources,
+st_egl = env.ConvenienceLibrary(
+    target = 'st_egl',
+    source = sources,
 )
-Export('st_egl_gdi')
+Export('st_egl')
diff --git a/src/gallium/targets/egl-static/SConscript b/src/gallium/targets/egl-static/SConscript
new file mode 100644
index 0000000..1fa4080
--- /dev/null
+++ b/src/gallium/targets/egl-static/SConscript
@@ -0,0 +1,122 @@
+#######################################################################
+# SConscript for egl-static target
+
+Import('*')
+
+env = env.Clone()
+
+env.Append(CPPPATH = [
+    '#/include',
+    '#/src/egl/main',
+    '#/src/gallium/auxiliary',
+    '#/src/gallium/drivers',
+    '#/src/gallium/include',
+    '#/src/gallium/winsys',
+    '#/src/gallium/state_trackers/egl',
+    '#/src/gallium/state_trackers/vega',
+    '#/src/mesa',
+])
+
+env.Append(CPPDEFINES = [
+    'GALLIUM_SOFTPIPE',
+    'GALLIUM_RBUG',
+    'GALLIUM_TRACE',
+    'GALLIUM_GALAHAD',
+    '_EGL_MAIN=_eglBuiltInDriverGALLIUM',
+])
+
+env.Prepend(LIBS = [
+    softpipe,
+    rbug,
+    trace,
+    galahad,
+    gallium,
+    egl,
+])
+
+if env['llvm']:
+    env.Append(CPPDEFINES = ['GALLIUM_LLVMPIPE'])
+    env.Prepend(LIBS = [llvmpipe])
+
+sources = [
+    'egl.c',
+    'egl_pipe.c',
+    'egl_st.c',
+]
+
+if env['platform'] == 'windows':
+    sources.append('#src/egl/main/egl.def')
+
+    env.Append(LIBS = [
+        'gdi32',
+        'user32',
+        'kernel32',
+        'ws2_32',
+    ])
+
+    env.Prepend(LIBS = [
+        st_egl,
+        ws_gdi,
+    ])
+
+    # OpenVG
+    env.Append(CPPDEFINES = ['FEATURE_VG=1'])
+    env.Prepend(LIBS = [vgapi, st_vega])
+else:
+    env.Prepend(LIBS = [
+        st_egl,
+        ws_xlib,
+    ])
+
+    # OpenGL
+    env.Append(CPPDEFINES = ['FEATURE_GL=1'])
+    env.Prepend(LIBS = ['GL', 'talloc', glsl, mesa])
+
+    # OpenVG
+    env.Append(CPPDEFINES = ['FEATURE_VG=1'])
+    env.Prepend(LIBS = ['OpenVG', st_vega])
+
+
+if env['dri']:
+    env.ParseConfig('pkg-config --cflags --libs xfixes')
+
+# pipe drivers
+if env['drm']:
+    env.ParseConfig('pkg-config --cflags --libs libdrm')
+
+    if env['drm_intel']:
+        env.ParseConfig('pkg-config --cflags --libs libdrm_intel')
+        env.Append(CPPDEFINES = ['_EGL_PIPE_I915', '_EGL_PIPE_I965'])
+        env.Prepend(LIBS = [
+            i915drm,
+            i915,
+            i965drm,
+            i965,
+        ])
+
+    if env['drm_radeon']:
+        env.ParseConfig('pkg-config --cflags --libs libdrm_radeon')
+        env.Append(CPPDEFINES = ['_EGL_PIPE_R300', '_EGL_PIPE_R600'])
+        env.Prepend(LIBS = [
+            radeonwinsys,
+            r300,
+            r600winsys,
+            r600,
+        ])
+
+    env.Append(CPPDEFINES = ['_EGL_PIPE_VMWGFX'])
+    env.Prepend(LIBS = [
+        svgadrm,
+        svga,
+    ])
+
+egl_gallium = env.SharedLibrary(
+    target ='libEGL',
+    source = sources,
+)
+
+env.Depends(egl_gallium, [vgapi])
+
+egl_gallium = env.InstallSharedLibrary(egl_gallium, version=(1, 4, 0))
+
+env.Alias('egl-gallium', egl_gallium)
diff --git a/src/mapi/vgapi/SConscript b/src/mapi/vgapi/SConscript
index 42d86b6..8d67159 100644
--- a/src/mapi/vgapi/SConscript
+++ b/src/mapi/vgapi/SConscript
@@ -51,6 +51,9 @@ if env['platform'] != 'winddk':
 
 	env.InstallSharedLibrary(openvg, version=(1, 0, 0))
 
-	vgapi = [env.FindIxes(openvg, 'LIBPREFIX', 'LIBSUFFIX')]
+	if env['platform'] == 'windows':
+	    vgapi = env.FindIxes(openvg, 'LIBPREFIX', 'LIBSUFFIX')
+	else:
+	    vgapi = env.FindIxes(openvg, 'SHLIBPREFIX', 'SHLIBSUFFIX')
 
 	Export(['vgapi'])




More information about the mesa-commit mailing list