Index: head/lang/clang33/Makefile =================================================================== --- head/lang/clang33/Makefile (revision 333045) +++ head/lang/clang33/Makefile (revision 333046) @@ -1,181 +1,181 @@ # $FreeBSD$ PORTNAME= clang DISTVERSION= 3.3 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang devel MASTER_SITES= http://llvm.org/releases/${PORTVERSION}/ PKGNAMESUFFIX= ${LLVM_SUFFIX} DISTNAME= ${CLANG_NAME} DISTFILES= ${CLANG_SOURCE} \ ${LLVM_SOURCE} MAINTAINER= brooks@FreeBSD.org COMMENT= C, Objective-C, and C++ compiler CLANG_NAME= cfe-${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-format \ clang-tblgen FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//} .include .if ${PORT_OPTIONS:MASSERTS} CONFIGURE_ARGS+= --enable-assertions RELTYPE= Release+Asserts .else CONFIGURE_ARGS+= --disable-assertions RELTYPE= Release .endif .include .if ${ARCH} == "sparc64" BROKEN= Does not compile on sparc64 .endif .if ${PORT_OPTIONS:MASSERTS} pre-fetch: @if [ "`llvm-config${LLVM_SUFFIX} --build-mode`" != ${RELTYPE} ]; then \ ${ECHO_MSG} ;\ ${ECHO_MSG} ASSERTS option enabled, but devel/llvm${LLVM_SUFFIX} was compiled without ASSERTS. ;\ ${ECHO_MSG} Correct options mismatch to proceed. ;\ ${ECHO_MSG} ;\ false ;\ fi .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/IR/Intrinsics.gen \ ${WRKSRC}/include/llvm/IR/ ${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: ${STRIP_CMD} ${STAGEDIR}${LLVM_PREFIX}/lib/libclang.so ${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 Index: head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.cpp =================================================================== --- head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.cpp (nonexistent) +++ head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.cpp (revision 333046) @@ -0,0 +1,44 @@ + +$FreeBSD$ + +--- tools/clang/lib/Driver/ToolChains.cpp.orig ++++ tools/clang/lib/Driver/ToolChains.cpp +@@ -1950,6 +1950,38 @@ + } + } + ++ToolChain::CXXStdlibType ++FreeBSD::GetCXXStdlibType(const ArgList &Args) const { ++ if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) { ++ StringRef Value = A->getValue(); ++ if (Value == "libc++") ++ return ToolChain::CST_Libcxx; ++ if (Value == "libstdc++") ++ return ToolChain::CST_Libstdcxx; ++ getDriver().Diag(diag::err_drv_invalid_stdlib_name) ++ << A->getAsString(Args); ++ } ++ ++ return getTriple().getOSMajorVersion() >= 10 ? ToolChain::CST_Libcxx : ++ ToolChain::CST_Libstdcxx; ++} ++ ++void FreeBSD::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, ++ ArgStringList &CC1Args) const { ++ if (DriverArgs.hasArg(options::OPT_nostdlibinc) || ++ DriverArgs.hasArg(options::OPT_nostdincxx)) ++ return; ++ ++ if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) ++ addSystemInclude(DriverArgs, CC1Args, ++ getDriver().SysRoot + "/usr/include/c++/v1"); ++ else ++ addSystemInclude(DriverArgs, CC1Args, ++ getDriver().SysRoot + "/usr/include/c++/4.2"); ++ return; ++ ++} ++ + /// NetBSD - NetBSD tool chain which can call as(1) and ld(1) directly. + + NetBSD::NetBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args) Property changes on: head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.cpp ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.h =================================================================== --- head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.h (nonexistent) +++ head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.h (revision 333046) @@ -0,0 +1,20 @@ + +$FreeBSD$ + +--- tools/clang/lib/Driver/ToolChains.h.orig ++++ tools/clang/lib/Driver/ToolChains.h +@@ -515,9 +515,14 @@ + FreeBSD(const Driver &D, const llvm::Triple &Triple, + const ArgList &Args); + ++ virtual CXXStdlibType GetCXXStdlibType(const ArgList &Args) const; ++ + virtual bool IsMathErrnoDefault() const { return false; } + virtual bool IsObjCNonFragileABIDefault() const { return true; } + ++ virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, ++ ArgStringList &CC1Args) const; ++ + virtual bool UseSjLjExceptions() const; + protected: + virtual Tool *buildAssembler() const; Property changes on: head/lang/clang33/files/patch-tools_clang_lib_Driver_ToolChains.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property