This seems to be the way almost all Linux distributions and BSDs ship LLVM and is what Mesa expects. There are concerns this may cause issues if ports start linking it, hopefully this won't happen as everything links libLLVM-X.Y.so where X.Y is the branch version which will have the same ABI throughout X.Y.Z releases. The rust port explicitly links statically even if shared libLLVM is available. Patch cmake files in a similiar way to a patch in NetBSD pkgsrc to correct symbols not getting added to the shared library on OpenBSD. Use the documented cmake var for RTTI while here. ok brad (MAINTAINER) sthen@ bcallah@
126 lines
3.6 KiB
Makefile
126 lines
3.6 KiB
Makefile
# $OpenBSD: Makefile,v 1.173 2018/03/09 03:01:22 jsg Exp $
|
|
|
|
# XXX: Remember to bump MODCLANG_VERSION in lang/clang/clang.port.mk when
|
|
# updating this port.
|
|
|
|
# XXX If broken on an architecture, remove the arch from LLVM_ARCHS.
|
|
ONLY_FOR_ARCHS = ${LLVM_ARCHS}
|
|
BROKEN-powerpc = relocation truncated to fit: R_PPC_PLTREL24
|
|
|
|
DPB_PROPERTIES = parallel
|
|
|
|
MULTI_PACKAGES = -main -python
|
|
COMMENT-main = modular, fast C/C++/ObjC compiler, static analyzer and tools
|
|
COMMENT-python = Python bindings for Clang
|
|
|
|
LLVM_V = 5.0.1
|
|
DISTNAME = llvm-${LLVM_V}.src
|
|
PKGNAME = llvm-${LLVM_V}
|
|
PKGNAME-main = llvm-${LLVM_V}
|
|
PKGNAME-python = py-llvm-${LLVM_V}
|
|
REVISION-main = 2
|
|
CATEGORIES = devel
|
|
DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \
|
|
cfe-${LLVM_V}.src${EXTRACT_SUFX} \
|
|
lld-${LLVM_V}.src${EXTRACT_SUFX}
|
|
MASTER_SITES = https://www.llvm.org/releases/${LLVM_V}/
|
|
EXTRACT_SUFX = .tar.xz
|
|
|
|
SHARED_LIBS = clang 6.0 \
|
|
LTO 3.0
|
|
|
|
# packager notes in http://llvm.org/docs/Packaging.html
|
|
HOMEPAGE = http://www.llvm.org/
|
|
|
|
MAINTAINER= Brad Smith <brad@comstyle.com>
|
|
|
|
# BSD
|
|
PERMIT_PACKAGE_CDROM = Yes
|
|
|
|
WANTLIB = ${COMPILER_LIBCXX} c m pthread z
|
|
|
|
MODULES = devel/cmake \
|
|
lang/python
|
|
|
|
COMPILER = base-clang ports-gcc
|
|
|
|
TEST_DEPENDS = devel/dejagnu \
|
|
shells/bash
|
|
BUILD_DEPENDS += textproc/py-sphinx
|
|
RUN_DEPENDS += devel/gtest
|
|
|
|
# clang python module loads libclang.so dynamically with cdll.LoadLibrary()
|
|
WANTLIB-python = clang
|
|
RUN_DEPENDS-python = ${MODPY_RUN_DEPENDS}
|
|
LIB_DEPENDS-python = ${BUILD_PKGPATH},-main
|
|
|
|
SEPARATE_BUILD = Yes
|
|
CONFIGURE_ARGS = -DLLVM_ENABLE_FFI:Bool=False \
|
|
-DLLVM_ENABLE_TERMINFO:Bool=False \
|
|
-DLLVM_ENABLE_RTTI:Bool=True \
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \
|
|
-DLLVM_LINK_LLVM_DYLIB:Bool=True \
|
|
-DLLVM_BUILD_LLVM_DYLIB:Bool=True \
|
|
-DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND \
|
|
-DBacktrace_LIBRARY=''
|
|
|
|
# Workaround relocation overflow
|
|
#
|
|
# Have the build disable PIE to workaround breakage that was
|
|
# introduced when PIE was enabled
|
|
.if ${MACHINE_ARCH} == "powerpc"
|
|
CFLAGS += -mlongcall
|
|
CXXFLAGS += -mlongcall
|
|
CONFIGURE_ARGS += -DCMAKE_EXE_LINKER_FLAGS="-nopie"
|
|
CONFIGURE_ARGS += -DCMAKE_SHARED_LINKER_FLAGS="-nopie"
|
|
.elif ${MACHINE_ARCH} == "arm"
|
|
CFLAGS += -mlong-calls
|
|
CXXFLAGS += -mlong-calls
|
|
.endif
|
|
|
|
TEST_TARGET = check
|
|
|
|
# XXX sync
|
|
GCC_VER = 4.9.4
|
|
.if ${MACHINE_ARCH} == "amd64"
|
|
GCC_CONFIG = x86_64-unknown-openbsd${OSREV}
|
|
.else
|
|
GCC_CONFIG = ${MACHINE_ARCH}-unknown-openbsd${OSREV}
|
|
.endif
|
|
CLANG_INCLUDE_PATH = lib/clang/${LLVM_V}/include
|
|
SUBST_VARS += CLANG_INCLUDE_PATH LLVM_V GCC_VER GCC_CONFIG
|
|
|
|
post-extract:
|
|
mv ${WRKDIR}/cfe-${LLVM_V}.src ${WRKSRC}/tools/clang
|
|
mv ${WRKDIR}/lld-${LLVM_V}.src ${WRKSRC}/tools/lld
|
|
|
|
pre-configure:
|
|
@${SUBST_CMD} ${WRKSRC}/tools/clang/lib/Driver/ToolChains/OpenBSD.cpp
|
|
-@ln -s ${MODPY_BIN} ${WRKDIR}/bin/python
|
|
|
|
post-build:
|
|
cd ${WRKSRC}/docs && make -f Makefile.sphinx man
|
|
cd ${WRKSRC}/tools/clang/docs && make -f Makefile.sphinx man
|
|
|
|
post-install:
|
|
${INSTALL_DATA_DIR} \
|
|
${PREFIX}/lib/python${MODPY_VERSION}/site-packages/clang
|
|
${INSTALL_DATA} ${WRKSRC}/tools/clang/bindings/python/clang/* \
|
|
${PREFIX}/lib/python${MODPY_VERSION}/site-packages/clang
|
|
${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
|
|
${PREFIX}/lib/python${MODPY_VERSION}/site-packages/clang
|
|
${INSTALL_DATA} ${WRKSRC}/docs/_build/man/* \
|
|
${PREFIX}/man/man1
|
|
${INSTALL_DATA} ${WRKSRC}/tools/clang/docs/_build/man/clang.1 \
|
|
${PREFIX}/man/man1
|
|
# lit and FileCheck are not installed
|
|
@rm ${PREFIX}/man/man1/lit.1
|
|
@rm ${PREFIX}/man/man1/FileCheck.1
|
|
|
|
.include <bsd.port.mk>
|
|
|
|
.if ${CHOSEN_COMPILER} == "ports-gcc"
|
|
TEST_DEPENDS += lang/gcc/${MODGCC4_VERSION},-c++
|
|
RUN_DEPENDS += lang/gcc/${MODGCC4_VERSION},-c++
|
|
.endif
|