#! /usr/bin/env python # package-clang-headers.py # # The Clang module loader depends on built-in headers for the Clang compiler. # We grab these from the Clang build and move them into the LLDB module. # TARGET_DIR is where the lldb framework/shared library gets put. # LLVM_BUILD_DIR is where LLVM and Clang got built # LLVM_BUILD_DIR/lib/clang should exist and contain headers import os import re import shutil import sys if len(sys.argv) != 3: print "usage: " + sys.argv[0] + " TARGET_DIR LLVM_BUILD_DIR" sys.exit(1) target_dir = sys.argv[1] llvm_build_dir = sys.argv[2] if not os.path.isdir(target_dir): print target_dir + " doesn't exist" sys.exit(1) if not os.path.isdir(llvm_build_dir): llvm_build_dir = re.sub ("-macosx-", "-iphoneos-", llvm_build_dir) if not os.path.isdir(llvm_build_dir): print llvm_build_dir + " doesn't exist" sys.exit(1) resources = os.path.join(target_dir, "LLDB.framework", "Resources") if not os.path.isdir(resources): print resources + " must exist" sys.exit(1) clang_dir = os.path.join(llvm_build_dir, "lib", "clang") if not os.path.isdir(clang_dir): print clang_dir + " must exist" sys.exit(1) version_dir = None for subdir in os.listdir(clang_dir): if (re.match("^[0-9]+(\.[0-9]+)*$", subdir)): version_dir = os.path.join(clang_dir, subdir) break if version_dir == None: print "Couldn't find a subdirectory of the form #(.#)... in " + clang_dir sys.exit(1) if not os.path.isdir(version_dir): print version_dir + " is not a directory" sys.exit(1) # Just checking... we're actually going to copy all of version_dir include_dir = os.path.join(version_dir, "include") if not os.path.isdir(include_dir): print version_dir + " is not a directory" sys.exit(1) clang_resources = os.path.join(resources, "Clang") if os.path.isdir(clang_resources): shutil.rmtree(clang_resources) shutil.copytree(version_dir, clang_resources)