diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-08-24 09:24:37 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-08-24 09:24:37 +0400 |
commit | 70e99a3476aa66fa3ef1238643e9cf37e41ce0cd (patch) | |
tree | 4d47db9dc3afe2f2f14d7eeeeb686e088f59fbab /build_files | |
parent | 6464718083dcc18f8f66b1af97c662fee2279e81 (diff) |
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.
Diffstat (limited to 'build_files')
-rwxr-xr-x | build_files/cmake/example_scripts/make_quicky.py | 119 |
1 files changed, 119 insertions, 0 deletions
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 ##### + +# <pep8 compliant> + +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() |