summaryrefslogtreecommitdiff
path: root/tools/cmake.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cmake.py')
-rw-r--r--tools/cmake.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/cmake.py b/tools/cmake.py
new file mode 100644
index 0000000..0d6ee6b
--- /dev/null
+++ b/tools/cmake.py
@@ -0,0 +1,27 @@
+
+def exists(env):
+ return True
+
+
+def generate(env):
+ env.AddMethod(cmake_configure, "CMakeConfigure")
+ env.AddMethod(cmake_build, "CMakeBuild")
+
+
+def cmake_configure(env, source, target, opt_args):
+ args = [
+ "-B",
+ target,
+ ]
+ if env["platform"] == "windows" and env["use_mingw"]:
+ args.extend(["-G", "Unix Makefiles"])
+ for arg in opt_args:
+ args.append(arg)
+ args.append(source)
+ return env.Execute("cmake " + " ".join(['"%s"' % a for a in args]))
+
+
+def cmake_build(env, source, target=""):
+ jobs = env.GetOption("num_jobs")
+ env = env.Clone()
+ return env.Execute("cmake --build %s %s -j%s" % (source, "-t %s" % target if target else "", jobs))