Browse Source

scons: Build progs together with everything else.

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
tags/7.8-rc1
José Fonseca 15 years ago
parent
commit
7bbf7f94ea

+ 7
- 1
SConstruct View 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
)

+ 0
- 9
docs/install.html View 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:

+ 38
- 0
progs/SConscript View 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',

+ 0
- 65
progs/SConstruct View File

@@ -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
)

+ 53
- 71
progs/demos/SConscript View 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',

+ 2
- 13
progs/fp/SConscript View 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'],
)

+ 1
- 19
progs/glsl/SConscript View 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',
)

+ 2
- 9
progs/perf/SConscript View 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',

+ 1
- 19
progs/redbook/SConscript View 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',
)

+ 1
- 19
progs/samples/SConscript View 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',
)

+ 1
- 19
progs/tests/SConscript View 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',
)

+ 2
- 9
progs/trivial/SConscript View 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',
)

+ 2
- 9
progs/vp/SConscript View 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'],
)

+ 2
- 9
progs/vpglsl/SConscript View 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'],
)

+ 3
- 11
progs/wgl/SConscript View 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'])

+ 21
- 10
src/glew/SConscript View 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')

+ 44
- 22
src/glut/glx/SConscript View 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')

Loading…
Cancel
Save