scons: Build progs together with everything else.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 31 Dec 2009 21:10:25 +0000 (21:10 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 1 Jan 2010 12:16:19 +0000 (12:16 +0000)
This is a substantial reorganization, This particular commit enables:
- building the progs for unices platforms
- glew is now built as a shared library (it is the default, and it is
inconvenient and pointless to shift away from that default)
- all progs get built by default

17 files changed:
SConstruct
docs/install.html
progs/SConscript
progs/SConstruct [deleted file]
progs/demos/SConscript
progs/fp/SConscript
progs/glsl/SConscript
progs/perf/SConscript
progs/redbook/SConscript
progs/samples/SConscript
progs/tests/SConscript
progs/trivial/SConscript
progs/vp/SConscript
progs/vpglsl/SConscript
progs/wgl/SConscript
src/glew/SConscript
src/glut/glx/SConscript

index 0a545d5c922f643560019aaa2b8c4686d64a34fa..ed92518eec8773c76f048dcdaa28e305ae119d12 100644 (file)
@@ -177,7 +177,7 @@ if env['platform'] != common.default_platform:
 
     SConscript(
         'src/glsl/SConscript',
-        variant_dir = env['build'] + '/host',
+        variant_dir = os.path.join(env['build'], 'host'),
         duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
         exports={'env':host_env},
     )
@@ -187,3 +187,9 @@ SConscript(
        variant_dir = env['build'],
        duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
 )
+
+SConscript(
+       'progs/SConscript',
+       variant_dir = os.path.join('progs', env['build']),
+       duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
+)
index 8c24cee7a3e87242cd3469b81ec48a5e72d5cea0..5aea92e0b5119dbbb526fee67d665435f6b84187 100644 (file)
@@ -351,20 +351,11 @@ example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
 by -debug for debug builds.
 </p>
 
-<p>
-The sample programs are built seperately. To build them do
-<pre>
-    scons -C progs
-</pre>
-And the build output will be placed in progs/build/...
-</p>
-
 <p>
 To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
 </p>
 <pre>
     scons platform=windows toolchain=crossmingw machine=x86 statetrackers=mesa drivers=softpipe,trace winsys=gdi
-    scons -C progs platform=windows toolchain=crossmingw machine=x86 -k
 </pre>
 <p>
 This will create:
index 66eaf9e54104678b8bed4a9775528b7e371200a7..3b180d00bc2396af24e44f8b63392422a379601d 100644 (file)
@@ -1,5 +1,43 @@
 SConscript([
     'util/SConscript',
+])
+
+Import('*')
+
+progs_env = env.Clone()
+
+if progs_env['platform'] == 'windows':
+    progs_env.Append(CPPDEFINES = ['NOMINMAX'])
+    progs_env.Prepend(LIBS = [
+        'winmm',
+        'kernel32',
+        'user32',
+        'gdi32',
+    ])
+
+# OpenGL
+if progs_env['platform'] == 'windows':
+    progs_env.Prepend(LIBS = ['glu32', 'opengl32'])
+else:
+    progs_env.Prepend(LIBS = ['GLU', 'GL'])
+
+# Glut
+progs_env.Prepend(LIBS = [glut])
+
+# GLEW
+progs_env.Prepend(LIBS = [glew])
+
+progs_env.Prepend(CPPPATH = [
+       '#progs/util',
+])
+
+progs_env.Prepend(LIBS = [
+       util,
+])
+
+Export('progs_env')
+
+SConscript([
     'demos/SConscript',
     'glsl/SConscript',
     'redbook/SConscript',
diff --git a/progs/SConstruct b/progs/SConstruct
deleted file mode 100644 (file)
index 4d268cc..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-import os
-import os.path
-import sys
-
-env = Environment(
-    tools = ['generic'],
-    toolpath = ['../scons'],
-    ENV = os.environ,
-)
-
-
-# Use Mesa's headers and libs
-if 1:
-    build_topdir = 'build'
-    build_subdir = env['platform']
-    if env['machine'] != 'generic':
-        build_subdir += '-' + env['machine']
-    if env['debug']:
-        build_subdir += "-debug"
-    if env['profile']:
-        build_subdir += "-profile"
-    build_dir = os.path.join(build_topdir, build_subdir)
-
-    env.Append(CPPDEFINES = ['GLEW_STATIC'])
-    env.Append(CPPPATH = ['#../include'])
-    env.Append(LIBPATH = [
-        '#../' + build_dir + '/glew/',
-        '#../' + build_dir + '/glut/glx',
-    ])
-
-
-conf = Configure(env)
-
-# OpenGL
-if env['platform'] == 'windows':
-    env.Prepend(LIBS = ['glu32', 'opengl32'])
-else:
-    env.Prepend(LIBS = ['GLU', 'GL'])
-
-# Glut
-env['GLUT'] = False
-if conf.CheckCHeader('GL/glut.h'):
-    if env['platform'] == 'windows':
-        env['GLUT_LIB'] = 'glut32'
-    else:
-        env['GLUT_LIB'] = 'glut'
-    env['GLUT'] = True
-
-# GLEW
-env['GLEW'] = False
-if conf.CheckCHeader('GL/glew.h'):
-    env['GLEW_LIB'] = 'glew'
-    env['GLEW'] = True
-    env.Prepend(LIBS = ['glew'])
-
-conf.Finish()
-
-
-Export('env')
-
-SConscript(
-    'SConscript',
-    build_dir = env['build'],
-    duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
-)
index f851870bcf3b7bb53f34f02f32b10124ec290e08..742dd66f36f2dbcee6dda4888c1d80a85268b42e 100644 (file)
@@ -1,84 +1,66 @@
 Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-       '../util',
-])
-
-env.Prepend(LIBS = [
-       util,
-       '$GLUT_LIB'
-])
-
-if env['platform'] == 'windows':
-    env.Append(CPPDEFINES = ['NOMINMAX'])
-    env.Prepend(LIBS = ['winmm'])
-
 progs = [
-       'arbfplight',
-       'arbfslight',
-       'arbocclude',
-       'bounce',
-       'clearspd',
-       'copypix',
-       'cubemap',
-       'drawpix',
-       'engine',
-       'fbo_firecube',
-       'fire',
-       'fogcoord',
-       'fplight',
-       'fslight',
-       'gamma',
-       'gearbox',
-       'gears',
-       'geartrain',
-       'glinfo',
-       'gloss',
-       'gltestperf',
-       'ipers',
-       'isosurf',
-       'lodbias',
-       'morph3d',
-       'multiarb',
-       'paltex',
-       'pointblast',
-       'ray',
-       'readpix',
-       'reflect',
-       'renormal',
-       'shadowtex',
-       'singlebuffer',
-       'spectex',
-       'spriteblast',
-       'stex3d',
-       'teapot',
-       'terrain',
-       'tessdemo',
-       'texcyl',
-       'texenv',
-       'textures',
-       'trispd',
-       'tunnel',
-       'tunnel2',
-       'vao_demo',
-       'winpos',
-        'dinoshade',
-        'fbotexture',
-        'projtex',
+    'arbfplight',
+    'arbfslight',
+    'arbocclude',
+    'bounce',
+    'clearspd',
+    'copypix',
+    'cubemap',
+    'drawpix',
+    'engine',
+    'fbo_firecube',
+    'fire',
+    'fogcoord',
+    'fplight',
+    'fslight',
+    'gamma',
+    'gearbox',
+    'gears',
+    'geartrain',
+    'glinfo',
+    'gloss',
+    'gltestperf',
+    'ipers',
+    'isosurf',
+    'lodbias',
+    'morph3d',
+    'multiarb',
+    'paltex',
+    'pointblast',
+    'ray',
+    'readpix',
+    'reflect',
+    'renormal',
+    'shadowtex',
+    'singlebuffer',
+    'spectex',
+    'spriteblast',
+    'stex3d',
+    'teapot',
+    'terrain',
+    'tessdemo',
+    'texcyl',
+    'texenv',
+    'textures',
+    'trispd',
+    'tunnel',
+    'tunnel2',
+    'vao_demo',
+    'winpos',
+    'dinoshade',
+    'fbotexture',
+    'projtex',
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = prog + '.c',
     )
     
-env.Program(
+progs_env.Program(
     target = 'rain',
     source = [
         'rain.cxx',
index a78318542c1605f3090b7fcacabb721a372c097c..113e11ab54e7f759ce7425f27f2b52ad1e69a5ed 100644 (file)
@@ -1,15 +1,4 @@
-Import('env')
-
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-       '../util',
-])
-
-env.Prepend(LIBS = ['$GLUT_LIB'])
+Import('*')
 
 progs = [
     'fp-tri',
@@ -24,7 +13,7 @@ progs = [
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = [prog + '.c'],
     )
index 7a4549cd705e08e20ea2a269ab8427b954e04371..8f2ebcf69c42619ca85f96d5a2533334e784845b 100644 (file)
@@ -1,23 +1,5 @@
 Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-       '../util',
-])
-
-env.Prepend(LIBS = [
-       util,
-       '$GLUT_LIB'
-])
-
-if env['platform'] == 'windows':
-    env.Append(CPPDEFINES = ['NOMINMAX'])
-    env.Prepend(LIBS = ['winmm'])
-
 progs = [
       'array',
       'bitmap',
@@ -48,7 +30,7 @@ progs = [
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = prog + '.c',
     )
index a5ec9a7c2a064446c987490f937d521a1296cac0..691478ab64d83987b16e918c963bfc57551c6ed8 100644 (file)
@@ -1,11 +1,4 @@
-Import('env')
-
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(LIBS = ['$GLUT_LIB'])
+Import('*')
 
 progs = [
       'copytex',
@@ -21,7 +14,7 @@ progs = [
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = [
             prog + '.c',
index 242cb6647fc72f52b662076e4be640cb7d5b9921..24d7cff1b6755c98a68f2f34dc62236b6b54e122 100644 (file)
@@ -1,23 +1,5 @@
 Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-       '../util',
-])
-
-env.Prepend(LIBS = [
-       util,
-       '$GLUT_LIB'
-])
-
-if env['platform'] == 'windows':
-    env.Append(CPPDEFINES = ['NOMINMAX'])
-    env.Prepend(LIBS = ['winmm'])
-
 progs = [
     'aaindex',
     'aapoly',
@@ -85,7 +67,7 @@ progs = [
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = prog + '.c',
     )
index 7a8a0d62d81c1b00726d81ee730900b7c73b1bab..134dfa99807f47d2fb69bf4d55ae08ef34104d61 100644 (file)
@@ -1,23 +1,5 @@
 Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-       '../util',
-])
-
-env.Prepend(LIBS = [
-       util,
-       '$GLUT_LIB'
-])
-
-if env['platform'] == 'windows':
-    env.Append(CPPDEFINES = ['NOMINMAX'])
-    env.Prepend(LIBS = ['winmm'])
-
 progs = [
     'accum',
     'bitmap1',
@@ -52,7 +34,7 @@ progs = [
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = prog + '.c',
     )
index ae6488b3e6f6e4f3215597865f25e5902abfc371..e2c6538288746cae531dd33e91e8296dab6bb251 100644 (file)
@@ -1,23 +1,5 @@
 Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-       '../util',
-])
-
-env.Prepend(LIBS = [
-       util,
-       '$GLUT_LIB'
-])
-
-if env['platform'] == 'windows':
-    env.Append(CPPDEFINES = ['NOMINMAX'])
-    env.Prepend(LIBS = ['winmm'])
-
 linux_progs = [
     'api_speed',
 ]
@@ -140,7 +122,7 @@ progs = [
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = prog + '.c',
     )
index 9a1f3575bdc9b65c951e744f67fdc2b7cee48371..613383c77b1a374e887a6386e99b9065b7fadc6d 100644 (file)
@@ -1,11 +1,4 @@
-Import('env')
-
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(LIBS = ['$GLUT_LIB'])
+Import('*')
 
 progs = [
     'clear-fbo-tex',
@@ -154,7 +147,7 @@ progs = [
 ]
 
 for prog in progs:
-    prog = env.Program(
+    prog = progs_env.Program(
         target = prog,
         source = prog + '.c',
     )
index 640c5dd847069b5940f0f50d5bae74c11bd4c653..787cb793af28c1d195471cbf1224dcf25ee532dd 100644 (file)
@@ -1,13 +1,6 @@
-Import('env')
+Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(LIBS = ['$GLUT_LIB'])
-
-env.Program(
+progs_env.Program(
         target = 'vp-tris',
         source = ['vp-tris.c'],
     )
index 640c5dd847069b5940f0f50d5bae74c11bd4c653..787cb793af28c1d195471cbf1224dcf25ee532dd 100644 (file)
@@ -1,13 +1,6 @@
-Import('env')
+Import('*')
 
-if not env['GLUT']:
-    Return()
-
-env = env.Clone()
-
-env.Prepend(LIBS = ['$GLUT_LIB'])
-
-env.Program(
+progs_env.Program(
         target = 'vp-tris',
         source = ['vp-tris.c'],
     )
index 31f61676dec9f4fb52884c2aec1e5c8c9f22218f..248cc53a8d723d66911e84a24f23bd761c550f05 100644 (file)
@@ -1,25 +1,17 @@
 Import('*')
 
-if env['platform'] != 'windows':
+if progs_env['platform'] != 'windows':
     Return()
 
-env = env.Clone()
-
-env.Append(LIBS = [
-    'kernel32',
-    'user32',
-    'gdi32',
-])
-
 progs = [
     'sharedtex_mt',
     'wglthreads',
 ]
 
 for prog in progs:
-    env.Program(
+    progs_env.Program(
         target = prog,
         source = prog + '/' + prog + '.c',
     )
 
-env.Program('wglinfo', ['wglinfo.c'])
+progs_env.Program('wglinfo', ['wglinfo.c'])
index 1161be6e633e5731dfd24a8a5f9882211ba7d7a3..b4541a7c26c8c58d044f33de6033b510b851b82e 100644 (file)
@@ -7,7 +7,7 @@ env = env.Clone()
 
 env.Append(CPPDEFINES = [
     'GLEW_BUILD',
-    'GLEW_STATIC',
+    #'GLEW_STATIC',
     #'GLEW_MX', # Multiple Rendering Contexts support
 ])
 
@@ -15,15 +15,6 @@ env.PrependUnique(CPPPATH = [
     '#/include',
 ])
 
-glew = env.StaticLibrary(
-    target = 'glew',
-    source = [
-        'glew.c',
-    ],
-)
-
-env = env.Clone()
-
 if env['platform'] == 'windows':
     env.PrependUnique(LIBS = [
         'glu32', 
@@ -37,6 +28,24 @@ else:
         'GL',
         'X11',
     ])
+
+if env['platform'] == 'windows':
+    target = 'glew'
+else:
+    target = 'GLEW'
+
+glew = env.SharedLibrary(
+    target = target,
+    source = [
+        'glew.c',
+    ],
+)
+
+if env['platform'] == 'windows':
+    glew = env.FindIxes(glew, 'LIBPREFIX', 'LIBSUFFIX')
+
+env = env.Clone()
+
 env.Prepend(LIBS = [glew])
 
 env.Program(
@@ -48,3 +57,5 @@ env.Program(
     target = 'visualinfo',
     source = ['visualinfo.c'],
 )
+
+Export('glew')
index 938fec03df249547a3c302dca19faf1d2157c102..5234e6d58ac2f4deb6625a5d5a1108b7baf351c9 100644 (file)
@@ -2,11 +2,6 @@ Import('*')
 
 env = env.Clone()
 
-if env['platform'] != 'windows':
-    Return()
-
-target = 'glut32'
-
 env.Replace(CPPDEFINES = [
     'BUILD_GLUT32', 
     'GLUT_BUILDING_LIB', 
@@ -18,14 +13,6 @@ env.AppendUnique(CPPPATH = [
     '#/include',
 ])
 
-env.PrependUnique(LIBS = [
-    'winmm', 
-    'gdi32', 
-    'user32', 
-    'opengl32', 
-    'glu32',
-])
-
 sources = [
     'glut_bitmap.c',
     'glut_bwidth.c',
@@ -61,12 +48,6 @@ sources = [
     'glut_warp.c',
     'glut_win.c',
     'glut_winmisc.c',
-
-    'win32_glx.c',
-    'win32_menu.c',
-    'win32_util.c',
-    'win32_winproc.c',
-    'win32_x11.c',
     
     'glut_8x13.c',
     'glut_9x15.c',
@@ -77,11 +58,52 @@ sources = [
     'glut_roman.c',
     'glut_tr10.c',
     'glut_tr24.c',
-
-    'glut.def',
 ]
 
-env.SharedLibrary(
+if env['platform'] == 'windows':
+    env.PrependUnique(LIBS = [
+        'winmm', 
+        'gdi32', 
+        'user32', 
+        'opengl32', 
+        'glu32',
+    ])
+    target = 'glut32'
+    sources += [
+        'win32_glx.c',
+        'win32_menu.c',
+        'win32_util.c',
+        'win32_winproc.c',
+        'win32_x11.c',
+        'glut.def',
+    ]
+else:
+    env.PrependUnique(LIBS = [
+        'GLU',
+        'GL',
+        'X11',
+        'Xext',
+        'Xmu',
+        'Xi',
+    ])
+    target = 'glut'
+    sources += [
+        'glut_fcb.c',
+        'glut_menu.c',
+        'glut_menu2.c',
+        'glut_glxext.c',
+        'layerutil.c',
+    ]
+
+
+glut = env.SharedLibrary(
     target = target,
     source = sources,
 )
+
+env.InstallSharedLibrary(glut, version=(3, 7, 1))
+
+if env['platform'] == 'windows':
+    glut = env.FindIxes(glut, 'LIBPREFIX', 'LIBSUFFIX')
+
+Export('glut')