scons: Fix glew build on MSVC.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 1 Jan 2010 19:58:39 +0000 (19:58 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 2 Jan 2010 00:01:42 +0000 (00:01 +0000)
The environment for building the DLL needs to be quite different from
the environment for building the programs, in order to get
the dllexport/dllimport attribute done currectly. I don't know how MinGW
managed to build the programs, but MS linker refuses to link symbols with
mismatching attributes.

src/glew/SConscript

index b4541a7c26c8c58d044f33de6033b510b851b82e..330231d2c6068c863f61c840cf2ff51d37640b22 100644 (file)
@@ -3,14 +3,9 @@ Import('*')
 if env['platform'] not in ['windows', 'linux']:
     Return()
 
+# Shared environment settings
 env = env.Clone()
 
-env.Append(CPPDEFINES = [
-    'GLEW_BUILD',
-    #'GLEW_STATIC',
-    #'GLEW_MX', # Multiple Rendering Contexts support
-])
-
 env.PrependUnique(CPPPATH = [
     '#/include',
 ])
@@ -29,31 +24,41 @@ else:
         'X11',
     ])
 
-if env['platform'] == 'windows':
+# Library specific environment settings
+lib_env = env.Clone()
+
+lib_env.Append(CPPDEFINES = [
+    'GLEW_BUILD',
+    #'GLEW_STATIC',
+    #'GLEW_MX', # Multiple Rendering Contexts support
+])
+
+if lib_env['platform'] == 'windows':
     target = 'glew'
 else:
     target = 'GLEW'
 
-glew = env.SharedLibrary(
+glew = lib_env.SharedLibrary(
     target = target,
     source = [
         'glew.c',
     ],
 )
 
-if env['platform'] == 'windows':
-    glew = env.FindIxes(glew, 'LIBPREFIX', 'LIBSUFFIX')
+if lib_env['platform'] == 'windows':
+    glew = lib_env.FindIxes(glew, 'LIBPREFIX', 'LIBSUFFIX')
 
-env = env.Clone()
+# Program specific environment settings
+prog_env = env.Clone()
 
-env.Prepend(LIBS = [glew])
+prog_env.Prepend(LIBS = [glew])
 
-env.Program(
+prog_env.Program(
     target = 'glewinfo',
     source = ['glewinfo.c'],
 )
 
-env.Program(
+prog_env.Program(
     target = 'visualinfo',
     source = ['visualinfo.c'],
 )