123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #!/usr/bin/env python3
- # ##### 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
- makefile = open("Makefile", "r")
- for line in makefile:
- 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)
- makefile.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()
|