drivers: Refactor SCsub and drop redundant env_drivers clone

The reordering of the SConscript includes allows to ensure that
stuff like the builtin zlib headers will be available for libpng.

Also moved glew back into global env, otherwise windows seems
not to find it... Kind of shooting in the dark with this multi-env
setup.
This commit is contained in:
Rémi Verschelde 2016-10-15 12:39:28 +02:00
parent edbc0c0d0b
commit 248bc9159c
11 changed files with 63 additions and 63 deletions

65
drivers/SCsub vendored
View file

@ -1,42 +1,47 @@
Import('env') Import('env')
env_drivers = env.Clone()
env.drivers_sources=[] env.drivers_sources=[]
#env.add_source_files(env.drivers_sources,"*.cpp")
Export('env_drivers')
SConscript('unix/SCsub');
SConscript('alsa/SCsub');
SConscript('pulseaudio/SCsub');
SConscript('windows/SCsub');
SConscript('gles2/SCsub');
SConscript('gl_context/SCsub');
SConscript("png/SCsub");
if ("builtin_zlib" in env and env["builtin_zlib"] == "yes"): if ("builtin_zlib" in env and env["builtin_zlib"] == "yes"):
SConscript("zlib/SCsub"); SConscript("zlib/SCsub");
# OS drivers
SConscript('unix/SCsub');
SConscript('windows/SCsub');
# Sounds drivers
SConscript('alsa/SCsub');
SConscript('pulseaudio/SCsub');
if (env["platform"] == "windows"): if (env["platform"] == "windows"):
SConscript("rtaudio/SCsub"); SConscript("rtaudio/SCsub");
# Graphics drivers
SConscript('gles2/SCsub');
SConscript('gl_context/SCsub');
# Core dependencies
SConscript("png/SCsub");
SConscript("nrex/SCsub"); SConscript("nrex/SCsub");
# Tools override
# FIXME: Should likely be integrated in the tools/ codebase
if (env["tools"]=="yes"): if (env["tools"]=="yes"):
SConscript("convex_decomp/SCsub"); SConscript("convex_decomp/SCsub");
num = 0
cur_base = ""
total = len(env.drivers_sources)
max_src = 64
list = []
lib_list = []
import string
if env['vsproj']=="yes": if env['vsproj']=="yes":
env.AddToVSProject(env.drivers_sources) env.AddToVSProject(env.drivers_sources)
if (env.split_drivers): #split drivers, this used to be needed for windows until separate builders for windows were created
# Split drivers, this used to be needed for windows until separate builders for windows were created
# FIXME: Check if still needed now that the drivers were made more lightweight
if (env.split_drivers):
import string
num = 0
cur_base = ""
max_src = 64
list = []
lib_list = []
for f in env.drivers_sources: for f in env.drivers_sources:
fname = "" fname = ""
@ -48,14 +53,14 @@ if (env.split_drivers): #split drivers, this used to be needed for windows until
base = string.join(fname.split("/")[:2], "/") base = string.join(fname.split("/")[:2], "/")
if base != cur_base and len(list) > max_src: if base != cur_base and len(list) > max_src:
if num > 0: if num > 0:
lib = env_drivers.Library("drivers"+str(num), list) lib = env.Library("drivers"+str(num), list)
lib_list.append(lib) lib_list.append(lib)
list = [] list = []
num = num+1 num = num+1
cur_base = base cur_base = base
list.append(f) list.append(f)
lib = env_drivers.Library("drivers"+str(num), list) lib = env.Library("drivers"+str(num), list)
lib_list.append(lib) lib_list.append(lib)
if len(lib_list) > 0: if len(lib_list) > 0:
@ -63,15 +68,15 @@ if (env.split_drivers): #split drivers, this used to be needed for windows until
if os.name=='posix' and sys.platform=='msys': if os.name=='posix' and sys.platform=='msys':
env.Replace(ARFLAGS=['rcsT']) env.Replace(ARFLAGS=['rcsT'])
lib = env_drivers.Library("drivers_collated", lib_list) lib = env.Library("drivers_collated", lib_list)
lib_list = [lib] lib_list = [lib]
drivers_base=[] drivers_base=[]
env_drivers.add_source_files(drivers_base,"*.cpp") env.add_source_files(drivers_base,"*.cpp")
lib_list.insert(0, env_drivers.Library("drivers", drivers_base)) lib_list.insert(0, env.Library("drivers", drivers_base))
env.Prepend(LIBS=lib_list) env.Prepend(LIBS=lib_list)
else: else:
env_drivers.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources,"*.cpp")
lib = env_drivers.Library("drivers",env.drivers_sources) lib = env.Library("drivers",env.drivers_sources)
env.Prepend(LIBS=[lib]) env.Prepend(LIBS=[lib])

View file

@ -1,5 +1,5 @@
Import('env') Import('env')
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
Export('env') Export('env')

View file

@ -1,4 +1,5 @@
Import('env') Import('env')
Export('env');
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
Export('env')

View file

