egl: Use SConscript for Windows build.
authorChia-I Wu <olv@lunarg.com>
Mon, 31 May 2010 03:47:58 +0000 (11:47 +0800)
committerChia-I Wu <olv@lunarg.com>
Mon, 31 May 2010 05:27:41 +0000 (13:27 +0800)
Fix several portability issues and add SConscript for Windows build.

SConstruct
src/SConscript
src/egl/main/SConscript [new file with mode: 0644]
src/egl/main/eglapi.c
src/egl/main/egldriver.c
src/egl/main/egllog.c
src/egl/main/eglmisc.c
src/egl/main/eglstring.c
src/egl/main/eglstring.h
src/gallium/targets/SConscript

index 1d41fc57dd9d405e2947f64317feceba25ac19d9..1c8a00cce95a8f2cb421e6a0c88fd70c06c5c220 100644 (file)
@@ -49,7 +49,7 @@ else:
 opts = Variables('config.py')
 common.AddOptions(opts)
 opts.Add(ListVariable('statetrackers', 'state trackers to build', default_statetrackers,
-                     ['mesa', 'python', 'xorg']))
+                     ['mesa', 'python', 'xorg', 'egl']))
 opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers,
                      ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'r600', 'identity', 'llvmpipe', 'nouveau', 'nv50', 'nvfx']))
 opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys,
index b72491d96f2355accc236fd2edb2b55016e2e53b..b8a0024812b506ccd4f95c87256d90ee1f5535ed 100644 (file)
@@ -3,6 +3,9 @@ Import('*')
 SConscript('glsl/SConscript')
 SConscript('mapi/glapi/SConscript')
 
+if 'egl' in env['statetrackers']:
+    SConscript('egl/main/SConscript')
+
 if 'mesa' in env['statetrackers']:
     SConscript('mesa/SConscript')
 
diff --git a/src/egl/main/SConscript b/src/egl/main/SConscript
new file mode 100644 (file)
index 0000000..f3fe996
--- /dev/null
@@ -0,0 +1,49 @@
+#######################################################################
+# SConscript for EGL
+
+
+Import('*')
+
+if env['platform'] != 'winddk':
+
+       env = env.Clone()
+
+       env.Append(CPPDEFINES = [
+               '_EGL_DEFAULT_DISPLAY=\\"gdi\\"',
+               '_EGL_DRIVER_SEARCH_DIR=\\"\\"',
+               '_EGL_PLATFORM_WINDOWS',
+               'KHRONOS_DLL_EXPORTS',
+       ])
+
+       env.Append(CPPPATH = [
+               '#/include',
+       ])
+
+       egl_sources = [
+               'eglapi.c',
+               'eglconfig.c',
+               'eglconfigutil.c',
+               'eglcontext.c',
+               'eglcurrent.c',
+               'egldisplay.c',
+               'egldriver.c',
+               'eglglobals.c',
+               'eglimage.c',
+               'egllog.c',
+               'eglmisc.c',
+               'eglmode.c',
+               'eglscreen.c',
+               'eglstring.c',
+               'eglsurface.c',
+       ]
+
+       egl = env.SharedLibrary(
+               target = 'libEGL',
+               source = egl_sources,
+       )
+
+       env.InstallSharedLibrary(egl, version=(1, 4, 0))
+
+       egl = [env.FindIxes(egl, 'LIBPREFIX', 'LIBSUFFIX')]
+
+       Export('egl')
index 1a533e0880ba9a61b867dbe90e3d50d6ee7ccf1d..9912043e06c61eab3103586f0fd2768de173aea0 100644 (file)
@@ -56,6 +56,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
+#include "eglstring.h"
 #include "eglcontext.h"
 #include "egldisplay.h"
 #include "egltypedefs.h"
@@ -284,7 +286,7 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
 
       disp->APImajor = major_int;
       disp->APIminor = minor_int;
-      snprintf(disp->Version, sizeof(disp->Version),
+      _eglsnprintf(disp->Version, sizeof(disp->Version),
                "%d.%d (%s)", major_int, minor_int, drv->Name);
 
       /* limit to APIs supported by core */
index 2f42e64fbe00ef1849a7104569ef453a26c05960..631a8710ac5af1b01f6de0954c99b6a23d2c5d4f 100644 (file)
@@ -7,6 +7,8 @@
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
+
+#include "eglstring.h"
 #include "eglconfig.h"
 #include "eglcontext.h"
 #include "egldefines.h"
@@ -36,8 +38,8 @@
 
 
 /* XXX Need to decide how to do dynamic name lookup on Windows */
-static const char DefaultDriverNames[] = {
-   "TBD",
+static const char *DefaultDriverNames[] = {
+   "egl_gdi_swrast"
 };
 
 typedef HMODULE lib_handle;
@@ -411,7 +413,7 @@ _eglGetSearchPath(void)
 #endif /* _EGL_PLATFORM_POSIX */
 
       if (p) {
-         ret = snprintf(buffer, sizeof(buffer),
+         ret = _eglsnprintf(buffer, sizeof(buffer),
                "%s:%s", p, _EGL_DRIVER_SEARCH_DIR);
          if (ret > 0 && ret < sizeof(buffer))
             search_path = buffer;
@@ -483,7 +485,7 @@ _eglPreloadDisplayDrivers(void)
    if (!dpy || !dpy[0])
       return EGL_FALSE;
 
-   ret = snprintf(prefix, sizeof(prefix), "egl_%s_", dpy);
+   ret = _eglsnprintf(prefix, sizeof(prefix), "egl_%s_", dpy);
    if (ret < 0 || ret >= sizeof(prefix))
       return EGL_FALSE;
 
index 11a9bf7275cd3dcf76bb34a50003318b3ec75d4d..8f3bae2243d9e512a591bf3c836163137def0d5f 100644 (file)
@@ -11,6 +11,7 @@
 #include <string.h>
 
 #include "egllog.h"
+#include "eglstring.h"
 #include "eglmutex.h"
 
 #define MAXSTRING 1000
@@ -116,7 +117,7 @@ _eglInitLogger(void)
    log_env = getenv("EGL_LOG_LEVEL");
    if (log_env) {
       for (i = 0; level_strings[i]; i++) {
-         if (strcasecmp(log_env, level_strings[i]) == 0) {
+         if (_eglstrcasecmp(log_env, level_strings[i]) == 0) {
             level = i;
             break;
          }
index e62a9e7de8ce1e13bede66e6be4fc0cbca432f19..4652969659b77ef13936783e2def93f1268e24b8 100644 (file)
@@ -45,7 +45,7 @@ static EGLint
 _eglAppendExtension(char **str, const char *ext)
 {
    char *s = *str;
-   EGLint len = strlen(ext);
+   size_t len = strlen(ext);
 
    if (s) {
       memcpy(s, ext, len);
@@ -58,7 +58,7 @@ _eglAppendExtension(char **str, const char *ext)
       len++;
    }
 
-   return len;
+   return (EGLint) len;
 }
 
 
index ba7406158c463b3eb04fdcaf6095d2ecb30b8a29..e4ab19136fb77d056d4155156c43e9e9c36c6a9b 100644 (file)
@@ -11,7 +11,7 @@ char *
 _eglstrdup(const char *s)
 {
    if (s) {
-      int l = strlen(s);
+      size_t l = strlen(s);
       char *s2 = malloc(l + 1);
       if (s2)
          strcpy(s2, s);
index 10468636e87bfbf6d167e0f8423fda965dfa2d17..bebb758dd82b6c187ed91a9a746e7afefcc36368 100644 (file)
@@ -1,6 +1,15 @@
 #ifndef EGLSTRING_INCLUDED
 #define EGLSTRING_INCLUDED
 
+#include <string.h>
+
+#ifdef _EGL_PLATFORM_WINDOWS
+#define _eglstrcasecmp _stricmp
+#define _eglsnprintf _snprintf
+#else
+#define _eglstrcasecmp strcasecmp
+#define _eglsnprintf snprintf
+#endif
 
 extern char *
 _eglstrdup(const char *s);
index 9077cbf6a45b5400b083c303cd120e5c8b038a3a..519dbff7fd3347cf09d2447943e3c123cc31ebb2 100644 (file)
@@ -3,15 +3,16 @@ Import('*')
        
 # Compatibility with old build scripts:
 #
-if 'xlib' in env['winsys']:
-       SConscript([
-               'libgl-xlib/SConscript',
-       ])
+if 'mesa' in env['statetrackers']:
+       if 'xlib' in env['winsys']:
+               SConscript([
+                       'libgl-xlib/SConscript',
+               ])
 
-if 'gdi' in env['winsys']:
-       SConscript([
-               'libgl-gdi/SConscript',
-       ])
+       if 'gdi' in env['winsys']:
+               SConscript([
+                       'libgl-gdi/SConscript',
+               ])
 
 if not 'graw-xlib' in env['targets'] and not env['msvc']:
         # XXX: disable until MSVC can link correctly