Sean Callanan | b1e1c62 | 2014-12-05 01:15:04 +0000 | [diff] [blame] | 1 | #! /usr/bin/env python |
| 2 | |
| 3 | # package-clang-headers.py |
| 4 | # |
| 5 | # The Clang module loader depends on built-in headers for the Clang compiler. |
| 6 | # We grab these from the Clang build and move them into the LLDB module. |
| 7 | |
| 8 | # TARGET_DIR is where the lldb framework/shared library gets put. |
| 9 | # LLVM_BUILD_DIR is where LLVM and Clang got built |
| 10 | # LLVM_BUILD_DIR/lib/clang should exist and contain headers |
| 11 | |
| 12 | import os |
| 13 | import re |
| 14 | import shutil |
| 15 | import sys |
| 16 | |
| 17 | if len(sys.argv) != 3: |
| 18 | print "usage: " + sys.argv[0] + " TARGET_DIR LLVM_BUILD_DIR" |
| 19 | sys.exit(1) |
| 20 | |
| 21 | target_dir = sys.argv[1] |
| 22 | llvm_build_dir = sys.argv[2] |
| 23 | |
| 24 | if not os.path.isdir(target_dir): |
| 25 | print target_dir + " doesn't exist" |
| 26 | sys.exit(1) |
| 27 | |
| 28 | if not os.path.isdir(llvm_build_dir): |
| 29 | print llvm_build_dir + " doesn't exist" |
| 30 | sys.exit(1) |
| 31 | |
| 32 | resources = os.path.join(target_dir, "LLDB.framework", "Resources") |
| 33 | |
| 34 | if not os.path.isdir(resources): |
| 35 | print resources + " must exist" |
| 36 | sys.exit(1) |
| 37 | |
| 38 | clang_dir = os.path.join(llvm_build_dir, "lib", "clang") |
| 39 | |
| 40 | if not os.path.isdir(clang_dir): |
| 41 | print clang_dir + " must exist" |
| 42 | sys.exit(1) |
| 43 | |
| 44 | version_dir = None |
| 45 | |
| 46 | for subdir in os.listdir(clang_dir): |
| 47 | if (re.match("^[0-9]+(\.[0-9]+)*$", subdir)): |
| 48 | version_dir = os.path.join(clang_dir, subdir) |
| 49 | break |
| 50 | |
| 51 | if version_dir == None: |
| 52 | print "Couldn't find a subdirectory of the form #(.#)... in " + clang_dir |
| 53 | sys.exit(1) |
| 54 | |
| 55 | if not os.path.isdir(version_dir): |
| 56 | print version_dir + " is not a directory" |
| 57 | sys.exit(1) |
| 58 | |
| 59 | # Just checking... we're actually going to copy all of version_dir |
| 60 | include_dir = os.path.join(version_dir, "include") |
| 61 | |
| 62 | if not os.path.isdir(include_dir): |
| 63 | print version_dir + " is not a directory" |
| 64 | sys.exit(1) |
| 65 | |
| 66 | clang_resources = os.path.join(resources, "Clang") |
| 67 | |
| 68 | if os.path.isdir(clang_resources): |
| 69 | shutil.rmtree(clang_resources) |
| 70 | |
| 71 | shutil.copytree(version_dir, clang_resources) |