@ -1,7 +1,4 @@
Import('env') Import('env')
Import('env_drivers')
env_glew = env_drivers.Clone()
if (env["platform"] in ["haiku","osx","windows","x11"]): if (env["platform"] in ["haiku","osx","windows","x11"]):
# Thirdparty source files # Thirdparty source files
@ -12,15 +9,13 @@ if (env["platform"] in ["haiku","osx","windows","x11"]):
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_glew.add_source_files(env.drivers_sources, thirdparty_sources) env.add_source_files(env.drivers_sources, thirdparty_sources)
env_glew.Append(CPPFLAGS = ['-DGLEW_STATIC']) env.Append(CPPFLAGS = ['-DGLEW_STATIC'])
env_glew.Append(CPPPATH = [thirdparty_dir])
# Also pass to global env, used by platform code
env.Append(CPPPATH = [thirdparty_dir]) env.Append(CPPPATH = [thirdparty_dir])
env.Append(CPPFLAGS = ['-DGLEW_ENABLED']) env.Append(CPPFLAGS = ['-DGLEW_ENABLED'])
# Godot source files # Godot source files
env_glew.add_source_files(env.drivers_sources, "*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
Export('env') Export('env')

View file

@ -1,5 +1,7 @@
Import('env') Import('env')
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
SConscript("shaders/SCsub") SConscript("shaders/SCsub")
Export('env')

View file

@ -6,3 +6,5 @@ if env['BUILDERS'].has_key('GLSL120GLES'):
env.GLSL120GLES('canvas_shadow.glsl'); env.GLSL120GLES('canvas_shadow.glsl');
env.GLSL120GLES('blur.glsl'); env.GLSL120GLES('blur.glsl');
env.GLSL120GLES('copy.glsl'); env.GLSL120GLES('copy.glsl');
Export('env')

View file

@ -1,7 +1,5 @@
Import('env') Import('env')
sources = [ env.add_source_files(env.drivers_sources, "*.cpp")
'nrex.cpp',
'regex.cpp', Export('env')
]
env.add_source_files(env.drivers_sources, sources)

View file

@ -1,8 +1,8 @@
Import('env') Import('env')
Import('env_drivers')
env_png = env.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libpng"] == "builtin"): if (env["libpng"] == "builtin"):
thirdparty_dir = "#thirdparty/libpng/" thirdparty_dir = "#thirdparty/libpng/"
thirdparty_sources = [ thirdparty_sources = [
@ -26,24 +26,21 @@ if (env["libpng"] == "builtin"):
# Currently .ASM filter_neon.S does not compile on NT. # Currently .ASM filter_neon.S does not compile on NT.
import os import os
if ("neon_enabled" in env and env["neon_enabled"]) and os.name!="nt": if ("neon_enabled" in env and env["neon_enabled"]) and os.name!="nt":
env_drivers.Append(CPPFLAGS=["-DPNG_ARM_NEON_OPT=2"]) env_png.Append(CPPFLAGS = ["-DPNG_ARM_NEON_OPT=2"])
env_neon = env_drivers.Clone(); env_neon = env_png.Clone();
if "S_compiler" in env: if "S_compiler" in env:
env_neon['CC'] = env['S_compiler'] env_neon['CC'] = env['S_compiler']
#env_neon.Append(CPPFLAGS=["-DPNG_ARM_NEON"]) #env_neon.Append(CPPFLAGS = ["-DPNG_ARM_NEON"])
thirdparty_sources.append(env_neon.Object(thirdparty_dir + "/arm/arm_init.c")) thirdparty_sources.append(env_neon.Object(thirdparty_dir + "/arm/arm_init.c"))
thirdparty_sources.append(env_neon.Object(thirdparty_dir + "/arm/filter_neon.S")) thirdparty_sources.append(env_neon.Object(thirdparty_dir + "/arm/filter_neon.S"))
else: else:
env_drivers.Append(CPPFLAGS=["-DPNG_ARM_NEON_OPT=0"]) env_png.Append(CPPFLAGS = ["-DPNG_ARM_NEON_OPT=0"])
#env_drivers.add_source_files(env.drivers_sources, thirdparty_sources) #env_png.add_source_files(env.drivers_sources, thirdparty_sources)
env.drivers_sources += thirdparty_sources # Concatenation necessary for neon objects it seems? env.drivers_sources += thirdparty_sources # Concatenation necessary for neon objects it seems?
env_drivers.Append(CPPPATH = [thirdparty_dir]) env_png.Append(CPPPATH = [thirdparty_dir])
# Godot source files
env_png.add_source_files(env.drivers_sources, "*.cpp")
# Godot's own source files
env_drivers.add_source_files(env.drivers_sources, "*.cpp")
Export('env_drivers')
Export('env') Export('env')

View file

@ -1,5 +1,5 @@
Import('env') Import('env')
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
Export('env') Export('env')

View file

@ -10,6 +10,6 @@ f = open("os_unix_global_settings_path.cpp","wb")
f.write(g_set_p) f.write(g_set_p)
f.close() f.close()
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
Export('env') Export('env')

View file

@ -1,5 +1,5 @@
Import('env') Import('env')
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")
Export('env') Export('env')