|
@@ -7,6 +7,8 @@ from collections import OrderedDict
|
|
# We need to define our own `Action` method to control the verbosity of output
|
|
# We need to define our own `Action` method to control the verbosity of output
|
|
# and whenever we need to run those commands in a subprocess on some platforms.
|
|
# and whenever we need to run those commands in a subprocess on some platforms.
|
|
from SCons.Script import Action
|
|
from SCons.Script import Action
|
|
|
|
+from SCons import Node
|
|
|
|
+from SCons.Script import Glob
|
|
from platform_methods import run_in_subprocess
|
|
from platform_methods import run_in_subprocess
|
|
|
|
|
|
|
|
|
|
@@ -526,6 +528,35 @@ def generate_cpp_hint_file(filename):
|
|
print("Could not write cpp.hint file.")
|
|
print("Could not write cpp.hint file.")
|
|
|
|
|
|
|
|
|
|
|
|
+def glob_recursive(pattern, node="."):
|
|
|
|
+ results = []
|
|
|
|
+ for f in Glob(str(node) + "/*", source=True):
|
|
|
|
+ if type(f) is Node.FS.Dir:
|
|
|
|
+ results += glob_recursive(pattern, f)
|
|
|
|
+ results += Glob(str(node) + "/" + pattern, source=True)
|
|
|
|
+ return results
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def add_to_vs_project(env, sources):
|
|
|
|
+ for x in sources:
|
|
|
|
+ if type(x) == type(""):
|
|
|
|
+ fname = env.File(x).path
|
|
|
|
+ else:
|
|
|
|
+ fname = env.File(x)[0].path
|
|
|
|
+ pieces = fname.split(".")
|
|
|
|
+ if len(pieces) > 0:
|
|
|
|
+ basename = pieces[0]
|
|
|
|
+ basename = basename.replace("\\\\", "/")
|
|
|
|
+ if os.path.isfile(basename + ".h"):
|
|
|
|
+ env.vs_incs += [basename + ".h"]
|
|
|
|
+ elif os.path.isfile(basename + ".hpp"):
|
|
|
|
+ env.vs_incs += [basename + ".hpp"]
|
|
|
|
+ if os.path.isfile(basename + ".c"):
|
|
|
|
+ env.vs_srcs += [basename + ".c"]
|
|
|
|
+ elif os.path.isfile(basename + ".cpp"):
|
|
|
|
+ env.vs_srcs += [basename + ".cpp"]
|
|
|
|
+
|
|
|
|
+
|
|
def generate_vs_project(env, num_jobs):
|
|
def generate_vs_project(env, num_jobs):
|
|
batch_file = find_visual_c_batch_file(env)
|
|
batch_file = find_visual_c_batch_file(env)
|
|
if batch_file:
|
|
if batch_file:
|
|
@@ -558,12 +589,16 @@ def generate_vs_project(env, num_jobs):
|
|
result = " ^& ".join(common_build_prefix + [" ".join([commands] + common_build_postfix)])
|
|
result = " ^& ".join(common_build_prefix + [" ".join([commands] + common_build_postfix)])
|
|
return result
|
|
return result
|
|
|
|
|
|
- env.AddToVSProject(env.core_sources)
|
|
|
|
- env.AddToVSProject(env.main_sources)
|
|
|
|
- env.AddToVSProject(env.modules_sources)
|
|
|
|
- env.AddToVSProject(env.scene_sources)
|
|
|
|
- env.AddToVSProject(env.servers_sources)
|
|
|
|
- env.AddToVSProject(env.editor_sources)
|
|
|
|
|
|
+ add_to_vs_project(env, env.core_sources)
|
|
|
|
+ add_to_vs_project(env, env.drivers_sources)
|
|
|
|
+ add_to_vs_project(env, env.main_sources)
|
|
|
|
+ add_to_vs_project(env, env.modules_sources)
|
|
|
|
+ add_to_vs_project(env, env.scene_sources)
|
|
|
|
+ add_to_vs_project(env, env.servers_sources)
|
|
|
|
+ add_to_vs_project(env, env.editor_sources)
|
|
|
|
+
|
|
|
|
+ for header in glob_recursive("**/*.h"):
|
|
|
|
+ env.vs_incs.append(str(header))
|
|
|
|
|
|
env["MSVSBUILDCOM"] = build_commandline("scons")
|
|
env["MSVSBUILDCOM"] = build_commandline("scons")
|
|
env["MSVSREBUILDCOM"] = build_commandline("scons vsproj=yes")
|
|
env["MSVSREBUILDCOM"] = build_commandline("scons vsproj=yes")
|