From 70e99a3476aa66fa3ef1238643e9cf37e41ce0cd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 24 Aug 2010 05:24:37 +0000 Subject: make quicky wrapper for cmake. works like scons where using a subset of the targets name is enough. make_quicky.py py ...expands into make bf_python bf_python_ext blender/fast arguments like -j4 are passed on. --- build_files/cmake/example_scripts/make_quicky.py | 119 +++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100755 build_files/cmake/example_scripts/make_quicky.py (limited to 'build_files') diff --git a/build_files/cmake/example_scripts/make_quicky.py b/build_files/cmake/example_scripts/make_quicky.py new file mode 100755 index 00000000000..69f7604c8cc --- /dev/null +++ b/build_files/cmake/example_scripts/make_quicky.py @@ -0,0 +1,119 @@ +#! /usr/bin/env python + +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# + +def print_help(targets): + print("CMake quicky wrapper, no valid targets given.") + print(" * targets can contain a subset of the full target name.") + print(" * arguments with a '-' prefix are passed onto make.") + print(" * this must run from the cmake build dir") + print(" * alias this with a short command for speedy access, in bash:") + print(" alias mk='../blender/build_files/cmake/example_scripts/make_quicky.py'") + print("") + print(" eg: make_quicky.py -j3 extern python") + print(" ...will execute") + print(" make -j3 extern_binreloc extern_glew bf_python bf_python_ext blender/fast") + print("") + print("Target List:") + for t in targets: + print(" %s" % t) + print("...exiting") + + +def main(): + targets = set() + + # collect targets + file = open("Makefile", "r") + for line in file: + line = line.rstrip() + if not line or line[0] in ". \t@$#": + continue + + line = line.split("#", 1)[0] + if ":" not in line: + continue + + line = line.split(":", 1)[0] + + if "/" in line: # cmake terget options, dont need these + continue + + targets.add(line) + file.close() + + + # remove cmake targets + bad = set([ + "help", + "clean", + "all", + "preinstall", + "install", + "default_target", + "edit_cache", + "cmake_force", + "rebuild_cache", + "depend", + "cmake_check_build_system", + ]) + + targets -= set(bad) + + + # parse args + targets = list(targets) + targets.sort() + + import sys + if len(sys.argv) == 1: + print_help(targets) + return + + targets_new = [] + args = [] + for arg in sys.argv[1:]: + if arg[0] in "/-": + args.append(arg) + else: + found = False + for t in targets: + if arg in t and t not in targets_new: + targets_new.append(t) + found = True + + if not found: + print("Error '%s' not found in...") + for t in targets: + print(" %s" % t) + print("...aborting.") + return + + # execute + cmd = "make %s %s blender/fast" % (" ".join(args), " ".join(targets_new)) + print("cmake building with targets: %s" % " ".join(targets_new)) + print("executing: %s" % cmd) + + import os + os.system(cmd) + +if __name__ == "__main__": + main() -- cgit v1.2.3