-
Notifications
You must be signed in to change notification settings - Fork 0
/
configure-dependencies.py
79 lines (53 loc) · 2.23 KB
/
configure-dependencies.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import argparse
import shutil
import os
import sys
import subprocess
printStackTraceOnError = False
def scriptDir():
return os.path.dirname(os.path.realpath(__file__))
def runScriptCommand(*args):
print("Running command:", *args)
result = subprocess.run([*args])
if not result.returncode == 0:
print("Command", *args, "returned error code", result.returncode, file=sys.stderr)
def getImmediateSubFolderNames(path):
if not os.path.exists(path):
return []
return [item for item in os.listdir(path) if os.path.isdir(os.path.join(path, item))]
def cleanBuildDirectory(buildDirectory):
print("Cleaning", buildDirectory)
if os.path.isdir:
shutil.rmtree(buildDirectory, ignore_errors=True)
elif os.path.isfile:
os.remove(buildDirectory)
os.makedirs(buildDirectory)
def runCMakeForDependency(name, config, generator):
print("Running CMake for", name)
depLibDirectory = os.path.join(scriptDir(), "submodule-libs", name)
depOrigDirectory = os.path.join(scriptDir(), "submodules", name)
cleanBuildDirectory(depLibDirectory)
oldDirectory = os.getcwd()
os.chdir(depLibDirectory)
if generator != "":
runScriptCommand("cmake", "-G", generator, "-DCMAKE_BUILD_TYPE=" + config, depOrigDirectory)
else:
runScriptCommand("cmake", "-DCMAKE_BUILD_TYPE=" + config, depOrigDirectory)
os.chdir(oldDirectory)
print("")
def runCMakeForAllDependencies(config, generator):
depsList = getImmediateSubFolderNames(os.path.join(scriptDir(), "submodules"))
for item in depsList:
runCMakeForDependency(item, config, generator)
print("CMake configuration run for all dependencies - see the submodule-libs directory for output.")
print("Run your platform-specific build method (eg. make, Visual Studio, msbuild, ...) to build the dependencies.")
def main():
print("Script directory:", scriptDir())
print("")
parser = argparse.ArgumentParser(description="Build helper script.")
parser.add_argument("--deps-config", help="CMake build configuration for dependencies.", default="Release", choices=["Debug", "Release"])
parser.add_argument("-G", "--generator", help="Override CMake generator type (see cmake --help).", default="")
args = parser.parse_args()
runCMakeForAllDependencies(args.deps_config, args.generator)
if __name__ == "__main__":
main()