From b1e1c62fac12bf5c48b57d5e90d65bf1e48170b7 Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Fri, 5 Dec 2014 01:15:04 +0000 Subject: Add support for embedding Clang compiler headers like tgmath.h and stdarg.h into the LLDB installation, and then finding them through the Host infrastructure. Also add a script to actually do this on Mac OS X. llvm-svn: 223430 --- lldb/scripts/package-clang-headers.py | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 lldb/scripts/package-clang-headers.py (limited to 'lldb/scripts/package-clang-headers.py') diff --git a/lldb/scripts/package-clang-headers.py b/lldb/scripts/package-clang-headers.py new file mode 100644 index 00000000000..f2b7a2429d2 --- /dev/null +++ b/lldb/scripts/package-clang-headers.py @@ -0,0 +1,71 @@ +#! /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): + 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) -- cgit v1.2.3