Changeset View
Changeset View
Standalone View
Standalone View
devel/mingw-w64-clang-rt/Makefile
# $FreeBSD$ | |||||
PORTNAME= mingw-w64-clang-rt | |||||
DISTVERSION= 9.0.1 | |||||
CATEGORIES= devel | |||||
MASTER_SITES= https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION}/ | |||||
PKGNAMESUFFIX= ${LLVM_SUFFIX} | |||||
DISTNAME= compiler-rt-${DISTVERSION}.src | |||||
MAINTAINER= theron@FreeBSD.org | |||||
COMMENT= MinGW-w64 Clang Compiler Runtime | |||||
BUILD_DEPENDS= llvm${LLVM_SUFFIX}=${DISTVERSION}:devel/llvm${LLVM_SUFFIX} \ | |||||
mingw-w64-clang-wrapper-llvm${LLVM_SUFFIX}>=0:devel/mingw-w64-clang-wrapper \ | |||||
mingw-w64-crt-llvm${LLVM_SUFFIX}>=0:devel/mingw-w64-crt | |||||
.include "${.CURDIR}/../llvm-devel/Makefile.LICENSE" | |||||
LICENSE+= LLVM2 | |||||
LICENSE_FILE_LLVM2= ${WRKSRC}/LICENSE.TXT | |||||
LICENSE_NAME_LLVM2= Apache License 2.0 with LLVM Exceptions | |||||
LICENSE_PERMS_LLVM2= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept | |||||
LICENSE:= ${LICENSE:NARM} | |||||
# Clang without LLVM doesn't have googletest, YAMLParser, OpenBSD Regex | |||||
.if "${LICENSE_FILE_BSD3CLAUSE}" == "${LICENSE_DIR}/utils/unittest/googletest/LICENSE.TXT" | |||||
LICENSE:= ${LICENSE:NBSD3CLAUSE} | |||||
.endif | |||||
.if "${LICENSE_FILE_MIT}" == "${LICENSE_DIR}/test/YAMLParser/LICENSE.txt" | |||||
LICENSE:= ${LICENSE:NMIT} | |||||
.endif | |||||
.if "${LICENSE_FILE_REGEX}" == "${LICENSE_DIR}/lib/Support/COPYRIGHT.regex" | |||||
LICENSE:= ${LICENSE:NREGEX} | |||||
.endif | |||||
LLVM_RELEASE= ${DISTVERSION:C/rc.*//} | |||||
LLVM_MAJOR= ${LLVM_RELEASE:C/\.[0-9]\.[0-9]$//} | |||||
LLVM_SUFFIX= ${LLVM_RELEASE:C/\.[0-9]$//:C/\.//} | |||||
USES= cmake tar:xz | |||||
PLIST_SUB+= LLVM_RELEASE=${LLVM_RELEASE} \ | |||||
LLVM_SUFFIX=${LLVM_SUFFIX} \ | |||||
LLVM_MAJOR=${LLVM_MAJOR} \ | |||||
LLVM=llvm${LLVM_SUFFIX} | |||||
.include "${.CURDIR}/../mingw-w64/defaults.mk" | |||||
# BUILD_DEPENDS will catch this anyway, but this explains what happened. | |||||
.if "${LLVM_SUFFIX}" != "${LLVM_VER}" | |||||
IGNORE= Maintainer error: Clang${LLVM_SUFFIX} LLVM${LLVM_VER} mismatched | |||||
.endif | |||||
.for arch in ${TOOLCHAIN_ARCHS} | |||||
target_${arch}= ${arch} | |||||
libarch_${arch}= ${target_${arch}} | |||||
.endfor | |||||
target_i686= i386 | |||||
libarch_armv7= arm | |||||
# Try to build in the case that ALL mingw-w64 ports are compiled with matching | |||||
# non-default prefix (This won't yield a working linker since llvm will still | |||||
# search for lib/windows/libclang_rt.builtins under its original PREFIX.) | |||||
.if "${PREFIX}" != "${LOCALBASE}" | |||||
MAKE_ENV+= PATH=${PATH}:${PREFIX}/bin | |||||
CONFIGURE_ENV+= PATH=${PATH}:${PREFIX}/bin | |||||
.endif | |||||
do-configure: | |||||
.for arch in ${TOOLCHAIN_ARCHS} | |||||
cd ${WRKSRC} && \ | |||||
${MKDIR} build-${arch} && cd build-${arch} && \ | |||||
${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} -GNinja \ | |||||
-DCMAKE_BUILD_TYPE=Release \ | |||||
-DCMAKE_SYSROOT="${PREFIX}/${arch}-w64-mingw32" \ | |||||
-DCMAKE_INSTALL_PREFIX="${PREFIX}/${arch}-w64-mingw32" \ | |||||
-DCMAKE_C_COMPILER=${arch}-w64-mingw32-clang \ | |||||
-DCMAKE_CXX_COMPILER=${arch}-w64-mingw32-clang++ \ | |||||
-DCMAKE_SYSTEM_NAME=Windows \ | |||||
-DCMAKE_AR=${PREFIX}/bin/${arch}-w64-mingw32-ar \ | |||||
-DCMAKE_RANLIB=${PREFIX}/bin/${arch}-w64-mingw32-ranlib \ | |||||
-DCMAKE_C_COMPILER_WORKS=1 \ | |||||
-DCMAKE_C_COMPILER_TARGET=${target_${arch}}-windows-gnu \ | |||||
-DLLVM_CONFIG_PATH="${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/llvm-config" \ | |||||
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \ | |||||
../lib/builtins | |||||
.endfor | |||||
do-build: | |||||
.for arch in ${TOOLCHAIN_ARCHS} | |||||
cd ${WRKSRC}/build-${arch} && \ | |||||
${DO_MAKE_BUILD} | |||||
.endfor | |||||
do-install: | |||||
.for arch in ${TOOLCHAIN_ARCHS} | |||||
${MKDIR} ${STAGEDIR}${PREFIX}/llvm${LLVM_SUFFIX}/lib/clang/${DISTVERSION}/lib/windows | |||||
${INSTALL_DATA} \ | |||||
${WRKSRC}/build-${arch}/lib/windows/libclang_rt.*-${target_${arch}}*.a \ | |||||
${STAGEDIR}${PREFIX}/llvm${LLVM_SUFFIX}/lib/clang/${DISTVERSION}/lib/windows/ | |||||
.if "${target_${arch}}" != "${libarch_${arch}}" | |||||
cd ${STAGEDIR}${PREFIX}/llvm${LLVM_SUFFIX}/lib/clang/${DISTVERSION}/lib/windows/ && \ | |||||
for f in libclang_rt.*-${target_${arch}}*.a; do \ | |||||
${MV} $$f $$(printf '%s' "$$f" | ${SED} s/${target_${arch}}/${libarch_${arch}}/) ; done | |||||
.endif | |||||
.endfor | |||||
.include "${.CURDIR}/../mingw-w64/plist-arch.mk" | |||||
.include <bsd.port.mk> |