summaryrefslogtreecommitdiff
path: root/lang/clang/Makefile.common
diff options
context:
space:
mode:
Diffstat (limited to 'lang/clang/Makefile.common')
-rw-r--r--lang/clang/Makefile.common182
1 files changed, 97 insertions, 85 deletions
diff --git a/lang/clang/Makefile.common b/lang/clang/Makefile.common
index 42376356f45..6119ba4a86a 100644
--- a/lang/clang/Makefile.common
+++ b/lang/clang/Makefile.common
@@ -1,112 +1,124 @@
-# $NetBSD: Makefile.common,v 1.12 2016/03/08 21:11:44 tnn Exp $
-#
+# $NetBSD: Makefile.common,v 1.13 2016/03/10 15:01:52 tnn Exp $
# used by lang/clang/Makefile
# used by lang/clang-static-analyzer/Makefile
-DISTNAME= clang-3.7.1
-CATEGORIES= lang
+DISTNAME= cfe-3.8.0.src
+CATEGORIES= lang devel
MASTER_SITES= http://llvm.org/releases/${PKGVERSION_NOREV}/
-DISTFILES= llvm-${PKGVERSION_NOREV}.src.tar.xz \
- libcxx-${PKGVERSION_NOREV}.src.tar.xz \
- cfe-${PKGVERSION_NOREV}.src.tar.xz \
- compiler-rt-${PKGVERSION_NOREV}.src.tar.xz
-
-MAINTAINER= adam.hoka@gmail.com
-HOMEPAGE= http://llvm.org/
-COMMENT= Low Level Virtual Machine compiler infrastructure
+EXTRACT_SUFX= .tar.xz
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+HOMEPAGE= http://clang.llvm.org/
+COMMENT= C language family frontend for LLVM
LICENSE= modified-bsd
-WRKSRC= ${WRKDIR}/llvm-${PKGVERSION_NOREV}.src
+DISTINFO_FILE= ${.CURDIR}/../../lang/clang/distinfo
+PATCHDIR= ${.CURDIR}/../../lang/clang/patches
+CONFIGURE_DIRS= ${WRKDIR}/build
+CMAKE_ARG_PATH= ${WRKSRC}
USE_LANGUAGES= c c++
-USE_TOOLS+= chown gmake groff gzip pod2html pod2man
-GCC_REQD+= 4.7 4.8
-GNU_CONFIGURE= yes
-CONFIGURE_ARGS+= --disable-assertions
-CONFIGURE_ARGS+= --disable-bindings # disable OCaml
-CONFIGURE_ARGS+= --disable-timestamps
-CONFIGURE_ARGS+= --enable-optimized
+USE_CMAKE= yes
+GCC_REQD+= 4.8
+
+CMAKE_ARGS+= -DLLVM_CONFIG=${LLVM_CONFIG_PATH}
+CMAKE_ARGS+= -DCMAKE_BUILD_TYPE=Release
+CMAKE_ARGS+= -DCMAKE_C_COMPILER=gcc
+CMAKE_ARGS+= -DCMAKE_CXX_COMPILER=g++
+# XXX can't disable static-analyzer without also disabling ARCMT
+CMAKE_ARGS+= -DCLANG_ENABLE_ARCMT=OFF
+
+REPLACE_PERL+= test/make_test_dirs.pl
+REPLACE_PERL+= tools/scan-build/bin/scan-build
+REPLACE_PERL+= tools/scan-build/libexec/c++-analyzer
+REPLACE_PERL+= tools/scan-build/libexec/ccc-analyzer
+REPLACE_PERL+= utils/TestUtils/pch-test.pl
+REPLACE_PERL+= utils/analyzer/reducer.pl
+REPLACE_PERL+= utils/analyzer/update_plist_test.pl
+REPLACE_PERL+= www/demo/index.cgi
+
+REPLACE_PYTHON+= bindings/python/examples/cindex/cindex-dump.py
+REPLACE_PYTHON+= bindings/python/examples/cindex/cindex-includes.py
+REPLACE_PYTHON+= docs/tools/dump_ast_matchers.py
+REPLACE_PYTHON+= docs/tools/dump_format_style.py
+REPLACE_PYTHON+= tools/clang-format/clang-format-diff.py
+REPLACE_PYTHON+= tools/clang-format/git-clang-format
+REPLACE_PYTHON+= tools/scan-build/bin/set-xcode-analyzer
+REPLACE_PYTHON+= tools/scan-view/bin/scan-view
+REPLACE_PYTHON+= utils/ABITest/ABITestGen.py
+REPLACE_PYTHON+= utils/CIndex/completion_logger_server.py
+REPLACE_PYTHON+= utils/CaptureCmd
+REPLACE_PYTHON+= utils/CmpDriver
+REPLACE_PYTHON+= utils/FindSpecRefs
+REPLACE_PYTHON+= utils/FuzzTest
+REPLACE_PYTHON+= utils/TestUtils/deep-stack.py
+REPLACE_PYTHON+= utils/analyzer/CmpRuns.py
+REPLACE_PYTHON+= utils/analyzer/SATestAdd.py
+REPLACE_PYTHON+= utils/analyzer/SATestBuild.py
+REPLACE_PYTHON+= utils/analyzer/SumTimerInfo.py
+REPLACE_PYTHON+= utils/analyzer/ubiviz
+REPLACE_PYTHON+= utils/check_cfc/check_cfc.py
+REPLACE_PYTHON+= utils/check_cfc/obj_diff.py
+REPLACE_PYTHON+= utils/check_cfc/test_check_cfc.py
+REPLACE_PYTHON+= utils/token-delta.py
+REPLACE_PYTHON+= www/builtins.py
-# In-tree builds are not allowed
-OBJDIR= ../build
-CONFIGURE_DIRS= ${OBJDIR}
-CONFIGURE_SCRIPT= ../llvm-${PKGVERSION_NOREV}.src/configure
+.include "../../mk/compiler.mk"
-CHECK_PORTABILITY_SKIP= utils/buildit/build_llvm
+.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang)
+# command to check if clang is using libc++ or libstdc++
+LIBCPP_CHECK_SH= printf "\#include <ciso646>\n\#ifdef _LIBCPP_VERSION\nYES\n\#endif" | ${CLANGBASE}/bin/clang++ -x c++ -E - 2>&1 | grep YES || true
+.else
+LIBCPP_CHECK_SH= echo NO
+.endif
-TEST_TARGET= check unittests
+# patch NetBSD::GetCXXStdlibType
+.if ${OPSYS} == "NetBSD" && empty(LIBCPP_CHECK_SH:sh:MYES)
+SUBST_CLASSES+= libcxx
+SUBST_STAGE.libcxx= pre-configure
+SUBST_MESSAGE.libcxx= Patching toolchain to use libstdc++ (matching the host compiler)
+SUBST_FILES.libcxx= lib/Driver/ToolChains.cpp
+SUBST_FILES.libcxx+= lib/Driver/Tools.cpp
+SUBST_SED.libcxx= -e 's,(Major >= 7 || (Major == 6 && Minor == 99 && Micro >= 49) || Major == 0),(false),'
-DISTINFO_FILE= ${.CURDIR}/../../lang/clang/distinfo
-PATCHDIR= ${.CURDIR}/../../lang/clang/patches
+CMAKE_ARGS+= -DCLANG_DEFAULT_CXX_STDLIB:STRING="libstdc++"
+.endif
-.include "../../mk/bsd.prefs.mk"
+# 3.8.0 -> 3.8
+LLVM_MAJOR= ${PKGVERSION_NOREV:C/^([0-9]+\.[0-9]+)\..*$/\1/}
+PLIST_SUBST+= LLVM_MAJOR=${LLVM_MAJOR}
+PLIST_VARS+= notdylib
.if ${_OPSYS_SHLIB_TYPE} == "dylib"
-PLIST_SUBST+= SOEXT="dylib"
+SOEXT= dylib
.else
-PLIST_SUBST+= SOEXT="so"
+SOEXT= so
+PLIST.notdylib= yes
.endif
+PLIST_SUBST+= SOEXT=${SOEXT}
-.include "../../mk/compiler.mk"
+PKG_OPTIONS_VAR= PKG_OPTIONS.clang
+PKG_SUPPORTED_OPTIONS= tests
-.if ${OPSYS} == "SunOS" && !empty(PKGSRC_COMPILER:Mgcc)
-# This should probably be in hacks, but since clang hardcodes gcc paths
-# put this here so it can be removed when clang matures.
-# cxa_finalize.o is no longer necessary with libc.so >= ILLUMOS_0.5
-TEST_ILLUMOS_3849!=\
- if /usr/bin/elfdump -v /lib/libc.so | \
- ${GREP} -q 'ILLUMOS_0.5' ; then ${ECHO} 1; \
- else ${ECHO} 0; \
- fi
-
-#doesn't seem to be needed anymore, but may be dependent on
-#a recent version of solaris (illumos) ld.
-#
-#CFLAGS.SunOS+= -mimpure-text
-
-SUBST_CLASSES+= fix-paths
-SUBST_STAGE.fix-paths= pre-configure
-SUBST_MESSAGE.fix-paths= Fixing absolute gcc paths for SunOS.
-SUBST_FILES.fix-paths= tools/clang/lib/Driver/Tools.cpp
-. if defined(_GCC_ARCHDIR)
-SUBST_SED.fix-paths= -e 's,/usr/gcc/4.5/lib/gcc/,${_GCC_ARCHDIR}/,g'
-. else
-LIBGCCDIR!= ${CC} -print-libgcc-file-name
-ARCHDIR:= ${LIBGCCDIR:H}
-SUBST_SED.fix-paths= -e 's,/usr/gcc/4.5/lib/gcc/,${ARCHDIR}/,g'
-. endif
-SUBST_SED.fix-paths+= -e '/^.*i386.*getVendorName.*$$/{d;}'
-SUBST_SED.fix-paths+= -e '/^.*GCCLibPath +=$$/d'
-SUBST_SED.fix-paths+= -e 's,/4.5.2/amd64/,amd64/,g'
-SUBST_SED.fix-paths+= -e 's,"as","gas",g'
-. if exists(/usr/bin/ld)
-SUBST_SED.fix-paths+= -e 's,getToolChain().GetProgramPath("ld"),"/usr/bin/ld",g'
-. else
-SUBST_SED.fix-paths+= -e 's,getToolChain().GetProgramPath("ld"),"/usr/ccs/bin/ld",g'
-. endif
-. if ${TEST_ILLUMOS_3849}
-SUBST_SED.fix-paths+= -e 's,^.*cxa_finalize.*$$, ; //cxa_finalize.o,g'
-. endif
-.endif
+.include "../../mk/bsd.options.mk"
-# patch NetBSD::GetCXXStdlibType
-.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mgcc)
-SUBST_CLASSES+= libcxx
-SUBST_STAGE.libcxx= pre-configure
-SUBST_MESSAGE.libcxx= Patching toolchain to use libstdc++ as we're using GCC
-SUBST_FILES.libcxx= tools/clang/lib/Driver/ToolChains.cpp
-SUBST_SED.libcxx= -e 's,Major >= 7 || (Major == 6 && Minor == 99 && Micro >= 49) || Major == 0,false,'
+.if !empty(PKG_OPTIONS:Mtests)
+CMAKE_ARGS+= -DLLVM_INCLUDE_TESTS=ON
+CMAKE_ARGS+= -DCLANG_INCLUDE_TESTS=ON
+TEST_TARGET= clang-test
+TEST_ENV+= LD_LIBRARY_PATH=${WRKDIR}/build/lib
+.include "../../devel/googletest/buildlink3.mk"
+.else
+CMAKE_ARGS+= -DLLVM_INCLUDE_TESTS=OFF
+CMAKE_ARGS+= -DCLANG_INCLUDE_TESTS=OFF
.endif
post-extract:
- mv ${WRKDIR}/libcxx-${PKGVERSION_NOREV}.src ${WRKSRC}/projects/libcxx
- mv ${WRKDIR}/compiler-rt-${PKGVERSION_NOREV}.src ${WRKSRC}/projects/compiler-rt
- mv ${WRKDIR}/cfe-${PKGVERSION_NOREV}.src ${WRKSRC}/tools/clang
-.if ${OPSYS} == "SunOS"
- ${ECHO} "int sun_ld_needs_a_symbol=0;" >> ${WRKSRC}/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.cpp
-.endif
- mkdir ${WRKSRC}/${OBJDIR}
+ ${RUN} mkdir -p ${WRKDIR}/build
+.include "../../textproc/libxml2/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../lang/python/tool.mk"
+DEPENDS+= llvm-${PKGVERSION_NOREV}{,nb*}:../../lang/llvm
+.include "../../lang/llvm/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"