mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
scons: Get GLSL code building correctly when cross compiling.
This is quite messy. GLSL code has to be built twice: one for the host OS, another for the target OS.
This commit is contained in:
parent
289eab5389
commit
491f384c39
8 changed files with 97 additions and 75 deletions
19
SConstruct
19
SConstruct
|
|
@ -160,6 +160,25 @@ Export('env')
|
|||
# TODO: Build several variants at the same time?
|
||||
# http://www.scons.org/wiki/SimultaneousVariantBuilds
|
||||
|
||||
if env['platform'] != common.default_platform:
|
||||
# GLSL code has to be built twice -- one for the host OS, another for the target OS...
|
||||
|
||||
host_env = Environment(
|
||||
# options are ignored
|
||||
# default tool is used
|
||||
toolpath = ['#scons'],
|
||||
ENV = os.environ,
|
||||
)
|
||||
|
||||
host_env['platform'] = common.default_platform
|
||||
|
||||
SConscript(
|
||||
'src/glsl/SConscript',
|
||||
variant_dir = env['build'] + '/host',
|
||||
duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
|
||||
exports={'env':host_env},
|
||||
)
|
||||
|
||||
SConscript(
|
||||
'src/SConscript',
|
||||
variant_dir = env['build'],
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
Import('*')
|
||||
|
||||
SConscript('glsl/pp/SConscript')
|
||||
SConscript('glsl/cl/SConscript')
|
||||
SConscript('glsl/apps/SConscript')
|
||||
SConscript('glsl/SConscript')
|
||||
SConscript('gallium/SConscript')
|
||||
|
||||
if 'mesa' in env['statetrackers']:
|
||||
|
|
|
|||
|
|
@ -39,5 +39,5 @@ if env['platform'] == 'windows':
|
|||
env.SharedLibrary(
|
||||
target ='opengl32',
|
||||
source = sources,
|
||||
LIBS = wgl + glapi + mesa + drivers + auxiliaries + glsl + glslcl + env['LIBS'],
|
||||
LIBS = wgl + glapi + mesa + drivers + auxiliaries + glsl + env['LIBS'],
|
||||
)
|
||||
|
|
|
|||
68
src/glsl/SConscript
Normal file
68
src/glsl/SConscript
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
import common
|
||||
|
||||
Import('*')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
sources = [
|
||||
'pp/sl_pp_context.c',
|
||||
'pp/sl_pp_define.c',
|
||||
'pp/sl_pp_dict.c',
|
||||
'pp/sl_pp_error.c',
|
||||
'pp/sl_pp_expression.c',
|
||||
'pp/sl_pp_extension.c',
|
||||
'pp/sl_pp_if.c',
|
||||
'pp/sl_pp_line.c',
|
||||
'pp/sl_pp_macro.c',
|
||||
'pp/sl_pp_pragma.c',
|
||||
'pp/sl_pp_process.c',
|
||||
'pp/sl_pp_purify.c',
|
||||
'pp/sl_pp_token.c',
|
||||
'pp/sl_pp_version.c',
|
||||
'cl/sl_cl_parse.c',
|
||||
]
|
||||
|
||||
glsl = env.StaticLibrary(
|
||||
target = 'glsl',
|
||||
source = sources,
|
||||
)
|
||||
|
||||
Export('glsl')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
if env['platform'] == 'windows':
|
||||
env.PrependUnique(LIBS = [
|
||||
'user32',
|
||||
])
|
||||
|
||||
env.Prepend(LIBS = [glsl])
|
||||
|
||||
env.Program(
|
||||
target = 'purify',
|
||||
source = ['apps/purify.c'],
|
||||
)
|
||||
|
||||
env.Program(
|
||||
target = 'tokenise',
|
||||
source = ['apps/tokenise.c'],
|
||||
)
|
||||
|
||||
env.Program(
|
||||
target = 'version',
|
||||
source = ['apps/version.c'],
|
||||
)
|
||||
|
||||
env.Program(
|
||||
target = 'process',
|
||||
source = ['apps/process.c'],
|
||||
)
|
||||
|
||||
glsl_compile = env.Program(
|
||||
target = 'compile',
|
||||
source = ['apps/compile.c'],
|
||||
)
|
||||
|
||||
if env['platform'] == common.default_platform:
|
||||
# Only export the GLSL compiler when building for the host platform
|
||||
Export('glsl_compile')
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
Import('*')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
if env['platform'] == 'windows':
|
||||
env.PrependUnique(LIBS = [
|
||||
'user32',
|
||||
])
|
||||
|
||||
env.Prepend(LIBS = [glsl, glslcl])
|
||||
|
||||
env.Program(
|
||||
target = 'purify',
|
||||
source = ['purify.c'],
|
||||
)
|
||||
|
||||
env.Program(
|
||||
target = 'tokenise',
|
||||
source = ['tokenise.c'],
|
||||
)
|
||||
|
||||
env.Program(
|
||||
target = 'version',
|
||||
source = ['version.c'],
|
||||
)
|
||||
|
||||
env.Program(
|
||||
target = 'process',
|
||||
source = ['process.c'],
|
||||
)
|
||||
|
||||
glsl_compile = env.Program(
|
||||
target = 'compile',
|
||||
source = ['compile.c'],
|
||||
)
|
||||
Export('glsl_compile')
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
Import('*')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
glslcl = env.StaticLibrary(
|
||||
target = 'glslcl',
|
||||
source = [
|
||||
'sl_cl_parse.c',
|
||||
],
|
||||
)
|
||||
Export('glslcl')
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
Import('*')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
glsl = env.StaticLibrary(
|
||||
target = 'glsl',
|
||||
source = [
|
||||
'sl_pp_context.c',
|
||||
'sl_pp_define.c',
|
||||
'sl_pp_dict.c',
|
||||
'sl_pp_error.c',
|
||||
'sl_pp_expression.c',
|
||||
'sl_pp_extension.c',
|
||||
'sl_pp_if.c',
|
||||
'sl_pp_line.c',
|
||||
'sl_pp_macro.c',
|
||||
'sl_pp_pragma.c',
|
||||
'sl_pp_process.c',
|
||||
'sl_pp_purify.c',
|
||||
'sl_pp_token.c',
|
||||
'sl_pp_version.c',
|
||||
],
|
||||
)
|
||||
Export('glsl')
|
||||
|
|
@ -5,13 +5,21 @@ Import('*')
|
|||
|
||||
env = env.Clone()
|
||||
|
||||
# See also http://www.scons.org/wiki/UsingCodeGenerators
|
||||
|
||||
def glsl_compile_emitter(target, source, env):
|
||||
env.Depends(target, glsl_compile)
|
||||
return (target, source)
|
||||
|
||||
bld_frag = Builder(
|
||||
action = glsl_compile[0].abspath + ' fragment $SOURCE $TARGET',
|
||||
emitter = glsl_compile_emitter,
|
||||
suffix = '.gc',
|
||||
src_suffix = '_gc.h')
|
||||
|
||||
bld_vert = Builder(
|
||||
action = glsl_compile[0].abspath + ' vertex $SOURCE $TARGET',
|
||||
emitter = glsl_compile_emitter,
|
||||
suffix = '.gc',
|
||||
src_suffix = '_gc.h')
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue