From c40c2a56d2e6d028eea2b9b7331bb352761779c4 Mon Sep 17 00:00:00 2001 From: sthen Date: Sat, 12 Jun 2010 12:15:08 +0000 Subject: [PATCH] Adjust LLVM/CLang to work with GCC4 in base, while still working with ports GCC4 for arch which haven't switched yet. With/ok jsg@. --- devel/llvm/Makefile | 16 ++++++++++- .../gcc3-tools_clang_lib_Driver_Tools_cpp | 16 +++++++++++ .../patch-tools_clang_lib_Driver_Tools_cpp | 27 +++++-------------- ...ls_clang_lib_Frontend_InitHeaderSearch_cpp | 7 +++-- 4 files changed, 40 insertions(+), 26 deletions(-) create mode 100644 devel/llvm/patches/gcc3-tools_clang_lib_Driver_Tools_cpp diff --git a/devel/llvm/Makefile b/devel/llvm/Makefile index 97bce95b449..6cc28ee597b 100644 --- a/devel/llvm/Makefile +++ b/devel/llvm/Makefile @@ -1,9 +1,10 @@ -# $OpenBSD: Makefile,v 1.20 2010/04/29 16:37:09 jsg Exp $ +# $OpenBSD: Makefile,v 1.21 2010/06/12 12:15:08 sthen Exp $ COMMENT = Low Level Virtual Machine (LLVM) compiler infrastructure LLVM_V = 2.7 DISTNAME = llvm-${LLVM_V} +PKGNAME = ${DISTNAME}p0 CATEGORIES = devel @@ -64,10 +65,23 @@ CONFIGURE_ARGS = --enable-bindings=no \ MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC}/autoconf +.include + +.if ${COMPILER_VERSION} == "gcc3" +PATCH_LIST += patch-* gcc3-* +.endif + pre-configure: @perl -pi -e s,-lpthread,-pthread,g ${WRKSRC}/configure @${SUBST_CMD} ${WRKSRC}/tools/clang/tools/scan-build/scan-build @ln -s ${MODPY_BIN} ${WRKDIR}/bin/python +.if ${COMPILER_VERSION:L} == "gcc3" + @perl -pi -e 's,-L/usr/lib/gcc-lib/,-L${LOCALBASE}/lib/gcc/,;' \ + -e 's, "/4.2.1, "/4.2.4,;' \ + ${WRKSRC}/tools/clang/lib/Driver/Tools.cpp + @perl -pi -e 's,/usr/include/g\+\+,${LOCALBASE}/include/c++/4.2.4,' \ + ${WRKSRC}/tools/clang/lib/Frontend/InitHeaderSearch.cpp +.endif post-install: @ln -s ${TRUEPREFIX}/libexec/clang-cc ${PREFIX}/bin diff --git a/devel/llvm/patches/gcc3-tools_clang_lib_Driver_Tools_cpp b/devel/llvm/patches/gcc3-tools_clang_lib_Driver_Tools_cpp new file mode 100644 index 00000000000..afd11ccada2 --- /dev/null +++ b/devel/llvm/patches/gcc3-tools_clang_lib_Driver_Tools_cpp @@ -0,0 +1,16 @@ +$OpenBSD: gcc3-tools_clang_lib_Driver_Tools_cpp,v 1.1 2010/06/12 12:15:08 sthen Exp $ +--- tools/clang/lib/Driver/Tools.cpp.orig Sun Mar 7 05:46:18 2010 ++++ tools/clang/lib/Driver/Tools.cpp Wed Apr 28 21:14:33 2010 +@@ -2581,6 +2586,12 @@ void openbsd::Link::ConstructJob(Compilation &C, const + + if (!Args.hasArg(options::OPT_nostdlib) && + !Args.hasArg(options::OPT_nodefaultlibs)) { ++ if (D.CCCIsCXX) { ++ CmdArgs.push_back("-L/usr/local/lib"); ++ CmdArgs.push_back("-lestdc++"); ++ CmdArgs.push_back("-lm"); ++ } ++ + // FIXME: For some reason GCC passes -lgcc before adding + // the default system libraries. Just mimic this for now. + CmdArgs.push_back("-lgcc"); diff --git a/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp b/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp index f721078f0ec..5bbdac733fa 100644 --- a/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp +++ b/devel/llvm/patches/patch-tools_clang_lib_Driver_Tools_cpp @@ -1,6 +1,6 @@ -$OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.4 2010/04/29 16:37:09 jsg Exp $ ---- tools/clang/lib/Driver/Tools.cpp.orig Sun Mar 7 05:46:18 2010 -+++ tools/clang/lib/Driver/Tools.cpp Wed Apr 28 21:14:33 2010 +$OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.5 2010/06/12 12:15:08 sthen Exp $ +--- tools/clang/lib/Driver/Tools.cpp.orig Sun Mar 7 04:46:18 2010 ++++ tools/clang/lib/Driver/Tools.cpp Thu Jun 10 16:12:25 2010 @@ -576,6 +576,11 @@ void Clang::AddX86TargetArgs(const ArgList &Args, CPUName = "core2"; else if (getToolChain().getArchName() == "i386") @@ -13,27 +13,12 @@ $OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.4 2010/04/29 16:37:09 jsg E } else { if (getToolChain().getArchName() == "x86_64") CPUName = "x86-64"; -@@ -2550,8 +2555,8 @@ void openbsd::Link::ConstructJob(Compilation &C, const - std::string Triple = getToolChain().getTripleString(); +@@ -2551,7 +2556,7 @@ void openbsd::Link::ConstructJob(Compilation &C, const if (Triple.substr(0, 6) == "x86_64") Triple.replace(0, 6, "amd64"); -- CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc-lib/" + Triple + + CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc-lib/" + Triple + - "/3.3.5")); -+ CmdArgs.push_back(Args.MakeArgString("-L/usr/local/lib/gcc/" + Triple + -+ "/4.2.4")); ++ "/4.2.1")); Args.AddAllArgs(CmdArgs, options::OPT_L); Args.AddAllArgs(CmdArgs, options::OPT_T_Group); -@@ -2576,6 +2581,12 @@ void openbsd::Link::ConstructJob(Compilation &C, const - - if (!Args.hasArg(options::OPT_nostdlib) && - !Args.hasArg(options::OPT_nodefaultlibs)) { -+ if (D.CCCIsCXX) { -+ CmdArgs.push_back("-L/usr/local/lib"); -+ CmdArgs.push_back("-lestdc++"); -+ CmdArgs.push_back("-lm"); -+ } -+ - // FIXME: For some reason GCC passes -lgcc before adding - // the default system libraries. Just mimic this for now. - CmdArgs.push_back("-lgcc"); diff --git a/devel/llvm/patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp b/devel/llvm/patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp index 1c156d68164..047344ab6c2 100644 --- a/devel/llvm/patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp +++ b/devel/llvm/patches/patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp @@ -1,7 +1,7 @@ -$OpenBSD: patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp,v 1.1 2010/04/29 16:37:09 jsg Exp $ +$OpenBSD: patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp,v 1.2 2010/06/12 12:15:08 sthen Exp $ --- tools/clang/lib/Frontend/InitHeaderSearch.cpp.orig Sat Mar 6 20:38:10 2010 +++ tools/clang/lib/Frontend/InitHeaderSearch.cpp Wed Apr 28 21:11:32 2010 -@@ -581,6 +581,16 @@ void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths +@@ -581,6 +581,15 @@ void InitHeaderSearch::AddDefaultCPlusPlusIncludePaths case llvm::Triple::FreeBSD: AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple); break; @@ -10,8 +10,7 @@ $OpenBSD: patch-tools_clang_lib_Frontend_InitHeaderSearch_cpp,v 1.1 2010/04/29 1 + std::string t = triple.getTriple(); + if (t.substr(0, 6) == "x86_64") + t.replace(0, 6, "amd64"); -+ // 4.7 gcc 4.2.4 from ports -+ AddGnuCPlusPlusIncludePaths("/usr/local/include/c++/4.2.4", ++ AddGnuCPlusPlusIncludePaths("/usr/include/g++", + t, "", "", triple); + } + break;