Cleanup: move 'make help_features' into own file
authorCampbell Barton <ideasman42@gmail.com>
Thu, 13 Sep 2018 06:20:02 +0000 (16:20 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 13 Sep 2018 06:20:02 +0000 (16:20 +1000)
GNUmakefile
build_files/cmake/cmake_print_build_options.py [new file with mode: 0644]

index 13f8a55..02e081e 100644 (file)
@@ -474,15 +474,7 @@ doc_man: .FORCE
        $(PYTHON) doc/manpage/blender.1.py $(BLENDER_BIN) blender.1
 
 help_features: .FORCE
-       @$(PYTHON) -c \
-               "import re; \
-               print('\n'.join([ \
-               w for l in open('"$(BLENDER_DIR)"/CMakeLists.txt', 'r').readlines() \
-               if not l.lstrip().startswith('#') \
-               for w in (re.sub(\
-                   r'.*\boption\s*\(\s*(WITH_[a-zA-Z0-9_]+)\s+(\".*\")\s*.*', r'\g<1> - \g<2>', l).strip('() \n'),) \
-               if w.startswith('WITH_')]))" | uniq
-
+       @$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_print_build_options.py" $(BLENDER_DIR)"/CMakeLists.txt"
 
 clean: .FORCE
        $(MAKE) -C "$(BUILD_DIR)" clean
diff --git a/build_files/cmake/cmake_print_build_options.py b/build_files/cmake/cmake_print_build_options.py
new file mode 100644 (file)
index 0000000..fb7a5b3
--- /dev/null
@@ -0,0 +1,25 @@
+# Apache License, Version 2.0
+
+# Simple utility that prints all WITH_* options in a CMakeLists.txt
+# Called by 'make help_features'
+
+import re
+import sys
+
+cmakelists_file = sys.argv[-1]
+
+def main():
+    options = []
+    for l in open(cmakelists_file, 'r').readlines():
+        if not l.lstrip().startswith('#'):
+            l_option = re.sub(r'.*\boption\s*\(\s*(WITH_[a-zA-Z0-9_]+)\s+\"(.*)\"\s*.*', r'\g<1> - \g<2>', l)
+            if l_option != l:
+                l_option = l_option.strip()
+                if l_option.startswith('WITH_'):
+                    options.append(l_option)
+
+    print('\n'.join(options))
+
+
+if __name__ == "__main__":
+    main()