# New ports collection makefile for: clang # Date created: 24 Oct 2009 # Whom: Brooks Davis # # $FreeBSD$ # PORTNAME= clang PORTVERSION= 2.7 PORTREVISION= 1 CATEGORIES= devel lang MASTER_SITES= http://llvm.org/releases/${PORTVERSION}/ DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \ ${LLVM_SOURCE} EXTRACT_ONLY= ${LLVM_SOURCE} EXTRACT_SUFX= .tgz MAINTAINER= brooks@FreeBSD.org COMMENT= C, Objective-C, and (alpha-quality) C++ compiler CONFLICTS= clang-devel-2.[0-9]* llvm-devel-2.[0-9]* CLANG_NAME= clang-${PORTVERSION} CLANG_SOURCE= ${CLANG_NAME}${EXTRACT_SUFX} LLVM_NAME= llvm-${PORTVERSION} LLVM_SOURCE= ${LLVM_NAME}${EXTRACT_SUFX} WRKSRC= ${WRKDIR}/${LLVM_NAME} INSTALL_WRKSRC= ${WRKSRC}/tools/clang BUILD_DEPENDS+= llvm-as:${PORTSDIR}/devel/llvm RUN_DEPENDS+= llvm-as:${PORTSDIR}/devel/llvm .if defined(PACKAGE_BUILDING) || defined(MAINTAINER_MODE) BUILD_DEPENDS+= runtest:${PORTSDIR}/misc/dejagnu .endif .if defined(MAINTAINER_MODE) BUILD_DEPENDS+= f2c:${PORTSDIR}/lang/f2c .endif GNU_CONFIGURE= yes USE_GCC= 4.2+ USE_GMAKE= yes USE_PERL5_BUILD=yes MAKE_JOBS_SAFE= yes .if defined(MAINTAINER_MODE) CONFIGURE_ARGS+= --with-f2c=${LOCALBASE} .else CONFIGURE_ARGS+= --enable-optimized .endif .if defined(NOPORTDOCS) DOCSRCDIR= .else DOCSRCDIR= docs .endif MAN1= clang.1 .include .if ${ARCH} == "sparc64" BROKEN= Does not compile on sparc64 .endif post-extract: cd ${WRKSRC}/tools && \ tar xf ${DISTDIR}/${CLANG_SOURCE} && \ ${MV} ${CLANG_NAME} clang 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|%%DOCSRCDIR%%|${DOCSRCDIR}|' \ ${WRKSRC}/Makefile ${WRKSRC}/tools/clang/Makefile ${REINPLACE_CMD} -e 's|/usr/bin/env perl|${PERL}|' \ ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \ ${WRKSRC}/tools/clang/tools/scan-build/scan-build .if defined(NOPORTDOCS) post-build: @cd ${WRKSRC}/tools/clang/docs/tools && ${GMAKE} clang.1 .endif post-install: @${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer \ ${PREFIX}/bin @${INSTALL_SCRIPT} ${WRKSRC}/tools/clang/tools/scan-build/scan-build \ ${PREFIX}/bin @${MKDIR} ${DATADIR} @${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/scanview.css ${DATADIR} @${INSTALL_DATA} ${WRKSRC}/tools/clang/tools/scan-build/sorttable.js ${DATADIR} .if defined(NOPORTDOCS) @${INSTALL_MAN} ${WRKSRC}/tools/clang/docs/tools/clang.1 \ ${MANPREFIX}/man/man1/ .endif 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/clang \ bin/clang++ \ bin/scan-build \ lib/libCIndex.* \ lib/libclang* PLIST_DIR_LIST= include/clang \ include/clang-c \ lib/clang build-plist: ${RM} -f ${PLIST} cd ${PREFIX} && \ (ls ${PLIST_FILE_LIST}; ${FIND} ${PLIST_DIR_LIST} -type f) | \ ${SORT} >> ${PLIST} ${FIND} ${DATADIR} ${DOCSDIR} -type f | \ ${SED} -e 's|${DATADIR}|%%DATADIR%%|' \ -e 's|${DOCSDIR}|%%PORTDOCS%%%%DOCSDIR%%|' | ${SORT} >> ${PLIST} cd ${PREFIX} && \ ${FIND} ${PLIST_DIR_LIST} -type d | \ ${SORT} -r | ${SED} -e 's|^|@dirrm |' >> ${PLIST} ${FIND} ${DATADIR} ${DOCSDIR} -type d | ${SORT} -r | \ ${SED} -e 's|${DATADIR}|@dirrm %%DATADIR%%|' \ -e 's|${DOCSDIR}|%%PORTDOCS%%@dirrm %%DOCSDIR%%|' >> ${PLIST} .include