1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-02-01 10:59:55 +00:00

Upgrade the llvm development ports to r193887. We're about two weeks

from the LLVM 3.4 branch starting.

Apply the clang portion of r255321 from base switching the default C++
library to libc++ on 10+.

Correct clang's notion of the underlying type of (u)intmax_t on MIPS64.
This commit is contained in:
Brooks Davis 2013-11-06 00:13:02 +00:00
parent 4c549c5f51
commit 544d2a5976
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=332935
15 changed files with 1636 additions and 1459 deletions

View File

@ -11,13 +11,20 @@ PKGNAMESUFFIX= -devel
MAINTAINER= brooks@FreeBSD.org
COMMENT= Low Level Virtual Machine
CONFLICTS= llvm-2* llvm-3.[012]* llvm31-[3]*
LLVM_SUFFIX= -devel
LLVM_PREFIX= ${PREFIX}/llvm${LLVM_SUFFIX}
DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${LLVM_SUFFIX}
DATADIR= ${PREFIX}/share/${PORTNAME}${LLVM_SUFFIX}
UNIQUENAME= ${PORTNAME}${LLVM_SUFFIX}
USES= gmake perl5
GNU_CONFIGURE= yes
USE_BZIP2= yes
USE_LDCONFIG= yes
USE_PYTHON= yes
GNU_CONFIGURE_PREFIX= ${LLVM_PREFIX}
USE_LDCONFIG= ${LLVM_PREFIX}/lib
SUB_FILES= llvm-wrapper.sh
SUB_LIST= LLVM_PREFIX="${LLVM_PREFIX}" LLVM_SUFFIX="${LLVM_SUFFIX}"
# Suggested tweaks from http://llvm.org/docs/Packaging.html
CONFIGURE_ARGS+= --enable-shared
@ -27,23 +34,60 @@ LIBNAME= libLLVM-${DISTVERSION:C/\.r[0-9]*//}svn.so
CONFIGURE_ARGS+= --enable-bindings=none
CONFIGURE_ARGS+= --enable-optimized
OPTIONS_DEFINE= ASSERTS CMAKE DOCS LTOPLUGIN MANPAGES
OPTIONS_DEFINE= ASSERTS CMAKE DOCS LIT LTOPLUGIN MANPAGES
ASSERTS_DESC= Enable assertions (thread unsafe)
CMAKE_DESC= Build cmake support files
LIT_DESC= Install lit and FileCheck test tools (requires python)
LTOPLUGIN_DESC= Build LTO plugin (requires gold)
OPTIONS_DEFAULT= CMAKE MANPAGES
OPTIONS_DEFAULT= CMAKE LIT MANPAGES
OPTIONS_SUB= yes
LLVM_RELEASE= ${PORTVERSION:C/\.r[0-9]*//}
PLIST_SUB+= LLVM_RELEASE=${LLVM_RELEASE}
COMMANDS= bugpoint \
llc \
lli \
llvm-ar \
llvm-as \
llvm-bcanalyzer \
llvm-config \
llvm-cov \
llvm-diff \
llvm-dis \
llvm-dwarfdump \
llvm-extract \
llvm-link \
llvm-mc \
llvm-mcmarkup \
llvm-nm \
llvm-objdump \
llvm-ranlib \
llvm-readobj \
llvm-rtdyld \
llvm-size \
llvm-stress \
llvm-symbolizer \
llvm-tblgen \
macho-dump \
opt
FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
STRIP_LIBS= BugpointPasses.so \
LLVMHello.so \
${LIBNAME}.0 \
libLTO.so
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MASSERTS}
CONFIGURE_ARGS+= --enable-assertions
RELEASE_TYPE= Release+Asserts
.else
CONFIGURE_ARGS+= --disable-assertions
RELEASE_TYPE= Release
.endif
.if ${PORT_OPTIONS:MCMAKE}
@ -61,19 +105,27 @@ CONFIGURE_ARGS+= --enable-docs
CONFIGURE_ARGS+= --disable-docs
.endif
.if ${PORT_OPTIONS:MLIT}
MAN1SRCS+= lit.1
USE_PYTHON= yes
LIT_COMMANDS= lit llvm-lit FileCheck
.else
USE_PYTHON_BUILD= yes
.endif
.if ${PORT_OPTIONS:MLTOPLUGIN}
BUILD_DEPENDS+= ld.gold:${PORTSDIR}/devel/binutils
RUN_DEPENDS+= ld.gold:${PORTSDIR}/devel/binutils
CONFIGURE_ARGS+= --with-binutils-include=${LOCALBASE}/include
PLIST_FILES+= lib/LLVMgold.so
PLIST_FILES+= llvm${LLVM_SUFFIX}/lib/LLVMgold.so
.endif
.if ${PORT_OPTIONS:MMANPAGES}
_MAN1= bugpoint.1 lit.1 llc.1 lli.1 llvm-ar.1 llvm-as.1 \
MAN1SRCS+= bugpoint.1 llc.1 lli.1 llvm-ar.1 llvm-as.1 \
llvm-bcanalyzer.1 llvm-config.1 llvm-cov.1 llvm-diff.1 \
llvm-dis.1 llvm-extract.1 llvm-link.1 llvm-nm.1 \
llvm-prof.1 llvm-stress.1 opt.1 tblgen.1
PLIST_FILES+= man/man1/llvm-lit.1.gz ${_MAN1:S|^|man/man1/|:S|$|.gz|}
PLIST_FILES+= ${MAN1SRCS:S|^|man/man1/|:S|.1$|${LLVM_SUFFIX}.1.gz|}
.endif
.include <bsd.port.pre.mk>
@ -87,9 +139,8 @@ SVN_REV!= svn info http://llvm.org/svn/llvm-project/ | ${GREP} Revision | cut -d
.endif
.endif
.if ${ARCH} == "sparc64"
BROKEN= does not compile on sparc64
.endif
# NB: I don't re-test arches I don't use so this may be dated
BROKEN_sparc64= YES
.if ${ARCH} == "amd64" || ${ARCH} == "ia64"
CONFIGURE_ARGS+= --enable-pic --with-pic
@ -119,13 +170,17 @@ post-patch:
${WRKSRC}/Makefile.config.in
${REINPLACE_CMD} -e 's|\(PROJ_mandir.*:=\).*$$|\1${MANPREFIX}/man|g' \
${WRKSRC}/Makefile.config.in
${REINPLACE_CMD} -e 's|import lit|import lit${LLVM_SUFFIX}|' \
-e 's|from lit|from lit${LLVM_SUFFIX}|' \
-e 's|lit\.|lit${LLVM_SUFFIX}.|' \
${WRKSRC}/utils/lit/lit.py ${WRKSRC}/utils/lit/lit/*.py
.if ${PORT_OPTIONS:MCMAKE}
post-configure:
${MKDIR} ${WRKDIR}/cmake
cd ${WRKDIR}/cmake && cmake -G "Unix Makefiles" ${WRKSRC}
${REINPLACE_CMD} -e 's|${WRKDIR}/cmake|${PREFIX}|' \
-e 's|${WRKSRC}|${DATADIR}|' \
${REINPLACE_CMD} -e 's|${WRKDIR}/cmake|${LLVM_PREFIX}|' \
-e 's|${WRKSRC}/cmake/modules|${DATADIR}/cmake|' \
${WRKDIR}/cmake/share/llvm/cmake/LLVMConfig.cmake
.endif
@ -138,13 +193,17 @@ post-build:
.endif
post-install:
${MV} ${STAGEDIR}${PREFIX}/lib/${LIBNAME} ${STAGEDIR}${PREFIX}/lib/${LIBNAME}.0
${LN} -sf ${LIBNAME}.0 ${STAGEDIR}${PREFIX}/lib/${LIBNAME}
${INSTALL_SCRIPT} ${WRKSRC}/utils/lit/lit.py ${STAGEDIR}${PREFIX}/bin/lit
${LN} -sf lit ${STAGEDIR}${PREFIX}/bin/llvm-lit
${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/lit
${INSTALL_DATA} ${WRKSRC}/utils/lit/lit/*.py ${STAGEDIR}${PYTHON_SITELIBDIR}/lit
${INSTALL_PROGRAM} ${WRKSRC}/Release/bin/FileCheck ${STAGEDIR}${PREFIX}/bin/
${MV} ${STAGEDIR}${LLVM_PREFIX}/lib/${LIBNAME} \
${STAGEDIR}${LLVM_PREFIX}/lib/${LIBNAME}.0
${LN} -sf ${LIBNAME}.0 ${STAGEDIR}${LLVM_PREFIX}/lib/${LIBNAME}
${STRIP_CMD} ${STRIP_LIBS:S|^|${STAGEDIR}${LLVM_PREFIX}/lib/|}
${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:MCMAKE}
${MKDIR} ${STAGEDIR}${DATADIR}/cmake
${INSTALL_DATA} ${WRKSRC}/cmake/modules/*.cmake \
@ -156,12 +215,28 @@ post-install:
${FIND} ${WRKSRC}/docs/_build/html -type f | \
${XARGS} -I _DOC_ ${INSTALL_DATA} _DOC_ ${STAGEDIR}${DOCSDIR}/html/
.endif
.if ${PORT_OPTIONS:MLIT}
${INSTALL_SCRIPT} ${WRKSRC}/utils/lit/lit.py \
${STAGEDIR}${LLVM_PREFIX}/bin/lit
${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
${STAGEDIR}${LLVM_PREFIX}/bin/llvm-lit
${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
${STAGEDIR}${PREFIX}/bin/lit${LLVM_SUFFIX}
${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
${STAGEDIR}${PREFIX}/bin/llvm-lit${LLVM_SUFFIX}
${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/lit${LLVM_SUFFIX}
${INSTALL_DATA} ${WRKSRC}/utils/lit/lit/*.py \
${STAGEDIR}${PYTHON_SITELIBDIR}/lit${LLVM_SUFFIX}
${INSTALL_PROGRAM} ${WRKSRC}/${RELEASE_TYPE}/bin/FileCheck \
${STAGEDIR}${LLVM_PREFIX}/bin/
${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/FileCheck \
${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
.endif
.if ${PORT_OPTIONS:MMANPAGES}
.for man in ${_MAN1}
@${INSTALL_MAN} ${WRKSRC}/docs/_build/man/${man} \
${STAGEDIR}${MANPREFIX}/man/man1/
.endfor
${LN} -sf ${STAGEDIR}${MANPREFIX}/man/man1/lit.1 ${STAGEDIR}${MANPREFIX}/man/man1/llvm-lit.1
for man in ${MAN1SRCS}; do \
${INSTALL_MAN} ${WRKSRC}/docs/_build/man/$${man} \
${STAGEDIR}${MANPREFIX}/man/man1/$${man%.1}${LLVM_SUFFIX}.1 ; \
done
.endif
TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${GMAKE} check-local-lit)'
@ -173,60 +248,32 @@ regression-test: ${BUILD_COOKIE}
${SH} -c ${TEST_CMD}; \
fi
PLIST_FILE_LIST= bin/FileCheck \
bin/bugpoint \
bin/lit \
bin/llc \
bin/lli \
bin/lli-child-target \
bin/llvm-ar \
bin/llvm-as \
bin/llvm-bcanalyzer \
bin/llvm-config \
bin/llvm-cov \
bin/llvm-diff \
bin/llvm-dis \
bin/llvm-dwarfdump \
bin/llvm-extract \
bin/llvm-link \
bin/llvm-lit \
bin/llvm-mc \
bin/llvm-mcmarkup \
bin/llvm-nm \
bin/llvm-objdump \
bin/llvm-ranlib \
bin/llvm-readobj \
bin/llvm-rtdyld \
bin/llvm-size \
bin/llvm-stress \
bin/llvm-symbolizer \
bin/llvm-tblgen \
bin/macho-dump \
bin/opt \
lib/BugpointPasses.so \
lib/LLVMHello.so \
lib/libLTO.* \
lib/libLLVM*
PLIST_DIR_LIST= include/llvm-c \
include/llvm \
${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}/lit
build-plist:
${RM} -f ${PLIST}
cd ${PREFIX} && \
(ls ${PLIST_FILE_LIST}; \
${FIND} ${PLIST_DIR_LIST} -type f -o -type l) | \
${SED} -e 's|${LLVM_RELEASE}|%%LLVM_RELEASE%%|' \
-e 's|${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}|%%PYTHON_SITELIBDIR%%|' | \
.for command in ${COMMANDS}
${ECHO_CMD} bin/${command}${LLVM_SUFFIX} >> ${PLIST}
.endfor
.for command in ${LIT_COMMANDS}
${ECHO_CMD} %%LIT%%bin/${command}${LLVM_SUFFIX} >> ${PLIST}
${ECHO_CMD} %%LIT%%${LLVM_PREFIX:S|${PREFIX}/||}/bin/${command} >> ${PLIST}
.endfor
${FIND} ${STAGEDIR}${LLVM_PREFIX} -type f -o -type l | \
${GREP} -v 'lit$$' | ${GREP} -v 'FileCheck$$' | \
${GREP} -v man/man1 | ${SED} -e 's|${STAGEDIR}${PREFIX}/||' \
-e 's|${PORTVERSION}|%%PORTVERSION%%|' | \
${SORT} >> ${PLIST}
${FIND} ${DOCSDIR} -type f | \
${SED} -e 's|${DOCSDIR}|%%PORTDOCS%%%%DOCSDIR%%|' | \
${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR}/lit${LLVM_SUFFIX} -type f | \
${SED} -e 's|${STAGEDIR}${PYTHON_SITELIBDIR}|%%LIT%%%%PYTHON_SITELIBDIR%%|' | \
${SORT} >> ${PLIST}
cd ${PREFIX} && \
${FIND} ${PLIST_DIR_LIST} -type d | \
${SED} -e 's|${PYTHON_SITELIBDIR:S;${PYTHONBASE}/;;}|%%PYTHON_SITELIBDIR%%|' | \
${FIND} ${STAGEDIR}${DOCSDIR} -type f | \
${SED} -e 's|${STAGEDIR}${DOCSDIR}|%%PORTDOCS%%%%DOCSDIR%%|' | \
${SORT} >> ${PLIST}
${FIND} ${STAGEDIR}${LLVM_PREFIX} -type d | \
${SED} -e 's|${STAGEDIR}${PREFIX}/||' | \
${SORT} -r | ${SED} -e 's|^|@dirrm |' >> ${PLIST}
${FIND} ${DOCSDIR} -type d | ${SORT} -r | \
${SED} -e 's|${DOCSDIR}|%%DOCSDIR%%|' \
-e 's|^|%%PORTDOCS%%@dirrm |' >> ${PLIST}
echo "%%LIT%%@dirrm %%PYTHON_SITELIBDIR%%/lit${LLVM_SUFFIX}" >> ${PLIST}
${FIND} ${STAGEDIR}${DOCSDIR} -type d | \
${SED} -e 's|${STAGEDIR}${DOCSDIR}|%%PORTDOCS%%@dirrm %%DOCSDIR%%|' | \
${SORT} -r >> ${PLIST}
.include <bsd.port.post.mk>

View File

@ -1 +1 @@
SVN_REV= 191854
SVN_REV= 193887

View File

@ -1,2 +1,2 @@
SHA256 (llvm-3.4.r191854.tar.bz2) = 215e2f864549ea6299aa1b003c987f9a5d1a61ea2ad41b3445d2df109bb2c099
SIZE (llvm-3.4.r191854.tar.bz2) = 11667946
SHA256 (llvm-3.4.r193887.tar.bz2) = 175e3034a0f19c0ca9ce2fc75ccdc796f3c3bfd29b69f595aa4fc857f53db955
SIZE (llvm-3.4.r193887.tar.bz2) = 11845136

View File

@ -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}" "${@}"

File diff suppressed because it is too large Load Diff

View File

@ -7,17 +7,14 @@ CATEGORIES= lang devel
MASTER_SITES= ${MASTER_SITE_LOCAL}
MASTER_SITE_SUBDIR= brooks
PKGNAMESUFFIX= -devel
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
DISTFILES= ${CLANG_SOURCE} \
${LLVM_SOURCE}
EXTRACT_ONLY= ${LLVM_SOURCE}
MAINTAINER= brooks@FreeBSD.org
COMMENT= C, Objective-C, and C++ compiler
CONFLICTS= clang-3.[012]* clang31-*
CLANG_NAME= clang-${PORTVERSION}
CLANG_RELEASE= ${PORTVERSION:C/\.r[0-9]*//}
CLANG_RELEASE= ${PORTVERSION:C/\.r[0-9]*//}svn
CLANG_SOURCE= ${CLANG_NAME}${EXTRACT_SUFX}
LLVM_NAME= llvm-${PORTVERSION}
LLVM_SOURCE= ${LLVM_NAME}${EXTRACT_SUFX}
@ -26,32 +23,54 @@ WRKSRC= ${WRKDIR}/${LLVM_NAME}
BUILD_WRKSRC= ${WRKSRC}/tools/clang
INSTALL_WRKSRC= ${WRKSRC}/tools/clang
BUILD_DEPENDS+= llvm-devel>=${PORTVERSION}:${PORTSDIR}/devel/llvm-devel
RUN_DEPENDS+= llvm-devel>=${PORTVERSION}:${PORTSDIR}/devel/llvm-devel
.if defined(PACKAGE_BUILDING)
BUILD_DEPENDS+= runtest:${PORTSDIR}/misc/dejagnu
.endif
BUILD_DEPENDS+= llvm-config${LLVM_SUFFIX}:${PORTSDIR}/devel/llvm-devel
RUN_DEPENDS+= llvm-config${LLVM_SUFFIX}:${PORTSDIR}/devel/llvm-devel
LLVM_SUFFIX= -devel
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_BZIP2= yes
USE_LDCONFIG= yes
USE_PYTHON= yes
MAKE_ARGS= CLANG_TBLGEN=${WRKSRC}/${RELTYPE}/bin/clang-tblgen \
LLVMIncDir=${LOCALBASE}/include \
LLVMToolDir=${LOCALBASE}/bin \
LLVMLibDir=${LOCALBASE}/lib
LLVMIncDir=${LLVM_PREFIX}/include \
LLVMToolDir=${LLVM_PREFIX}/bin \
LLVMLibDir=${LLVM_PREFIX}/lib
OPTIONS_DEFINE= ASSERTS DOCS MIPS_FPHACK
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)
MIPS_FPHACK_DESC= MIPS long double hack (breaks ABI)
CONFIGURE_ARGS+= --enable-optimized
CONFIGURE_ARGS+= --enable-optimized --enable-shared
# Build some docs manually later
CONFIGURE_ARGS+= --disable-docs
PLIST_SUB+= CLANG_RELEASE=${CLANG_RELEASE}
COMMANDS= c-index-test \
clang \
clang++ \
clang-check \
clang-cpp \
clang-format \
clang-tblgen \
ccc-analyzer \
c++-analyzer \
scan-build \
scan-view
FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
PORTDATA= scanview.css \
sorttable.js
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MASSERTS}
@ -62,26 +81,22 @@ CONFIGURE_ARGS+= --disable-assertions
RELTYPE= Release
.endif
.if ${PORT_OPTIONS:MDOCS}
CONFIGURE_ARGS+= --enable-docs
.else
CONFIGURE_ARGS+= --disable-docs
.endif
.if ${PORT_OPTIONS:MMIPS_FPHACK}
EXTRA_PATCHES= ${FILESDIR}/mips-long-double-hack.diff
.endif
.include <bsd.port.pre.mk>
.include "${.CURDIR}/../../devel/llvm-devel/Makefile.svn_rev"
.if ${ARCH} == "sparc64"
BROKEN= Does not compile on sparc64
.endif
# NB: I don't test arches I don't use so this may be out of date.
BROKEN_sparc64= YES
.if ${OSVERSION} < 900033
RUN_DEPENDS+= ${LOCALBASE}/bin/ld:${PORTSDIR}/devel/binutils
.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
.if defined(BOOTSTRAP) || defined(SVN_FETCH)
@ -99,15 +114,16 @@ do-fetch:
.endif
post-extract:
cd ${WRKSRC}/tools && \
tar xf ${DISTDIR}/${CLANG_SOURCE} && \
${MV} ${CLANG_NAME} clang
${RM} -f ${BUILD_WRKSRC}
${MV} ${WRKDIR}/${CLANG_NAME} ${BUILD_WRKSRC}
post-patch:
${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
${REINPLACE_CMD} -e 's|/usr/bin/env perl|${PERL}|' \
-e 's|%%DATADIR%%|${DATADIR}|' \
${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \
@ -117,58 +133,51 @@ post-patch:
${WRKSRC}/tools/clang/tools/scan-view/scan-view
pre-build:
${LN} -sf ${LOCALBASE}/include/llvm/IR/Intrinsics.gen \
${LN} -sf ${LLVM_PREFIX}/include/llvm/IR/Intrinsics.gen \
${WRKSRC}/include/llvm/IR/
${MKDIR} ${WRKSRC}/${RELTYPE}/lib
${LN} -sf ${LOCALBASE}/lib/libLLVMTableGen.a ${WRKSRC}/${RELTYPE}/lib/
${LN} -sf ${LOCALBASE}/lib/libLLVMSupport.a ${WRKSRC}/${RELTYPE}/lib/
${LN} -sf ${LLVM_PREFIX}/lib/libLLVM-${CLANG_RELEASE}.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} clang.1
@cd ${WRKSRC}/tools/clang/docs/tools && ${GMAKE} man html ps
post-install:
@${LN} -sf clang ${STAGEDIR}${PREFIX}/bin/clang-cpp
@${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \
${WRKSRC}/tools/clang/tools/scan-build/c++-analyzer \
${WRKSRC}/tools/clang/tools/scan-build/scan-build \
${WRKSRC}/tools/clang/tools/scan-view/scan-view \
${STAGEDIR}${PREFIX}/bin
@${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
@${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/Resources
@${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-view/*.py \
${STRIP_CMD} ${STAGEDIR}${LLVM_PREFIX}/lib/libclang.so
${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/clang \
${STAGEDIR}${LLVM_PREFIX}/bin/clang-cpp
${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \
${WRKSRC}/tools/clang/tools/scan-build/c++-analyzer \
${WRKSRC}/tools/clang/tools/scan-build/scan-build \
${WRKSRC}/tools/clang/tools/scan-view/scan-view \
${STAGEDIR}${LLVM_PREFIX}/bin
${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
${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/Resources
${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-view/*.py \
${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
@${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-view/Resources/* \
${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-view/Resources/* \
${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/Resources
@${MKDIR} ${STAGEDIR}${DATADIR}
@${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/scanview.css \
${MKDIR} ${STAGEDIR}${DATADIR}
${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/scanview.css \
${WRKSRC}/tools/clang/tools/scan-build/sorttable.js \
${STAGEDIR}${DATADIR}
@${INSTALL_MAN} ${WRKSRC}/tools/clang/docs/tools/clang.1 \
${STAGEDIR}${MANPREFIX}/man/man1/
cd ${WRKSRC}/tools/clang/docs/tools && \
${GMAKE} DESTDIR=${STAGEDIR}/ install-html install-ps
${INSTALL_MAN} ${WRKSRC}/tools/clang/docs/tools/clang.1 \
${STAGEDIR}${MANPREFIX}/man/man1/clang${LLVM_SUFFIX}.1
TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} ${GMAKE} check)'
regression-test: ${BUILD_COOKIE}
if [ `${ID} -u` = 0 ]; then \
${CHOWN} -R nobody ${WRKSRC}/test; \
su -m nobody -c ${TEST_CMD}; \
else \
${SH} -c ${TEST_CMD}; \
fi
PLIST_FILE_LIST= bin/ccc-analyzer \
bin/c++-analyzer \
bin/c-index-test \
bin/clang \
bin/clang++ \
bin/clang-check \
bin/clang-cpp \
bin/clang-format \
bin/clang-tblgen \
bin/scan-build \
bin/scan-view \
lib/libclang* \
man/man1/clang.1.gz
PLIST_FILE_LIST= ${COMMANDS:S|^|bin/|} \
lib/libclang*
PLIST_DIR_LIST= include/clang \
include/clang-c \
lib/clang
@ -180,27 +189,27 @@ PLIST_PYDIR_LIST= Resources
build-plist:
${RM} -f ${PLIST}
cd ${PREFIX} && \
(ls ${PLIST_FILE_LIST}; ${FIND} ${PLIST_DIR_LIST} -type f) | \
${SED} -e 's|${CLANG_RELEASE}|%%CLANG_RELEASE%%|' | \
.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} ${DATADIR} ${DOCSDIR} -type f | \
${SED} -e 's|${DATADIR}|%%DATADIR%%|' \
-e 's|${DOCSDIR}|%%PORTDOCS%%%%DOCSDIR%%|' | ${SORT} >> ${PLIST}
cd ${PYTHONPREFIX_SITELIBDIR} && \
${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}
cd ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} && \
ls ${PLIST_PYFILE_LIST} | ${SORT} | \
${SED} -e 's|^|%%PYTHON_SITELIBDIR%%/|' >> ${PLIST}
cd ${PREFIX} && \
${FIND} ${PLIST_DIR_LIST} -type d | \
${SED} -e 's|${CLANG_RELEASE}|%%CLANG_RELEASE%%|' | \
${SORT} -r | ${SED} -e 's|^|@dirrm |' >> ${PLIST}
cd ${PYTHONPREFIX_SITELIBDIR} && \
cd ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} && \
${FIND} ${PLIST_PYDIR_LIST} -type d | ${SORT} -r | \
${SED} -e 's|^|@dirrm %%PYTHON_SITELIBDIR%%/|' >> ${PLIST}
echo "@dirrmtry %%PYTHON_SITELIBDIR%%" >> ${PLIST}
echo "@dirrmtry %%PYTHON_LIBDIR%%" >> ${PLIST}
${FIND} ${DATADIR} ${DOCSDIR} -type d | ${SORT} -r | \
${SED} -e 's|${DATADIR}|@dirrm %%DATADIR%%|' \
-e 's|${DOCSDIR}|%%PORTDOCS%%@dirrm %%DOCSDIR%%|' >> ${PLIST}
.include <bsd.port.post.mk>

View File

@ -1,4 +1,4 @@
SHA256 (clang-3.4.r191854.tar.bz2) = 37e9a613adcbdf556abff68d3df68e8a49e77d7110dce29e046702ed59fdff34
SIZE (clang-3.4.r191854.tar.bz2) = 8163904
SHA256 (llvm-3.4.r191854.tar.bz2) = 215e2f864549ea6299aa1b003c987f9a5d1a61ea2ad41b3445d2df109bb2c099
SIZE (llvm-3.4.r191854.tar.bz2) = 11667946
SHA256 (clang-3.4.r193887.tar.bz2) = ce034154e6ef98321b26c4c3fa82a1066fdfb49bd193e71767797c11eaea3f9c
SIZE (clang-3.4.r193887.tar.bz2) = 8275346
SHA256 (llvm-3.4.r193887.tar.bz2) = 175e3034a0f19c0ca9ce2fc75ccdc796f3c3bfd29b69f595aa4fc857f53db955
SIZE (llvm-3.4.r193887.tar.bz2) = 11845136

View File

@ -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}" "${@}"

View File

@ -1,15 +0,0 @@
$FreeBSD$
--- tools/clang/lib/Basic/Targets.cpp.orig
+++ tools/clang/lib/Basic/Targets.cpp
@@ -3957,6 +3957,9 @@
PointerWidth = PointerAlign = 64;
LongDoubleWidth = LongDoubleAlign = 128;
LongDoubleFormat = &llvm::APFloat::IEEEquad;
+ // FIXME: Ugly ABI-Breaking hack until the back end supports 128-bit floats
+ LongDoubleWidth = LongDoubleAlign = 64;
+ LongDoubleFormat = &llvm::APFloat::IEEEdouble;
SuitableAlign = 128;
}
virtual bool setABI(const std::string &Name) {

View File

@ -0,0 +1,14 @@
$FreeBSD$
--- tools/clang/lib/Basic/Targets.cpp.orig
+++ tools/clang/lib/Basic/Targets.cpp
@@ -4981,6 +4981,8 @@
LongDoubleWidth = LongDoubleAlign = 128;
LongDoubleFormat = &llvm::APFloat::IEEEquad;
if (getTriple().getOS() == llvm::Triple::FreeBSD) {
+ IntMaxType = SignedLong;
+ UIntMaxType = UnsignedLong;
LongDoubleWidth = LongDoubleAlign = 64;
LongDoubleFormat = &llvm::APFloat::IEEEdouble;
}

View File

@ -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)

View File

@ -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 llvm::opt::ArgList &Args);
+ virtual CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const;
+
virtual bool IsMathErrnoDefault() const { return false; }
virtual bool IsObjCNonFragileABIDefault() const { return true; }
+ virtual void AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs,
+ llvm::opt::ArgStringList &CC1Args) const;
+
virtual bool UseSjLjExceptions() const;
protected:
virtual Tool *buildAssembler() const;

File diff suppressed because it is too large Load Diff

View File

@ -12,27 +12,28 @@ DISTNAME= dragonegg-${PORTVERSION}
MAINTAINER= brooks@FreeBSD.org
COMMENT= GCC plugin to use the LLVM backend
CONFLICTS+= dragonegg46-3*
BUILD_DEPENDS+= llvm-config${LLVM_SUFFIX}:${PORTSDIR}/devel/llvm-devel
RUN_DEPENDS+= llvm-config${LLVM_SUFFIX}:${PORTSDIR}/devel/llvm-devel
# XXX: not entierly sure if llvm-devel is a depend
BUILD_DEPENDS+= llvm-devel>=${PORTVERSION}:${PORTSDIR}/devel/llvm-devel
RUN_DEPENDS+= llvm-devel>=${PORTVERSION}:${PORTSDIR}/devel/llvm-devel
LLVM_SUFFIX= -devel
OPTIONS_DEFINE= DOCS
USES= compiler:features
USES= compiler:features gmake
USE_BZIP2= yes
USE_GCC= 4.6
USE_GMAKE= yes
USE_LDCONFIG= yes
DRAGONEGG_RELEASE= ${PORTVERSION:C/\.r[0-9]*//}
DOCSDIR= ${PREFIX}/share/doc/${UNIQUENAME}
UNIQUENAME= ${PORTNAME}${PKGNAMESUFFIX}
DRAGONEGG_RELEASE= ${PORTVERSION:C/\.r[0-9]*//}svn
DRAGONEGG_SO= dragonegg-${DRAGONEGG_RELEASE}.so
DRAGONEGG_PATH= ${GCC_LIBDIR}/${DRAGONEGG_SO}
GCC_LIBDIR= lib/${CC}
ALL_TARGET=
MAKE_ARGS= GCC=${LOCALBASE}/bin/${CC} VERBOSE=1
MAKE_ARGS= GCC=${LOCALBASE}/bin/${CC} LLVM_CONFIG=llvm-config${LLVM_SUFFIX}
.include "${.CURDIR}/../../devel/llvm-devel/Makefile.svn_rev"
@ -40,9 +41,7 @@ PLIST_FILES= ${GCC_LIBDIR}/${DRAGONEGG_SO}
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MDOCS}
PORTDOCS= README
.endif
.include <bsd.port.pre.mk>
@ -72,12 +71,10 @@ post-patch:
${WRKSRC}/README
do-install:
mkdir -p ${STAGEDIR}${LOCALBASE}/${GCC_LIBDIR}
@${MKDIR} ${STAGEDIR}${LOCALBASE}/${GCC_LIBDIR}
${INSTALL_LIB} ${WRKSRC}/dragonegg.so \
${STAGEDIR}${LOCALBASE}/${GCC_LIBDIR}/${DRAGONEGG_SO}
.if ${PORT_OPTIONS:MDOCS}
${MKDIR} ${STAGEDIR}${DOCSDIR}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/README ${STAGEDIR}${DOCSDIR}
.endif
.include <bsd.port.post.mk>

View File

@ -1,2 +1,2 @@
SHA256 (dragonegg-3.4.r191854.tar.bz2) = 2e58f68293e492ffeb8da3c828bc30c83939a9610f2e5d1efa75b078938bea42
SIZE (dragonegg-3.4.r191854.tar.bz2) = 398552
SHA256 (dragonegg-3.4.r193887.tar.bz2) = 39db454a93a2b865a3322a6460551201224e091f204792548ef851c145db367d
SIZE (dragonegg-3.4.r193887.tar.bz2) = 398941