1 import os, sys, platform
3 Import('env', 'compiler')
8 source=Split("""Bitmap/Bitmap.cpp Bitmap/jdatasrc.cpp
9 ConsoleCommands/ConVar.cpp ConsoleCommands/ConFunc.cpp
10 ConsoleCommands/ConsoleInterpreterImpl.cpp ConsoleCommands/ConsoleInterpreter_LuaBinding.cpp
11 ConsoleCommands/Console.cpp ConsoleCommands/Console_Lua.cpp ConsoleCommands/ConsoleComposite.cpp ConsoleCommands/ConsoleStdout.cpp ConsoleCommands/ConsoleStringBuffer.cpp ConsoleCommands/ConsoleWarningsOnly.cpp ConsoleCommands/ConsoleFile.cpp
12 Fonts/Font.cpp Fonts/FontTT.cpp
13 FileSys/FileManImpl.cpp FileSys/FileSys_LocalPath.cpp FileSys/FileSys_ZipArchive_GV.cpp FileSys/File_local.cpp FileSys/File_memory.cpp FileSys/Password.cpp
14 MainWindow/glfwLibrary.cpp MainWindow/glfwMainWindow.cpp MainWindow/glfwMonitor.cpp MainWindow/glfwWindow.cpp
16 Models/Loader.cpp Models/Loader_ase.cpp Models/Loader_cmdl.cpp Models/Loader_dlod.cpp Models/Loader_dummy.cpp Models/Loader_lwo.cpp Models/Loader_md5.cpp
17 Models/Loader_mdl.cpp Models/Loader_mdl_hl1.cpp Models/Loader_mdl_hl2.cpp Models/Loader_mdl_hl2_vtf.cpp Models/AnimExpr.cpp Models/AnimPose.cpp
18 Models/Model_cmdl.cpp Models/ModelManager.cpp
19 Network/Network.cpp Network/State.cpp ParticleEngine/ParticleEngineMS.cpp PlatformAux.cpp Terrain/Terrain.cpp
20 TextParser/TextParser.cpp
21 Plants/Tree.cpp Plants/PlantDescription.cpp Plants/PlantDescrMan.cpp
23 Win32/Win32PrintHelp.cpp
24 DebugLog.cpp PhysicsWorld.cpp TypeSys.cpp UniScriptState.cpp Variables.cpp VarVisitorsLua.cpp""")+
25 Glob("GameSys/*.cpp")+Glob("GameSys/HumanPlayer/*.cpp")+
28 CPPPATH=env['CPPPATH'] + ["#/ExtLibs/bullet/src", "#/ExtLibs/glfw/include", "#/ExtLibs/lua/src", "#/ExtLibs/lwo", "#/ExtLibs/jpeg"])
32 # TODO: Either integrate this into cfsLib above or integrate the above model loaders here.
33 envModelLoaders = env.Clone()
35 if sys.platform == "win32":
36 # The next two lines are mirrored in ./SConscript.
37 fbx_lib_path = "#/ExtLibs/fbx/lib/" + \
38 {"vc8": "vs2005", "vc9": "vs2008", "vc10": "vs2010", "vc11": "vs2012", "vc12": "vs2013", "vc14": "vs2015"}[compiler]
40 if os.path.exists(Dir("#/ExtLibs/fbx/include").abspath) and os.path.exists(Dir(fbx_lib_path).abspath):
41 envModelLoaders.Append(CPPDEFINES=["HAVE_FBX_SDK"])
42 envModelLoaders.Append(CPPPATH=["#/ExtLibs/fbx/include"])
43 elif sys.platform.startswith("linux"):
44 if os.path.exists(Dir("#/ExtLibs/fbx/include").abspath):
45 envModelLoaders.Append(CPPDEFINES=["HAVE_FBX_SDK"])
46 envModelLoaders.Append(CPPPATH=["#/ExtLibs/fbx/include"])
48 envModelLoaders.StaticLibrary("ModelLoaders", ["Models/Loader_fbx.cpp"])
54 source=Split("""ClipSys/CollisionModel_static.cpp ClipSys/CollisionModel_static_BulletAdapter.cpp ClipSys/CollisionModelMan_impl.cpp
55 ClipSys/ClipModel.cpp ClipSys/ClipWorld.cpp ClipSys/TraceSolid.cpp"""),
56 CPPPATH=env['CPPPATH']+["#/ExtLibs/bullet/src"])
62 source=Split("""MaterialSystem/Expression.cpp MaterialSystem/MapComposition.cpp MaterialSystem/Material.cpp
63 MaterialSystem/MaterialManagerImpl.cpp MaterialSystem/Renderer.cpp MaterialSystem/TextureMap.cpp"""))
69 source=Split("""SoundSystem/SoundShaderManagerImpl.cpp SoundSystem/SoundShader.cpp"""))
75 source=Split("""SceneGraph/_aux.cpp SceneGraph/BezierPatchNode.cpp SceneGraph/BspTreeNode.cpp SceneGraph/FaceNode.cpp
76 SceneGraph/LightMapMan.cpp SceneGraph/Node.cpp SceneGraph/SHLMapMan.cpp SceneGraph/TerrainNode.cpp
77 SceneGraph/PlantNode.cpp SceneGraph/ModelNode.cpp"""))
81 envRenderers = env.Clone()
83 MatSys_CommonObjectsList = envRenderers.SharedObject(["MaterialSystem/Common/DepRelMatrix.cpp", "MaterialSystem/Common/OpenGLState.cpp", "MaterialSystem/Common/OpenGLEx.cpp"])
85 if sys.platform.startswith("linux"):
86 envRenderers.Append(LINKFLAGS=["Libs/MaterialSystem/Common/linker-script"])
90 if sys.platform=="win32":
91 LibList=Split("cfsLib png cfs_jpeg z MatSys opengl32.lib glu32.lib")
95 envRenderers.SharedLibrary(
96 target="MaterialSystem/RendererARBprogs",
97 source=[os.path.join("MaterialSystem/RendererARBprogs", x) for x in Split("""
98 RendererARBprogs.cpp RendererImpl.cpp RenderMaterial.cpp Shader.cpp TextureMapImpl.cpp
100 Shaders/A_Terrain.cpp Shaders/A_Diff.cpp Shaders/A_Diff_Luma.cpp Shaders/A_Diff_Norm.cpp Shaders/A_Diff_Norm_Luma.cpp
101 Shaders/A_Diff_Light.cpp Shaders/A_Diff_Light_Luma.cpp Shaders/A_Diff_Light_Norm.cpp Shaders/A_Diff_Light_Norm_Spec.cpp
102 Shaders/A_Diff_Light_Norm_Luma.cpp Shaders/A_Diff_Light_Norm_Luma_Spec.cpp
103 Shaders/A_SkyDome.cpp Shaders/A_Solid.cpp Shaders/A_WaterCubeReflect.cpp
104 Shaders/L_Diff.cpp Shaders/L_Diff_Spec.cpp Shaders/L_Diff_Norm.cpp Shaders/L_Diff_Norm_Spec.cpp
105 Shaders/StencilShadowVolumes.cpp
106 Shaders/_CommonHelpers.cpp""")] +
107 MatSys_CommonObjectsList,
112 if not platform.machine().startswith("arm"):
113 LibPath="#/ExtLibs/Cg/lib"
114 if sys.platform=="win32":
115 LibList=Split("cfsLib png cfs_jpeg z MatSys opengl32.lib glu32.lib cg cgGL")
116 if envRenderers["TARGET_ARCH"]!="x86": LibPath += ".x64"
117 elif sys.platform.startswith("linux"):
118 LibList=Split("Cg CgGL GLU")
119 if platform.machine()=="x86_64": LibPath += ".x64"
123 envRenderers.SharedLibrary(
124 target="MaterialSystem/RendererCgARB1",
125 source=[os.path.join("MaterialSystem/RendererCgARB1", x) for x in Split("""
126 RendererCgARB1.cpp RendererImpl.cpp RenderMaterial.cpp Shader.cpp TextureMapImpl.cpp
128 Shaders/A_Terrain.cpp Shaders/A_Diff.cpp Shaders/A_Diff_Luma.cpp Shaders/A_Diff_Norm.cpp Shaders/A_Diff_Norm_Luma.cpp
129 Shaders/A_Diff_Light.cpp Shaders/A_Diff_Light_Luma.cpp Shaders/A_Diff_Light_Norm.cpp Shaders/A_Diff_Light_Norm_Luma.cpp
130 Shaders/A_SkyDome.cpp Shaders/A_Solid.cpp Shaders/A_WaterCubeReflect.cpp Shaders/L_Diff.cpp Shaders/L_Diff_Spec.cpp
131 Shaders/L_Diff_Norm.cpp Shaders/L_Diff_Norm_Spec.cpp Shaders/StencilShadowVolumes.cpp Shaders/_CommonCgHelpers.cpp""")] +
132 MatSys_CommonObjectsList,
133 CPPPATH=env['CPPPATH']+["#/ExtLibs/Cg/include"],
134 LIBPATH=env['LIBPATH']+[LibPath],
139 if not platform.machine().startswith("arm"):
140 LibPath="#/ExtLibs/Cg/lib"
141 if sys.platform=="win32":
142 LibList=Split("cfsLib png cfs_jpeg z MatSys opengl32.lib glu32.lib cg cgGL")
143 if envRenderers["TARGET_ARCH"]!="x86": LibPath += ".x64"
144 elif sys.platform.startswith("linux"):
145 LibList=Split("Cg CgGL GLU")
146 if platform.machine()=="x86_64": LibPath += ".x64"
150 envRenderers.SharedLibrary(
151 target="MaterialSystem/RendererCgNV2X",
152 source=[os.path.join("MaterialSystem/RendererCgNV2X", x) for x in Split("""
153 RendererCgNV2X.cpp RendererImpl.cpp RenderMaterial.cpp Shader.cpp TextureMapImpl.cpp
155 Shaders/A_Terrain.cpp Shaders/A_Diff.cpp Shaders/A_Diff_Luma.cpp Shaders/A_Diff_Norm.cpp Shaders/A_Diff_Norm_Luma.cpp
156 Shaders/A_Diff_Light.cpp Shaders/A_Diff_Light_Luma.cpp Shaders/A_Diff_Light_Norm.cpp Shaders/A_Diff_Light_Norm_Luma.cpp
157 Shaders/A_SkyDome.cpp Shaders/A_Solid.cpp Shaders/A_WaterCubeReflect.cpp Shaders/L_Diff.cpp Shaders/L_Diff_Spec.cpp
158 Shaders/L_Diff_Norm_oSpec.cpp Shaders/StencilShadowVolumes.cpp Shaders/_CommonCgHelpers.cpp""")] +
159 MatSys_CommonObjectsList,
160 CPPPATH=env['CPPPATH']+["#/ExtLibs/Cg/include"],
161 LIBPATH=env['LIBPATH']+[LibPath],
166 if sys.platform=="win32":
167 LibList=Split("cfsLib MatSys")
171 envRenderers.SharedLibrary(
172 target="MaterialSystem/RendererNull",
173 source=[os.path.join("MaterialSystem/RendererNull", x) for x in Split("""RendererNull.cpp RendererImpl.cpp TextureMapImpl.cpp""")],
178 if sys.platform=="win32":
179 LibList=Split("cfsLib png cfs_jpeg z MatSys opengl32.lib glu32.lib")
183 envRenderers.SharedLibrary(
184 target="MaterialSystem/RendererOpenGL12",
185 source=[os.path.join("MaterialSystem/RendererOpenGL12", x) for x in Split("""
186 RendererImpl.cpp RendererOpenGL12.cpp RenderMaterial.cpp Shader.cpp TextureMapImpl.cpp
188 Shaders/A_Diff_Light_Fog.cpp Shaders/A_Diff_Light_oLuma.cpp Shaders/A_Diff_nLight_oLuma.cpp Shaders/A_SkyDome.cpp
189 Shaders/A_Solid.cpp Shaders/A_Terrain.cpp Shaders/A_WaterCubeReflect.cpp Shaders/L_Diff_oSpec.cpp Shaders/StencilShadowVolumes.cpp""")] +
190 MatSys_CommonObjectsList,
195 envSoundSys = env.Clone()
197 if sys.platform.startswith("linux"):
198 envSoundSys.Append(LINKFLAGS=["Libs/SoundSystem/Common/linker-script"])
200 envSoundSys.SharedLibrary(
201 target="SoundSystem/SoundSysNull",
202 source=[os.path.join("SoundSystem/SoundSysNull", x) for x in Split("SoundSysImpl.cpp DllInterface.cpp")],
207 envSoundSys = env.Clone()
208 envSoundSys.Append(CPPPATH=['#/ExtLibs/fmod/api/inc'])
210 if sys.platform=="win32":
211 envSoundSys.Append(LIBPATH=['#/ExtLibs/fmod/api/lib'])
212 envSoundSys.Append(LIBS=Split("cfsLib SoundSys fmodvc"))
213 elif sys.platform.startswith("linux"):
214 envSoundSys.Append(LINKFLAGS=["Libs/SoundSystem/Common/linker-script"])
215 envSoundSys.Append(LIBPATH=['#/ExtLibs/fmod/api'])
216 envSoundSys.Append(LIBS=["SoundSys", "fmod-3.75"])
218 # We have the FMod libraries only for 32-bit platforms...
219 if not platform.machine().startswith("arm"):
220 if (sys.platform=="win32" and envSoundSys["TARGET_ARCH"]=="x86") or (sys.platform.startswith("linux") and platform.machine()!="x86_64"):
221 envSoundSys.SharedLibrary(
222 target="SoundSystem/SoundSysFMOD3",
223 source=[os.path.join("SoundSystem/SoundSysFMOD3", x) for x in Split("""
224 SoundSysImpl.cpp DllInterface.cpp SoundImpl.cpp BufferManager.cpp
225 StaticBuffer.cpp StreamingBuffer.cpp Channel.cpp""")])
229 envSoundSys = env.Clone()
230 envSoundSys.Append(CPPPATH=['#/ExtLibs/freealut/include', '#/ExtLibs/mpg123/src/libmpg123', '#/ExtLibs/libvorbis/include', '#/ExtLibs/libogg/include'])
232 if sys.platform=="win32":
233 envSoundSys.Append(CPPPATH=['#/ExtLibs/openal-win/include'])
234 envSoundSys.Append(LIBS=Split("cfsLib SoundSys OpenAL32 alut mpg123 ogg vorbis vorbisfile"))
235 if envSoundSys["TARGET_ARCH"]=="x86":
236 envSoundSys.Append(LIBPATH=['#/ExtLibs/openal-win/libs/Win32'])
238 envSoundSys.Append(LIBPATH=['#/ExtLibs/openal-win/libs/Win64'])
239 elif sys.platform.startswith("linux"):
240 envSoundSys.Append(CPPPATH=['#/ExtLibs/openal-soft/include'])
241 envSoundSys.Append(LIBS=Split("openal alut mpg123 vorbisfile vorbis ogg"))
242 envSoundSys.Append(LINKFLAGS=["Libs/SoundSystem/Common/linker-script"])
244 envSoundSys.SharedLibrary(
245 target="SoundSystem/SoundSysOpenAL",
246 source=Glob("SoundSystem/Common/*.cpp")+
247 Glob("SoundSystem/SoundSysOpenAL/*.cpp"))