aboutsummaryrefslogtreecommitdiff
path: root/lang/clang32
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2013-10-18 22:06:39 +0000
committerBrooks Davis <brooks@FreeBSD.org>2013-10-18 22:06:39 +0000
commit2c6611d8cf774a8ee754852446eae436bb3257d3 (patch)
treea3288d0e5a1c0c79ef902867cd7518f713a9b34c /lang/clang32
parent9c04ae0823606c63b1de206de54468fd8f81459c (diff)
downloadports-2c6611d8cf774a8ee754852446eae436bb3257d3.tar.gz
ports-2c6611d8cf774a8ee754852446eae436bb3257d3.zip
Notes
Diffstat (limited to 'lang/clang32')
-rw-r--r--lang/clang32/Makefile165
-rw-r--r--lang/clang32/distinfo4
-rw-r--r--lang/clang32/files/llvm-wrapper.sh.in10
-rw-r--r--lang/clang32/files/patch-include_llvm_ADT_Triple.h17
-rw-r--r--lang/clang32/files/patch-svn-r172354203
-rw-r--r--lang/clang32/files/patch-svn-r17591966
-rw-r--r--lang/clang32/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h24
-rw-r--r--lang/clang32/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp48
-rw-r--r--lang/clang32/files/patch-tools_clang_lib_Headers_Makefile14
-rw-r--r--lang/clang32/files/patch-tools_clang_lib_Sema_SemaChecking.cpp45
-rw-r--r--lang/clang32/files/patch-tools_clang_tools_scan-build_scan-build23
-rw-r--r--lang/clang32/files/patch-utils_llvm-build_llvmbuild_main.py20
-rw-r--r--lang/clang32/pkg-descr4
-rw-r--r--lang/clang32/pkg-plist485
14 files changed, 1128 insertions, 0 deletions
diff --git a/lang/clang32/Makefile b/lang/clang32/Makefile
new file mode 100644
index 000000000000..490ed7632750
--- /dev/null
+++ b/lang/clang32/Makefile
@@ -0,0 +1,165 @@
+# $FreeBSD$
+
+PORTNAME= clang
+DISTVERSION= 3.2
+CATEGORIES= lang devel
+MASTER_SITES= http://llvm.org/releases/${PORTVERSION}/
+PKGNAMESUFFIX= ${LLVM_PREFIX}
+DISTNAME= ${CLANG_NAME}
+DISTFILES= ${CLANG_SOURCE} \
+ ${LLVM_SOURCE}
+
+MAINTAINER= brooks@FreeBSD.org
+COMMENT= C, Objective-C, and C++ compiler
+
+CLANG_NAME= clang-${PORTVERSION}.src
+CLANG_SOURCE= ${CLANG_NAME}${EXTRACT_SUFX}
+LLVM_NAME= llvm-${PORTVERSION}.src
+LLVM_SOURCE= ${LLVM_NAME}${EXTRACT_SUFX}
+
+WRKSRC= ${WRKDIR}/${LLVM_NAME}
+BUILD_WRKSRC= ${WRKSRC}/tools/clang
+INSTALL_WRKSRC= ${WRKSRC}/tools/clang
+
+BUILD_DEPENDS+= llc${LLVM_SUFFIX}:${PORTSDIR}/devel/llvm${LLVM_SUFFIX}
+RUN_DEPENDS+= llc${LLVM_SUFFIX}:${PORTSDIR}/devel/llvm${LLVM_SUFFIX}
+
+LLVM_SUFFIX= ${PORTVERSION:S/.//g}
+LLVM_PREFIX= ${PREFIX}/llvm${LLVM_SUFFIX}
+DATADIR= ${PREFIX}/share/${PORTNAME}${LLVM_SUFFIX}
+DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${LLVM_SUFFIX}
+
+GNU_CONFIGURE= yes
+GNU_CONFIGURE_PREFIX= ${LLVM_PREFIX}
+USES= gmake perl5
+USE_LDCONFIG= yes
+USE_PYTHON_BUILD= yes
+
+MAKE_ARGS= CLANG_TBLGEN=${WRKSRC}/${RELTYPE}/bin/clang-tblgen \
+ LLVMIncDir=${LLVM_PREFIX}/include \
+ LLVMToolDir=${LLVM_PREFIX}/bin \
+ LLVMLibDir=${LLVM_PREFIX}/lib
+
+SUB_FILES= llvm-wrapper.sh
+SUB_LIST= LLVM_PREFIX="${LLVM_PREFIX}" LLVM_SUFFIX="${LLVM_SUFFIX}"
+
+OPTIONS_DEFINE= ASSERTS DOCS
+
+ASSERTS_DESC= Enable assertions (thread unsafe)
+
+CONFIGURE_ARGS+= --enable-optimized --enable-shared
+# Build some docs manually later
+CONFIGURE_ARGS+= --disable-docs
+
+PLIST_SUB+= PORTVERSION=${PORTVERSION}
+
+COMMANDS= c-index-test \
+ clang \
+ clang++ \
+ clang-check \
+ clang-cpp \
+ clang-tblgen
+FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MASSERTS}
+CONFIGURE_ARGS+= --enable-assertions
+RELTYPE= Release+Asserts
+.else
+CONFIGURE_ARGS+= --disable-assertions
+RELTYPE= Release
+.endif
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "sparc64"
+BROKEN= Does not compile on sparc64
+.endif
+
+post-extract:
+ ${RM} -f ${BUILD_WRKSRC}
+ ${MV} ${WRKDIR}/${CLANG_NAME} ${BUILD_WRKSRC}
+
+post-patch:
+ ${REINPLACE_CMD} -e 's|${PORTVERSION}svn|${PORTVERSION}|g' \
+ ${WRKSRC}/configure
+ ${REINPLACE_CMD} -e 's|\(PROJ_docsdir.*:=\).*$$|\1${DOCSDIR}|g' \
+ ${WRKSRC}/Makefile.config.in
+ ${REINPLACE_CMD} -e 's|\(PROJ_mandir.*:=\).*$$|\1${MANPREFIX}/man|g' \
+ ${WRKSRC}/Makefile.config.in
+ ${REINPLACE_CMD} -e 's|/usr/local/|${LOCALBASE}/|g' \
+ ${WRKSRC}/tools/clang/lib/Frontend/InitHeaderSearch.cpp
+
+pre-build:
+ ${LN} -sf ${LLVM_PREFIX}/include/llvm/Intrinsics.gen \
+ ${WRKSRC}/include/llvm/
+ ${MKDIR} ${WRKSRC}/${RELTYPE}/lib
+ ${LN} -sf ${LLVM_PREFIX}/lib/libLLVM-${PORTVERSION}.so \
+ ${WRKSRC}/${RELTYPE}/lib/
+ ${LN} -sf ${LLVM_PREFIX}/lib/libLLVMTableGen.a ${WRKSRC}/${RELTYPE}/lib/
+ ${LN} -sf ${LLVM_PREFIX}/lib/libLLVMSupport.a ${WRKSRC}/${RELTYPE}/lib/
+ cd ${WRKSRC}/utils/unittest && ${GMAKE}
+
+post-build:
+ @cd ${WRKSRC}/tools/clang/docs/tools && ${GMAKE} man
+.if ${PORT_OPTIONS:MDOCS}
+ @cd ${WRKSRC}/tools/clang/docs/tools && ${GMAKE} html ps
+.endif
+
+post-install:
+ ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/clang ${STAGEDIR}${LLVM_PREFIX}/bin/clang-cpp
+ ${INSTALL_SCRIPT} ${WRKDIR}/llvm-wrapper.sh \
+ ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX}
+.for command in ${COMMANDS:C/^/XXXX/1:NXXXX*}
+ test -e ${STAGEDIR}${LLVM_PREFIX}/bin/${command}
+ ${LN} -f ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX} \
+ ${STAGEDIR}${PREFIX}/bin/${command}${LLVM_SUFFIX}
+.endfor
+.if ${PORT_OPTIONS:MDOCS}
+ cd ${WRKSRC}/tools/clang/docs/tools && ${GMAKE} DESTDIR=${STAGEDIR}/ install-html install-ps
+.endif
+ ${INSTALL_MAN} ${WRKSRC}/tools/clang/docs/tools/clang.1 \
+ ${STAGEDIR}${MANPREFIX}/man/man1/clang${LLVM_SUFFIX}.1
+
+PLIST_FILE_LIST= ${COMMANDS:S|^|bin/|} \
+ lib/libclang*
+PLIST_DIR_LIST= include/clang \
+ include/clang-c \
+ lib/clang
+
+build-plist:
+ ${RM} -f ${PLIST}
+.for command in ${COMMANDS}
+ ${ECHO_CMD} bin/${command}${LLVM_SUFFIX} >> ${PLIST}
+.endfor
+ (ls ${PLIST_FILE_LIST:S|^|${STAGEDIR}${LLVM_PREFIX}/|}; \
+ ${FIND} ${PLIST_DIR_LIST:S|^|${STAGEDIR}${LLVM_PREFIX}/|} -type f) \
+ | ${SED} -e 's|${STAGEDIR}${PREFIX}/||' | ${SORT} >> ${PLIST}
+ echo man/man1/clang${LLVM_SUFFIX}.1.gz >> ${PLIST}
+ ${FIND} ${STAGEDIR}${DOCSDIR} -type f | \
+ ${SED} -e 's|${STAGEDIR}${DOCSDIR}|%%PORTDOCS%%%%DOCSDIR%%|' | \
+ ${SORT} >> ${PLIST}
+ ${FIND} ${PLIST_DIR_LIST:S|^|${STAGEDIR}${LLVM_PREFIX}/|} -type d | \
+ ${SED} -e 's|${STAGEDIR}${PREFIX}/|@dirrm |' | \
+ ${SORT} -r >> ${PLIST}
+ ${FIND} ${STAGEDIR}${DOCSDIR} -type d | ${SORT} -r | \
+ ${SED} -e 's|${STAGEDIR}${DOCSDIR}|%%PORTDOCS%%@dirrm %%DOCSDIR%%|' \
+ >> ${PLIST}
+
+.if make(svn-patch)
+.if !defined(PATCH_REV)
+.error svn-patch requires that PATCH_REV be set
+.endif
+_PATCH_FILE=${FILESDIR}/patch-svn-${PATCH_REV}
+_LLVM_BASE=http://llvm.org/svn/llvm-project/cfe/trunk
+svn-patch:
+ ${PRINTF} "$$%s$$\n" FreeBSD > ${_PATCH_FILE}
+ svn log -c ${PATCH_REV} ${_LLVM_BASE} >> ${_PATCH_FILE}
+ svn diff -c ${PATCH_REV} ${_LLVM_BASE} | \
+ ${SED} -e 's;^--- ;--- tools/clang/;' | \
+ ${SED} -e 's;^+++ ;+++ tools/clang/;' >> \
+ ${_PATCH_FILE}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/lang/clang32/distinfo b/lang/clang32/distinfo
new file mode 100644
index 000000000000..33cfb8d777f2
--- /dev/null
+++ b/lang/clang32/distinfo
@@ -0,0 +1,4 @@
+SHA256 (clang-3.2.src.tar.gz) = 2aaaf03f7c0f6b16fe97ecc81247dc2bf2d4bec7620a77cc74670b7e07ff5658
+SIZE (clang-3.2.src.tar.gz) = 8805311
+SHA256 (llvm-3.2.src.tar.gz) = 125090c4d26740f1d5e9838477c931ed7d9ad70d599ba265f46f3a42cb066343
+SIZE (llvm-3.2.src.tar.gz) = 12275252
diff --git a/lang/clang32/files/llvm-wrapper.sh.in b/lang/clang32/files/llvm-wrapper.sh.in
new file mode 100644
index 000000000000..0a460f3156e5
--- /dev/null
+++ b/lang/clang32/files/llvm-wrapper.sh.in
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+LLVM_PREFIX="%%LLVM_PREFIX%%"
+LLVM_SUFFIX="%%LLVM_SUFFIX%%"
+
+tool=$(basename $0)
+tool="${LLVM_PREFIX}/bin/${tool%${LLVM_SUFFIX}}"
+LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LLVM_PREFIX}/lib" \
+ "${tool}" "${@}"
diff --git a/lang/clang32/files/patch-include_llvm_ADT_Triple.h b/lang/clang32/files/patch-include_llvm_ADT_Triple.h
new file mode 100644
index 000000000000..788c5bbd8909
--- /dev/null
+++ b/lang/clang32/files/patch-include_llvm_ADT_Triple.h
@@ -0,0 +1,17 @@
+
+$FreeBSD$
+
+--- include/llvm/ADT/Triple.h.orig
++++ include/llvm/ADT/Triple.h
+@@ -296,6 +296,11 @@
+ return isMacOSX() || getOS() == Triple::IOS;
+ }
+
++ /// isOSFreeBSD - Is this FreeBSD OS
++ bool isOSFreeBSD() const {
++ return getOS() == Triple::FreeBSD;
++ }
++
+ /// \brief Tests for either Cygwin or MinGW OS
+ bool isOSCygMing() const {
+ return getOS() == Triple::Cygwin || getOS() == Triple::MinGW32;
diff --git a/lang/clang32/files/patch-svn-r172354 b/lang/clang32/files/patch-svn-r172354
new file mode 100644
index 000000000000..68f768a11cb3
--- /dev/null
+++ b/lang/clang32/files/patch-svn-r172354
@@ -0,0 +1,203 @@
+$FreeBSD$
+------------------------------------------------------------------------
+r172354 | chandlerc | 2013-01-13 11:46:33 +0000 (Sun, 13 Jan 2013) | 6 lines
+
+Refactor the x86 CPU name logic in the driver and pass -march and -mcpu
+flag information down from the Clang driver into the Gold linker plugin
+for LTO. This allows specifying -march on the linker commandline and
+should hopefully have it pass all the way through to the LTO optimizer.
+
+Fixes PR14697.
+------------------------------------------------------------------------
+Index: test/Driver/gold-lto.c
+===================================================================
+--- tools/clang/test/Driver/gold-lto.c (revision 172353)
++++ tools/clang/test/Driver/gold-lto.c (revision 172354)
+@@ -1,6 +1,21 @@
+ // RUN: touch %t.o
+-// RUN: %clang -target x86_64-pc-linux-gnu -### %t.o -O4 -Wl,-plugin-opt=foo 2> %t.log
+-// RUN: FileCheck %s < %t.log
+-
+-// CHECK: "-plugin" "{{.*}}/LLVMgold.so"
+-// CHECK: "-plugin-opt=foo"
++//
++// RUN: %clang -target x86_64-unknown-linux -### %t.o -flto 2>&1 \
++// RUN: -Wl,-plugin-opt=foo \
++// RUN: | FileCheck %s --check-prefix=CHECK-X86-64-BASIC
++// CHECK-X86-64-BASIC: "-plugin" "{{.*}}/LLVMgold.so"
++// CHECK-X86-64-BASIC: "-plugin-opt=foo"
++//
++// RUN: %clang -target x86_64-unknown-linux -### %t.o -flto 2>&1 \
++// RUN: -march=corei7 -Wl,-plugin-opt=foo \
++// RUN: | FileCheck %s --check-prefix=CHECK-X86-64-COREI7
++// CHECK-X86-64-COREI7: "-plugin" "{{.*}}/LLVMgold.so"
++// CHECK-X86-64-COREI7: "-plugin-opt=mcpu=corei7"
++// CHECK-X86-64-COREI7: "-plugin-opt=foo"
++//
++// RUN: %clang -target arm-unknown-linux -### %t.o -flto 2>&1 \
++// RUN: -march=armv7a -Wl,-plugin-opt=foo \
++// RUN: | FileCheck %s --check-prefix=CHECK-ARM-V7A
++// CHECK-ARM-V7A: "-plugin" "{{.*}}/LLVMgold.so"
++// CHECK-ARM-V7A: "-plugin-opt=mcpu=cortex-a8"
++// CHECK-ARM-V7A: "-plugin-opt=foo"
+Index: lib/Driver/Tools.cpp
+===================================================================
+--- tools/clang/lib/Driver/Tools.cpp (revision 172353)
++++ tools/clang/lib/Driver/Tools.cpp (revision 172354)
+@@ -1126,10 +1126,59 @@
+ }
+ }
+
++static const char *getX86TargetCPU(const ArgList &Args,
++ const llvm::Triple &Triple) {
++ if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
++ if (StringRef(A->getValue()) != "native")
++ return A->getValue();
++
++ // FIXME: Reject attempts to use -march=native unless the target matches
++ // the host.
++ //
++ // FIXME: We should also incorporate the detected target features for use
++ // with -native.
++ std::string CPU = llvm::sys::getHostCPUName();
++ if (!CPU.empty() && CPU != "generic")
++ return Args.MakeArgString(CPU);
++ }
++
++ // Select the default CPU if none was given (or detection failed).
++
++ if (Triple.getArch() != llvm::Triple::x86_64 &&
++ Triple.getArch() != llvm::Triple::x86)
++ return 0; // This routine is only handling x86 targets.
++
++ bool Is64Bit = Triple.getArch() == llvm::Triple::x86_64;
++
++ // FIXME: Need target hooks.
++ if (Triple.isOSDarwin())
++ return Is64Bit ? "core2" : "yonah";
++
++ // Everything else goes to x86-64 in 64-bit mode.
++ if (Is64Bit)
++ return "x86-64";
++
++ if (Triple.getOSName().startswith("haiku"))
++ return "i586";
++ if (Triple.getOSName().startswith("openbsd"))
++ return "i486";
++ if (Triple.getOSName().startswith("bitrig"))
++ return "i686";
++ if (Triple.getOSName().startswith("freebsd"))
++ return "i486";
++ if (Triple.getOSName().startswith("netbsd"))
++ return "i486";
++ // All x86 devices running Android have core2 as their common
++ // denominator. This makes a better choice than pentium4.
++ if (Triple.getEnvironment() == llvm::Triple::Android)
++ return "core2";
++
++ // Fallback to p4.
++ return "pentium4";
++}
++
+ void Clang::AddX86TargetArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+- const bool isAndroid =
+- getToolChain().getTriple().getEnvironment() == llvm::Triple::Android;
+ if (!Args.hasFlag(options::OPT_mred_zone,
+ options::OPT_mno_red_zone,
+ true) ||
+@@ -1142,65 +1191,7 @@
+ false))
+ CmdArgs.push_back("-no-implicit-float");
+
+- const char *CPUName = 0;
+- if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
+- if (StringRef(A->getValue()) == "native") {
+- // FIXME: Reject attempts to use -march=native unless the target matches
+- // the host.
+- //
+- // FIXME: We should also incorporate the detected target features for use
+- // with -native.
+- std::string CPU = llvm::sys::getHostCPUName();
+- if (!CPU.empty() && CPU != "generic")
+- CPUName = Args.MakeArgString(CPU);
+- } else
+- CPUName = A->getValue();
+- }
+-
+- // Select the default CPU if none was given (or detection failed).
+- if (!CPUName) {
+- // FIXME: Need target hooks.
+- if (getToolChain().getTriple().isOSDarwin()) {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "core2";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- CPUName = "yonah";
+- } else if (getToolChain().getOS().startswith("haiku")) {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "x86-64";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- CPUName = "i586";
+- } else if (getToolChain().getOS().startswith("openbsd")) {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "x86-64";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- CPUName = "i486";
+- } else if (getToolChain().getOS().startswith("bitrig")) {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "x86-64";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- CPUName = "i686";
+- } else if (getToolChain().getOS().startswith("freebsd")) {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "x86-64";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- CPUName = "i486";
+- } else if (getToolChain().getOS().startswith("netbsd")) {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "x86-64";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- CPUName = "i486";
+- } else {
+- if (getToolChain().getArch() == llvm::Triple::x86_64)
+- CPUName = "x86-64";
+- else if (getToolChain().getArch() == llvm::Triple::x86)
+- // All x86 devices running Android have core2 as their common
+- // denominator. This makes a better choice than pentium4.
+- CPUName = isAndroid ? "core2" : "pentium4";
+- }
+- }
+-
+- if (CPUName) {
++ if (const char *CPUName = getX86TargetCPU(Args, getToolChain().getTriple())) {
+ CmdArgs.push_back("-target-cpu");
+ CmdArgs.push_back(CPUName);
+ }
+@@ -5646,8 +5637,27 @@
+ CmdArgs.push_back("-plugin");
+ std::string Plugin = ToolChain.getDriver().Dir + "/../lib/LLVMgold.so";
+ CmdArgs.push_back(Args.MakeArgString(Plugin));
++
++ // Try to pass driver level flags relevant to LTO code generation down to
++ // the plugin.
++
++ // Handle architecture-specific flags for selecting CPU variants.
++ if (ToolChain.getArch() == llvm::Triple::x86 ||
++ ToolChain.getArch() == llvm::Triple::x86_64)
++ CmdArgs.push_back(
++ Args.MakeArgString(Twine("-plugin-opt=mcpu=") +
++ getX86TargetCPU(Args, ToolChain.getTriple())));
++ else if (ToolChain.getArch() == llvm::Triple::arm ||
++ ToolChain.getArch() == llvm::Triple::thumb)
++ CmdArgs.push_back(
++ Args.MakeArgString(Twine("-plugin-opt=mcpu=") +
++ getARMTargetCPU(Args, ToolChain.getTriple())));
++
++ // FIXME: Factor out logic for MIPS, PPC, and other targets to support this
++ // as well.
+ }
+
++
+ if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
+ CmdArgs.push_back("--no-demangle");
+
diff --git a/lang/clang32/files/patch-svn-r175919 b/lang/clang32/files/patch-svn-r175919
new file mode 100644
index 000000000000..5ad39532a999
--- /dev/null
+++ b/lang/clang32/files/patch-svn-r175919
@@ -0,0 +1,66 @@
+$FreeBSD$
+------------------------------------------------------------------------
+r175919 | d0k | 2013-02-22 20:55:17 +0000 (Fri, 22 Feb 2013) | 4 lines
+
+Driver: Pass down the -march setting down to -cc1as on x86 too.
+
+The assembler historically didn't make use of any target features, but this has
+changed when support for old CPUs that don't support long nops was added.
+------------------------------------------------------------------------
+Index: test/Driver/target-as.s
+===================================================================
+--- tools/clang/test/Driver/target-as.s (revision 0)
++++ tools/clang/test/Driver/target-as.s (revision 175919)
+@@ -0,0 +1,8 @@
++// REQUIRES: clang-driver
++
++// Make sure the -march is passed down to cc1as.
++// RUN: %clang -target i386-unknown-freebsd -### -c -integrated-as %s \
++// RUN: -march=geode 2>&1 | FileCheck -check-prefix=TARGET %s
++//
++// TARGET: "-cc1as"
++// TARGET: "-target-cpu" "geode"
+Index: lib/Driver/Tools.cpp
+===================================================================
+--- tools/clang/lib/Driver/Tools.cpp (revision 175918)
++++ tools/clang/lib/Driver/Tools.cpp (revision 175919)
+@@ -3325,6 +3325,15 @@
+ addFPMathArgs(D, A, Args, CmdArgs, getARMTargetCPU(Args, Triple));
+ }
+
++void ClangAs::AddX86TargetArgs(const ArgList &Args,
++ ArgStringList &CmdArgs) const {
++ // Set the CPU based on -march=.
++ if (const char *CPUName = getX86TargetCPU(Args, getToolChain().getTriple())) {
++ CmdArgs.push_back("-target-cpu");
++ CmdArgs.push_back(CPUName);
++ }
++}
++
+ /// Add options related to the Objective-C runtime/ABI.
+ ///
+ /// Returns true if the runtime is non-fragile.
+@@ -3500,6 +3509,11 @@
+ case llvm::Triple::thumb:
+ AddARMTargetArgs(Args, CmdArgs);
+ break;
++
++ case llvm::Triple::x86:
++ case llvm::Triple::x86_64:
++ AddX86TargetArgs(Args, CmdArgs);
++ break;
+ }
+
+ // Ignore explicit -force_cpusubtype_ALL option.
+Index: lib/Driver/Tools.h
+===================================================================
+--- tools/clang/lib/Driver/Tools.h (revision 175918)
++++ tools/clang/lib/Driver/Tools.h (revision 175919)
+@@ -77,6 +77,7 @@
+ /// \brief Clang integrated assembler tool.
+ class LLVM_LIBRARY_VISIBILITY ClangAs : public Tool {
+ void AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
++ void AddX86TargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
+ public:
+ ClangAs(const ToolChain &TC) : Tool("clang::as",
+ "clang integrated assembler", TC) {}
diff --git a/lang/clang32/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h b/lang/clang32/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h
new file mode 100644
index 000000000000..3c4b574d3057
--- /dev/null
+++ b/lang/clang32/files/patch-tools_clang_include_clang_Analysis_Analyses_FormatString.h
@@ -0,0 +1,24 @@
+
+$FreeBSD$
+
+--- tools/clang/include/clang/Analysis/Analyses/FormatString.h.orig
++++ tools/clang/include/clang/Analysis/Analyses/FormatString.h
+@@ -117,7 +117,7 @@
+ // C99 conversion specifiers.
+ cArg,
+ dArg,
+- DArg, // Apple extension
++ DArg, // Apple and FreeBSD extension
+ iArg,
+ IntArgBeg = dArg, IntArgEnd = iArg,
+
+@@ -148,6 +148,9 @@
+
+ // ** Printf-specific **
+
++ // FreeBSD specific specifiers
++ bArg,
++
+ // Objective-C specific specifiers.
+ ObjCObjArg, // '@'
+ ObjCBeg = ObjCObjArg, ObjCEnd = ObjCObjArg,
diff --git a/lang/clang32/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp b/lang/clang32/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp
new file mode 100644
index 000000000000..d4cfefbd9b59
--- /dev/null
+++ b/lang/clang32/files/patch-tools_clang_lib_Analysis_PrintfFormatString.cpp
@@ -0,0 +1,48 @@
+
+$FreeBSD$
+
+--- tools/clang/lib/Analysis/PrintfFormatString.cpp.orig
++++ tools/clang/lib/Analysis/PrintfFormatString.cpp
+@@ -198,9 +198,10 @@
+ case '@': k = ConversionSpecifier::ObjCObjArg; break;
+ // Glibc specific.
+ case 'm': k = ConversionSpecifier::PrintErrno; break;
+- // Apple-specific
++
++ // Apple-specific (and one FreeBSD)
+ case 'D':
+- if (Target.getTriple().isOSDarwin())
++ if (Target.getTriple().isOSDarwin() || Target.getTriple().isOSFreeBSD())
+ k = ConversionSpecifier::DArg;
+ break;
+ case 'O':
+@@ -211,11 +212,29 @@
+ if (Target.getTriple().isOSDarwin())
+ k = ConversionSpecifier::UArg;
+ break;
++
++ // FreeBSD-specific
++ case 'b':
++ if (Target.getTriple().isOSFreeBSD())
++ k = ConversionSpecifier::bArg;
++ break;
++ case 'r':
++ if (Target.getTriple().isOSFreeBSD())
++ k = ConversionSpecifier::xArg;
++ break;
++ case 'y':
++ if (Target.getTriple().isOSFreeBSD())
++ k = ConversionSpecifier::iArg;
++ break;
+ }
+ PrintfConversionSpecifier CS(conversionPosition, k);
+ FS.setConversionSpecifier(CS);
+ if (CS.consumesDataArgument() && !FS.usesPositionalArg())
+ FS.setArgIndex(argIndex++);
++ // FreeBSD extension
++ if (Target.getTriple().isOSFreeBSD() && (k == ConversionSpecifier::bArg ||
++ k == ConversionSpecifier::DArg))
++ argIndex++;
+
+ if (k == ConversionSpecifier::InvalidSpecifier) {
+ // Assume the conversion takes one argument.
diff --git a/lang/clang32/files/patch-tools_clang_lib_Headers_Makefile b/lang/clang32/files/patch-tools_clang_lib_Headers_Makefile
new file mode 100644
index 000000000000..41f497b100cc
--- /dev/null
+++ b/lang/clang32/files/patch-tools_clang_lib_Headers_Makefile
@@ -0,0 +1,14 @@
+
+$FreeBSD$
+
+--- tools/clang/lib/Headers/Makefile.orig
++++ tools/clang/lib/Headers/Makefile
+@@ -19,7 +19,7 @@
+
+ HeaderDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/lib/clang/$(CLANG_VERSION)/include
+
+-HEADERS := $(notdir $(wildcard $(PROJ_SRC_DIR)/*.h))
++HEADERS := $(notdir $(wildcard $(PROJ_SRC_DIR)/*intrin*.h) mm3dnow.h mm_malloc.h)
+
+ OBJHEADERS := $(addprefix $(HeaderDir)/, $(HEADERS))
+
diff --git a/lang/clang32/files/patch-tools_clang_lib_Sema_SemaChecking.cpp b/lang/clang32/files/patch-tools_clang_lib_Sema_SemaChecking.cpp
new file mode 100644
index 000000000000..215210bed343
--- /dev/null
+++ b/lang/clang32/files/patch-tools_clang_lib_Sema_SemaChecking.cpp
@@ -0,0 +1,45 @@
+
+$FreeBSD$
+
+--- tools/clang/lib/Sema/SemaChecking.cpp.orig
++++ tools/clang/lib/Sema/SemaChecking.cpp
+@@ -1511,6 +1511,39 @@
+ CoveredArgs.set(argIndex);
+ }
+
++ // FreeBSD extensions
++ if (CS.getKind() == ConversionSpecifier::bArg || CS.getKind() == ConversionSpecifier::DArg) {
++ // claim the second argument
++ CoveredArgs.set(argIndex + 1);
++
++ // Now type check the data expression that matches the
++ // format specifier.
++ const Expr *Ex = getDataArg(argIndex);
++ QualType type = (CS.getKind() == ConversionSpecifier::bArg) ? S.Context.IntTy : S.Context.getPointerType(S.Context.UnsignedCharTy);
++ //const analyze_printf::ArgType &ATR = S.Context.IntTy;
++ const analyze_printf::ArgType &ATR = type;
++ if (ATR.isValid() && !ATR.matchesType(S.Context, Ex->getType()))
++ S.Diag(getLocationOfByte(CS.getStart()),
++ diag::warn_printf_conversion_argument_type_mismatch)
++ << ATR.getRepresentativeType(S.Context) << Ex->getType()
++ << getSpecifierRange(startSpecifier, specifierLen)
++ << Ex->getSourceRange();
++
++ // Now type check the data expression that matches the
++ // format specifier.
++ Ex = getDataArg(argIndex + 1);
++ const analyze_printf::ArgType &ATR2 = ArgType::CStrTy;
++ if (ATR2.isValid() && !ATR2.matchesType(S.Context, Ex->getType()))
++ S.Diag(getLocationOfByte(CS.getStart()),
++ diag::warn_printf_conversion_argument_type_mismatch)
++ << ATR2.getRepresentativeType(S.Context) << Ex->getType()
++ << getSpecifierRange(startSpecifier, specifierLen)
++ << Ex->getSourceRange();
++
++ return true;
++ }
++ // END OF FREEBSD EXTENSIONS
++
+ // Check for using an Objective-C specific conversion specifier
+ // in a non-ObjC literal.
+ if (!IsObjCLiteral && CS.isObjCArg()) {
diff --git a/lang/clang32/files/patch-tools_clang_tools_scan-build_scan-build b/lang/clang32/files/patch-tools_clang_tools_scan-build_scan-build
new file mode 100644
index 000000000000..291eafdeb2fc
--- /dev/null
+++ b/lang/clang32/files/patch-tools_clang_tools_scan-build_scan-build
@@ -0,0 +1,23 @@
+
+$FreeBSD$
+
+--- tools/clang/tools/scan-build/scan-build.orig
++++ tools/clang/tools/scan-build/scan-build
+@@ -423,7 +423,7 @@
+
+ my $Dir = shift;
+
+- my $JS = Cwd::realpath("$RealBin/sorttable.js");
++ my $JS = Cwd::realpath("%%DATADIR%%/sorttable.js");
+
+ DieDiag("Cannot find 'sorttable.js'.\n")
+ if (! -r $JS);
+@@ -433,7 +433,7 @@
+ DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n")
+ if (! -r "$Dir/sorttable.js");
+
+- my $CSS = Cwd::realpath("$RealBin/scanview.css");
++ my $CSS = Cwd::realpath("%%DATADIR%%/scanview.css");
+
+ DieDiag("Cannot find 'scanview.css'.\n")
+ if (! -r $CSS);
diff --git a/lang/clang32/files/patch-utils_llvm-build_llvmbuild_main.py b/lang/clang32/files/patch-utils_llvm-build_llvmbuild_main.py
new file mode 100644
index 000000000000..1e2de0273d55
--- /dev/null
+++ b/lang/clang32/files/patch-utils_llvm-build_llvmbuild_main.py
@@ -0,0 +1,20 @@
+
+$FreeBSD$
+
+--- utils/llvm-build/llvmbuild/main.py.orig
++++ utils/llvm-build/llvmbuild/main.py
+@@ -633,7 +633,13 @@
+
+ # We handle a few special cases of target names here for historical
+ # reasons, as these are the names configure currently comes up with.
+- native_target_name = { 'x86' : 'X86',
++ native_target_name = { 'amd64' : 'X86',
++ 'arm' : 'ARM',
++ 'i386' : 'X86',
++ 'mips' : 'Mips',
++ 'powerpc' : 'PowerPC',
++ 'sparc64' : 'Sparc',
++ 'x86' : 'X86',
+ 'x86_64' : 'X86',
+ 'Unknown' : None }.get(opts.native_target,
+ opts.native_target)
diff --git a/lang/clang32/pkg-descr b/lang/clang32/pkg-descr
new file mode 100644
index 000000000000..37b1d8e486d6
--- /dev/null
+++ b/lang/clang32/pkg-descr
@@ -0,0 +1,4 @@
+The goal of the Clang project is to create a new C, C++, Objective C and
+Objective C++ front-end for the LLVM compiler.
+
+WWW: http://clang.llvm.org/
diff --git a/lang/clang32/pkg-plist b/lang/clang32/pkg-plist
new file mode 100644
index 000000000000..defa0ceaf828
--- /dev/null
+++ b/lang/clang32/pkg-plist
@@ -0,0 +1,485 @@
+bin/c-index-test32
+bin/clang32
+bin/clang++32
+bin/clang-check32
+bin/clang-cpp32
+bin/clang-tblgen32
+llvm32/bin/c-index-test
+llvm32/bin/clang
+llvm32/bin/clang++
+llvm32/bin/clang-check
+llvm32/bin/clang-cpp
+llvm32/bin/clang-tblgen
+llvm32/include/clang-c/CXCompilationDatabase.h
+llvm32/include/clang-c/CXString.h
+llvm32/include/clang-c/Index.h
+llvm32/include/clang-c/Platform.h
+llvm32/include/clang/ARCMigrate/ARCMT.h
+llvm32/include/clang/ARCMigrate/ARCMTActions.h
+llvm32/include/clang/ARCMigrate/FileRemapper.h
+llvm32/include/clang/AST/APValue.h
+llvm32/include/clang/AST/AST.h
+llvm32/include/clang/AST/ASTConsumer.h
+llvm32/include/clang/AST/ASTContext.h
+llvm32/include/clang/AST/ASTDiagnostic.h
+llvm32/include/clang/AST/ASTImporter.h
+llvm32/include/clang/AST/ASTMutationListener.h
+llvm32/include/clang/AST/ASTVector.h
+llvm32/include/clang/AST/Attr.h
+llvm32/include/clang/AST/AttrImpl.inc
+llvm32/include/clang/AST/Attrs.inc
+llvm32/include/clang/AST/BaseSubobject.h
+llvm32/include/clang/AST/BuiltinTypes.def
+llvm32/include/clang/AST/CXXInheritance.h
+llvm32/include/clang/AST/CanonicalType.h
+llvm32/include/clang/AST/CharUnits.h
+llvm32/include/clang/AST/Comment.h
+llvm32/include/clang/AST/CommentBriefParser.h
+llvm32/include/clang/AST/CommentCommandInfo.inc
+llvm32/include/clang/AST/CommentCommandTraits.h
+llvm32/include/clang/AST/CommentDiagnostic.h
+llvm32/include/clang/AST/CommentHTMLTags.inc
+llvm32/include/clang/AST/CommentHTMLTagsProperties.inc
+llvm32/include/clang/AST/CommentLexer.h
+llvm32/include/clang/AST/CommentNodes.inc
+llvm32/include/clang/AST/CommentParser.h
+llvm32/include/clang/AST/CommentSema.h
+llvm32/include/clang/AST/CommentVisitor.h
+llvm32/include/clang/AST/Decl.h
+llvm32/include/clang/AST/DeclAccessPair.h
+llvm32/include/clang/AST/DeclBase.h
+llvm32/include/clang/AST/DeclCXX.h
+llvm32/include/clang/AST/DeclContextInternals.h
+llvm32/include/clang/AST/DeclFriend.h
+llvm32/include/clang/AST/DeclGroup.h
+llvm32/include/clang/AST/DeclLookups.h
+llvm32/include/clang/AST/DeclNodes.inc
+llvm32/include/clang/AST/DeclObjC.h
+llvm32/include/clang/AST/DeclTemplate.h
+llvm32/include/clang/AST/DeclVisitor.h
+llvm32/include/clang/AST/DeclarationName.h
+llvm32/include/clang/AST/DependentDiagnostic.h
+llvm32/include/clang/AST/EvaluatedExprVisitor.h
+llvm32/include/clang/AST/Expr.h
+llvm32/include/clang/AST/ExprCXX.h
+llvm32/include/clang/AST/ExprObjC.h
+llvm32/include/clang/AST/ExternalASTSource.h
+llvm32/include/clang/AST/GlobalDecl.h
+llvm32/include/clang/AST/LambdaMangleContext.h
+llvm32/include/clang/AST/Mangle.h
+llvm32/include/clang/AST/NSAPI.h
+llvm32/include/clang/AST/NestedNameSpecifier.h
+llvm32/include/clang/AST/OperationKinds.h
+llvm32/include/clang/AST/ParentMap.h
+llvm32/include/clang/AST/PrettyPrinter.h
+llvm32/include/clang/AST/RawCommentList.h
+llvm32/include/clang/AST/RecordLayout.h
+llvm32/include/clang/AST/RecursiveASTVisitor.h
+llvm32/include/clang/AST/Redeclarable.h
+llvm32/include/clang/AST/SelectorLocationsKind.h
+llvm32/include/clang/AST/Stmt.h
+llvm32/include/clang/AST/StmtCXX.h
+llvm32/include/clang/AST/StmtGraphTraits.h
+llvm32/include/clang/AST/StmtIterator.h
+llvm32/include/clang/AST/StmtNodes.inc
+llvm32/include/clang/AST/StmtObjC.h
+llvm32/include/clang/AST/StmtVisitor.h
+llvm32/include/clang/AST/TemplateBase.h
+llvm32/include/clang/AST/TemplateName.h
+llvm32/include/clang/AST/Type.h
+llvm32/include/clang/AST/TypeLoc.h
+llvm32/include/clang/AST/TypeLocNodes.def
+llvm32/include/clang/AST/TypeLocVisitor.h
+llvm32/include/clang/AST/TypeNodes.def
+llvm32/include/clang/AST/TypeOrdering.h
+llvm32/include/clang/AST/TypeVisitor.h
+llvm32/include/clang/AST/UnresolvedSet.h
+llvm32/include/clang/AST/VTTBuilder.h
+llvm32/include/clang/AST/VTableBuilder.h
+llvm32/include/clang/ASTMatchers/ASTMatchFinder.h
+llvm32/include/clang/ASTMatchers/ASTMatchers.h
+llvm32/include/clang/ASTMatchers/ASTMatchersInternal.h
+llvm32/include/clang/ASTMatchers/ASTMatchersMacros.h
+llvm32/include/clang/ASTMatchers/ASTTypeTraits.h
+llvm32/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
+llvm32/include/clang/Analysis/Analyses/Dominators.h
+llvm32/include/clang/Analysis/Analyses/FormatString.h
+llvm32/include/clang/Analysis/Analyses/LiveVariables.h
+llvm32/include/clang/Analysis/Analyses/PostOrderCFGView.h
+llvm32/include/clang/Analysis/Analyses/PseudoConstantAnalysis.h
+llvm32/include/clang/Analysis/Analyses/ReachableCode.h
+llvm32/include/clang/Analysis/Analyses/ThreadSafety.h
+llvm32/include/clang/Analysis/Analyses/UninitializedValues.h
+llvm32/include/clang/Analysis/AnalysisContext.h
+llvm32/include/clang/Analysis/AnalysisDiagnostic.h
+llvm32/include/clang/Analysis/CFG.h
+llvm32/include/clang/Analysis/CFGStmtMap.h
+llvm32/include/clang/Analysis/CallGraph.h
+llvm32/include/clang/Analysis/DomainSpecific/CocoaConventions.h
+llvm32/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
+llvm32/include/clang/Analysis/FlowSensitive/DataflowSolver.h
+llvm32/include/clang/Analysis/FlowSensitive/DataflowValues.h
+llvm32/include/clang/Analysis/ProgramPoint.h
+llvm32/include/clang/Analysis/Support/BlkExprDeclBitVector.h
+llvm32/include/clang/Analysis/Support/BumpVector.h
+llvm32/include/clang/Analysis/Visitors/CFGRecStmtDeclVisitor.h
+llvm32/include/clang/Analysis/Visitors/CFGRecStmtVisitor.h
+llvm32/include/clang/Analysis/Visitors/CFGStmtVisitor.h
+llvm32/include/clang/Basic/ABI.h
+llvm32/include/clang/Basic/AddressSpaces.h
+llvm32/include/clang/Basic/AllDiagnostics.h
+llvm32/include/clang/Basic/AttrKinds.h
+llvm32/include/clang/Basic/AttrList.inc
+llvm32/include/clang/Basic/Builtins.def
+llvm32/include/clang/Basic/Builtins.h
+llvm32/include/clang/Basic/BuiltinsARM.def
+llvm32/include/clang/Basic/BuiltinsHexagon.def
+llvm32/include/clang/Basic/BuiltinsMips.def
+llvm32/include/clang/Basic/BuiltinsNVPTX.def
+llvm32/include/clang/Basic/BuiltinsPPC.def
+llvm32/include/clang/Basic/BuiltinsX86.def
+llvm32/include/clang/Basic/ConvertUTF.h
+llvm32/include/clang/Basic/Diagnostic.h
+llvm32/include/clang/Basic/DiagnosticASTKinds.inc
+llvm32/include/clang/Basic/DiagnosticAnalysisKinds.inc
+llvm32/include/clang/Basic/DiagnosticCategories.h
+llvm32/include/clang/Basic/DiagnosticCommentKinds.inc
+llvm32/include/clang/Basic/DiagnosticCommonKinds.inc
+llvm32/include/clang/Basic/DiagnosticDriverKinds.inc
+llvm32/include/clang/Basic/DiagnosticFrontendKinds.inc
+llvm32/include/clang/Basic/DiagnosticGroups.inc
+llvm32/include/clang/Basic/DiagnosticIDs.h
+llvm32/include/clang/Basic/DiagnosticIndexName.inc
+llvm32/include/clang/Basic/DiagnosticLexKinds.inc
+llvm32/include/clang/Basic/DiagnosticOptions.def
+llvm32/include/clang/Basic/DiagnosticOptions.h
+llvm32/include/clang/Basic/DiagnosticParseKinds.inc
+llvm32/include/clang/Basic/DiagnosticSemaKinds.inc
+llvm32/include/clang/Basic/DiagnosticSerializationKinds.inc
+llvm32/include/clang/Basic/ExceptionSpecificationType.h
+llvm32/include/clang/Basic/ExpressionTraits.h
+llvm32/include/clang/Basic/FileManager.h
+llvm32/include/clang/Basic/FileSystemOptions.h
+llvm32/include/clang/Basic/FileSystemStatCache.h
+llvm32/include/clang/Basic/IdentifierTable.h
+llvm32/include/clang/Basic/LLVM.h
+llvm32/include/clang/Basic/Lambda.h
+llvm32/include/clang/Basic/LangOptions.def
+llvm32/include/clang/Basic/LangOptions.h
+llvm32/include/clang/Basic/Linkage.h
+llvm32/include/clang/Basic/MacroBuilder.h
+llvm32/include/clang/Basic/Module.h
+llvm32/include/clang/Basic/ObjCRuntime.h
+llvm32/include/clang/Basic/OnDiskHashTable.h
+llvm32/include/clang/Basic/OpenCL.h
+llvm32/include/clang/Basic/OpenCLExtensions.def
+llvm32/include/clang/Basic/OperatorKinds.def
+llvm32/include/clang/Basic/OperatorKinds.h
+llvm32/include/clang/Basic/PartialDiagnostic.h
+llvm32/include/clang/Basic/PrettyStackTrace.h
+llvm32/include/clang/Basic/Sanitizers.def
+llvm32/include/clang/Basic/SourceLocation.h
+llvm32/include/clang/Basic/SourceManager.h
+llvm32/include/clang/Basic/SourceManagerInternals.h
+llvm32/include/clang/Basic/Specifiers.h
+llvm32/include/clang/Basic/TargetBuiltins.h
+llvm32/include/clang/Basic/TargetInfo.h
+llvm32/include/clang/Basic/TargetOptions.h
+llvm32/include/clang/Basic/TemplateKinds.h
+llvm32/include/clang/Basic/TokenKinds.def
+llvm32/include/clang/Basic/TokenKinds.h
+llvm32/include/clang/Basic/TypeTraits.h
+llvm32/include/clang/Basic/Version.h
+llvm32/include/clang/Basic/Version.inc
+llvm32/include/clang/Basic/VersionTuple.h
+llvm32/include/clang/Basic/Visibility.h
+llvm32/include/clang/Basic/arm_neon.inc
+llvm32/include/clang/CodeGen/BackendUtil.h
+llvm32/include/clang/CodeGen/CodeGenAction.h
+llvm32/include/clang/CodeGen/ModuleBuilder.h
+llvm32/include/clang/Config/config.h
+llvm32/include/clang/Driver/Action.h
+llvm32/include/clang/Driver/Arg.h
+llvm32/include/clang/Driver/ArgList.h
+llvm32/include/clang/Driver/CC1AsOptions.h
+llvm32/include/clang/Driver/CC1AsOptions.inc
+llvm32/include/clang/Driver/CC1Options.h
+llvm32/include/clang/Driver/Compilation.h
+llvm32/include/clang/Driver/Driver.h
+llvm32/include/clang/Driver/DriverDiagnostic.h
+llvm32/include/clang/Driver/Job.h
+llvm32/include/clang/Driver/OptSpecifier.h
+llvm32/include/clang/Driver/OptTable.h
+llvm32/include/clang/Driver/Option.h
+llvm32/include/clang/Driver/Options.h
+llvm32/include/clang/Driver/Options.inc
+llvm32/include/clang/Driver/Phases.h
+llvm32/include/clang/Driver/Tool.h
+llvm32/include/clang/Driver/ToolChain.h
+llvm32/include/clang/Driver/Types.def
+llvm32/include/clang/Driver/Types.h
+llvm32/include/clang/Driver/Util.h
+llvm32/include/clang/Edit/Commit.h
+llvm32/include/clang/Edit/EditedSource.h
+llvm32/include/clang/Edit/EditsReceiver.h
+llvm32/include/clang/Edit/FileOffset.h
+llvm32/include/clang/Edit/Rewriters.h
+llvm32/include/clang/Frontend/ASTConsumers.h
+llvm32/include/clang/Frontend/ASTUnit.h
+llvm32/include/clang/Frontend/ChainedDiagnosticConsumer.h
+llvm32/include/clang/Frontend/ChainedIncludesSource.h
+llvm32/include/clang/Frontend/CodeGenOptions.def
+llvm32/include/clang/Frontend/CodeGenOptions.h
+llvm32/include/clang/Frontend/CommandLineSourceLoc.h
+llvm32/include/clang/Frontend/CompilerInstance.h
+llvm32/include/clang/Frontend/CompilerInvocation.h
+llvm32/include/clang/Frontend/DependencyOutputOptions.h
+llvm32/include/clang/Frontend/DiagnosticRenderer.h
+llvm32/include/clang/Frontend/FrontendAction.h
+llvm32/include/clang/Frontend/FrontendActions.h
+llvm32/include/clang/Frontend/FrontendDiagnostic.h
+llvm32/include/clang/Frontend/FrontendOptions.h
+llvm32/include/clang/Frontend/FrontendPluginRegistry.h
+llvm32/include/clang/Frontend/LangStandard.h
+llvm32/include/clang/Frontend/LangStandards.def
+llvm32/include/clang/Frontend/LayoutOverrideSource.h
+llvm32/include/clang/Frontend/LogDiagnosticPrinter.h
+llvm32/include/clang/Frontend/MigratorOptions.h
+llvm32/include/clang/Frontend/MultiplexConsumer.h
+llvm32/include/clang/Frontend/PreprocessorOutputOptions.h
+llvm32/include/clang/Frontend/SerializedDiagnosticPrinter.h
+llvm32/include/clang/Frontend/TextDiagnostic.h
+llvm32/include/clang/Frontend/TextDiagnosticBuffer.h
+llvm32/include/clang/Frontend/TextDiagnosticPrinter.h
+llvm32/include/clang/Frontend/Utils.h
+llvm32/include/clang/Frontend/VerifyDiagnosticConsumer.h
+llvm32/include/clang/FrontendTool/Utils.h
+llvm32/include/clang/Lex/AttrSpellings.inc
+llvm32/include/clang/Lex/CodeCompletionHandler.h
+llvm32/include/clang/Lex/DirectoryLookup.h
+llvm32/include/clang/Lex/ExternalPreprocessorSource.h
+llvm32/include/clang/Lex/HeaderMap.h
+llvm32/include/clang/Lex/HeaderSearch.h
+llvm32/include/clang/Lex/HeaderSearchOptions.h
+llvm32/include/clang/Lex/LexDiagnostic.h
+llvm32/include/clang/Lex/Lexer.h
+llvm32/include/clang/Lex/LiteralSupport.h
+llvm32/include/clang/Lex/MacroInfo.h
+llvm32/include/clang/Lex/ModuleLoader.h
+llvm32/include/clang/Lex/ModuleMap.h
+llvm32/include/clang/Lex/MultipleIncludeOpt.h
+llvm32/include/clang/Lex/PPCallbacks.h
+llvm32/include/clang/Lex/PPMutationListener.h
+llvm32/include/clang/Lex/PTHLexer.h
+llvm32/include/clang/Lex/PTHManager.h
+llvm32/include/clang/Lex/Pragma.h
+llvm32/include/clang/Lex/PreprocessingRecord.h
+llvm32/include/clang/Lex/Preprocessor.h
+llvm32/include/clang/Lex/PreprocessorLexer.h
+llvm32/include/clang/Lex/PreprocessorOptions.h
+llvm32/include/clang/Lex/ScratchBuffer.h
+llvm32/include/clang/Lex/Token.h
+llvm32/include/clang/Lex/TokenConcatenation.h
+llvm32/include/clang/Lex/TokenLexer.h
+llvm32/include/clang/Parse/AttrLateParsed.inc
+llvm32/include/clang/Parse/ParseAST.h
+llvm32/include/clang/Parse/ParseDiagnostic.h
+llvm32/include/clang/Parse/Parser.h
+llvm32/include/clang/Rewrite/Core/DeltaTree.h
+llvm32/include/clang/Rewrite/Core/HTMLRewrite.h
+llvm32/include/clang/Rewrite/Core/RewriteRope.h
+llvm32/include/clang/Rewrite/Core/Rewriter.h
+llvm32/include/clang/Rewrite/Core/TokenRewriter.h
+llvm32/include/clang/Rewrite/Frontend/ASTConsumers.h
+llvm32/include/clang/Rewrite/Frontend/FixItRewriter.h
+llvm32/include/clang/Rewrite/Frontend/FrontendActions.h
+llvm32/include/clang/Rewrite/Frontend/Rewriters.h
+llvm32/include/clang/Sema/AnalysisBasedWarnings.h
+llvm32/include/clang/Sema/AttrParsedAttrKinds.inc
+llvm32/include/clang/Sema/AttrParsedAttrList.inc
+llvm32/include/clang/Sema/AttrTemplateInstantiate.inc
+llvm32/include/clang/Sema/AttributeList.h
+llvm32/include/clang/Sema/CXXFieldCollector.h
+llvm32/include/clang/Sema/CodeCompleteConsumer.h
+llvm32/include/clang/Sema/CodeCompleteOptions.h
+llvm32/include/clang/Sema/DeclSpec.h
+llvm32/include/clang/Sema/DelayedDiagnostic.h
+llvm32/include/clang/Sema/Designator.h
+llvm32/include/clang/Sema/ExternalSemaSource.h
+llvm32/include/clang/Sema/IdentifierResolver.h
+llvm32/include/clang/Sema/Initialization.h
+llvm32/include/clang/Sema/LocInfoType.h
+llvm32/include/clang/Sema/Lookup.h
+llvm32/include/clang/Sema/MultiplexExternalSemaSource.h
+llvm32/include/clang/Sema/ObjCMethodList.h
+llvm32/include/clang/Sema/Overload.h
+llvm32/include/clang/Sema/Ownership.h
+llvm32/include/clang/Sema/ParsedTemplate.h
+llvm32/include/clang/Sema/PrettyDeclStackTrace.h
+llvm32/include/clang/Sema/Scope.h
+llvm32/include/clang/Sema/ScopeInfo.h
+llvm32/include/clang/Sema/Sema.h
+llvm32/include/clang/Sema/SemaConsumer.h
+llvm32/include/clang/Sema/SemaDiagnostic.h
+llvm32/include/clang/Sema/SemaFixItUtils.h
+llvm32/include/clang/Sema/SemaInternal.h
+llvm32/include/clang/Sema/Template.h
+llvm32/include/clang/Sema/TemplateDeduction.h
+llvm32/include/clang/Sema/TypoCorrection.h
+llvm32/include/clang/Sema/Weak.h
+llvm32/include/clang/Serialization/ASTBitCodes.h
+llvm32/include/clang/Serialization/ASTDeserializationListener.h
+llvm32/include/clang/Serialization/ASTReader.h
+llvm32/include/clang/Serialization/ASTWriter.h
+llvm32/include/clang/Serialization/AttrPCHRead.inc
+llvm32/include/clang/Serialization/AttrPCHWrite.inc
+llvm32/include/clang/Serialization/ContinuousRangeMap.h
+llvm32/include/clang/Serialization/Module.h
+llvm32/include/clang/Serialization/ModuleManager.h
+llvm32/include/clang/Serialization/SerializationDiagnostic.h
+llvm32/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
+llvm32/include/clang/StaticAnalyzer/Checkers/CommonBugCategories.h
+llvm32/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
+llvm32/include/clang/StaticAnalyzer/Core/Analyses.def
+llvm32/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
+llvm32/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
+llvm32/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
+llvm32/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
+llvm32/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
+llvm32/include/clang/StaticAnalyzer/Core/Checker.h
+llvm32/include/clang/StaticAnalyzer/Core/CheckerManager.h
+llvm32/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
+llvm32/include/clang/StaticAnalyzer/Core/CheckerRegistry.h
+llvm32/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
+llvm32/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
+llvm32/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
+llvm32/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
+llvm32/include/clang/Tooling/ArgumentsAdjusters.h
+llvm32/include/clang/Tooling/CommonOptionsParser.h
+llvm32/include/clang/Tooling/CompilationDatabase.h
+llvm32/include/clang/Tooling/CompilationDatabasePluginRegistry.h
+llvm32/include/clang/Tooling/FileMatchTrie.h
+llvm32/include/clang/Tooling/JSONCompilationDatabase.h
+llvm32/include/clang/Tooling/Refactoring.h
+llvm32/include/clang/Tooling/RefactoringCallbacks.h
+llvm32/include/clang/Tooling/Tooling.h
+llvm32/lib/clang/3.2/include/__wmmintrin_aes.h
+llvm32/lib/clang/3.2/include/__wmmintrin_pclmul.h
+llvm32/lib/clang/3.2/include/ammintrin.h
+llvm32/lib/clang/3.2/include/arm_neon.h
+llvm32/lib/clang/3.2/include/avx2intrin.h
+llvm32/lib/clang/3.2/include/avxintrin.h
+llvm32/lib/clang/3.2/include/bmi2intrin.h
+llvm32/lib/clang/3.2/include/bmiintrin.h
+llvm32/lib/clang/3.2/include/emmintrin.h
+llvm32/lib/clang/3.2/include/f16cintrin.h
+llvm32/lib/clang/3.2/include/fma4intrin.h
+llvm32/lib/clang/3.2/include/fmaintrin.h
+llvm32/lib/clang/3.2/include/immintrin.h
+llvm32/lib/clang/3.2/include/lzcntintrin.h
+llvm32/lib/clang/3.2/include/mm3dnow.h
+llvm32/lib/clang/3.2/include/mm_malloc.h
+llvm32/lib/clang/3.2/include/mmintrin.h
+llvm32/lib/clang/3.2/include/module.map
+llvm32/lib/clang/3.2/include/nmmintrin.h
+llvm32/lib/clang/3.2/include/pmmintrin.h
+llvm32/lib/clang/3.2/include/popcntintrin.h
+llvm32/lib/clang/3.2/include/rtmintrin.h
+llvm32/lib/clang/3.2/include/smmintrin.h
+llvm32/lib/clang/3.2/include/tmmintrin.h
+llvm32/lib/clang/3.2/include/wmmintrin.h
+llvm32/lib/clang/3.2/include/x86intrin.h
+llvm32/lib/clang/3.2/include/xmmintrin.h
+llvm32/lib/clang/3.2/include/xopintrin.h
+llvm32/lib/libclang.a
+llvm32/lib/libclang.so
+llvm32/lib/libclangARCMigrate.a
+llvm32/lib/libclangAST.a
+llvm32/lib/libclangASTMatchers.a
+llvm32/lib/libclangAnalysis.a
+llvm32/lib/libclangBasic.a
+llvm32/lib/libclangCodeGen.a
+llvm32/lib/libclangDriver.a
+llvm32/lib/libclangEdit.a
+llvm32/lib/libclangFrontend.a
+llvm32/lib/libclangFrontendTool.a
+llvm32/lib/libclangLex.a
+llvm32/lib/libclangParse.a
+llvm32/lib/libclangRewriteCore.a
+llvm32/lib/libclangRewriteFrontend.a
+llvm32/lib/libclangSema.a
+llvm32/lib/libclangSerialization.a
+llvm32/lib/libclangStaticAnalyzerCheckers.a
+llvm32/lib/libclangStaticAnalyzerCore.a
+llvm32/lib/libclangStaticAnalyzerFrontend.a
+llvm32/lib/libclangTooling.a
+man/man1/clang32.1.gz
+%%PORTDOCS%%%%DOCSDIR%%/html/clang/clang.html
+%%PORTDOCS%%%%DOCSDIR%%/html/clang/manpage.css
+%%PORTDOCS%%%%DOCSDIR%%/ps/clang.ps
+@dirrm llvm32/lib/clang/3.2/include
+@dirrm llvm32/lib/clang/3.2
+@dirrm llvm32/lib/clang
+@dirrm llvm32/include/clang/Tooling
+@dirrm llvm32/include/clang/StaticAnalyzer/Frontend
+@dirrm llvm32/include/clang/StaticAnalyzer/Core/PathSensitive
+@dirrm llvm32/include/clang/StaticAnalyzer/Core/BugReporter
+@dirrm llvm32/include/clang/StaticAnalyzer/Core
+@dirrm llvm32/include/clang/StaticAnalyzer/Checkers
+@dirrm llvm32/include/clang/StaticAnalyzer
+@dirrm llvm32/include/clang/Serialization
+@dirrm llvm32/include/clang/Sema
+@dirrm llvm32/include/clang/Rewrite/Frontend
+@dirrm llvm32/include/clang/Rewrite/Core
+@dirrm llvm32/include/clang/Rewrite
+@dirrm llvm32/include/clang/Parse
+@dirrm llvm32/include/clang/Lex
+@dirrm llvm32/include/clang/FrontendTool
+@dirrm llvm32/include/clang/Frontend
+@dirrm llvm32/include/clang/Edit
+@dirrm llvm32/include/clang/Driver
+@dirrm llvm32/include/clang/Config
+@dirrm llvm32/include/clang/CodeGen
+@dirrm llvm32/include/clang/Basic
+@dirrm llvm32/include/clang/Analysis/Visitors
+@dirrm llvm32/include/clang/Analysis/Support
+@dirrm llvm32/include/clang/Analysis/FlowSensitive
+@dirrm llvm32/include/clang/Analysis/DomainSpecific
+@dirrm llvm32/include/clang/Analysis/Analyses
+@dirrm llvm32/include/clang/Analysis
+@dirrm llvm32/include/clang/ASTMatchers
+@dirrm llvm32/include/clang/AST
+@dirrm llvm32/include/clang/ARCMigrate
+@dirrm llvm32/include/clang-c
+@dirrm llvm32/include/clang
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/ps
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/html/clang
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/html
+%%PORTDOCS%%@dirrm %%DOCSDIR%%