diff --git a/lang/ldc/Makefile b/lang/ldc/Makefile index 59900d46f38f..365ac3ffb781 100644 --- a/lang/ldc/Makefile +++ b/lang/ldc/Makefile @@ -1,61 +1,61 @@ PORTNAME= ldc PORTVERSION= 1.30.0 +DISTVERSIONSUFFIX= -src PORTREVISION= 1 CATEGORIES= lang MASTER_SITES= https://github.com/ldc-developers/${PORTNAME}/releases/download/v${DISTVERSION}/ -DISTVERSIONSUFFIX= -src MAINTAINER= acm@FreeBSD.org COMMENT= LLVM-based D compiler WWW= https://wiki.dlang.org/LDC LICENSE= BSD3CLAUSE BROKEN_armv6= fails to compile: Error: undefined identifier _jmp_buf, did you mean alias jmp_buf? BROKEN_armv7= fails to compile: Error: undefined identifier _jmp_buf, did you mean alias jmp_buf? BROKEN_i386= function core.bitop.bsf (uint v) is not callable using argument types (ulong) BROKEN_riscv64= fails to compile: unable to get target for 'riscv64-portbld-freebsd13.0', see -version and -mtriple. BUILD_DEPENDS= gdmd>0:devel/gdmd RUN_DEPENDS= llvm${_LLVM_VER}>0:devel/llvm${_LLVM_VER} LIB_DEPENDS= libconfig.so:devel/libconfig \ libgphobos.so:lang/gcc${_GCC_VER} \ libLLVM-${_LLVM_VER}.so:devel/llvm${_LLVM_VER} USES= ninja cmake:insource pkgconfig #USE_GITHUB= yes #GH_ACCOUNT= ldc-developers #GH_PROJECT= ldc USE_LDCONFIG= yes CC= ${LOCALBASE}/bin/clang${_LLVM_VER} CXX= ${LOCALBASE}/bin/clang++${_LLVM_VER} LLVM_CONFIG= ${LOCALBASE}/bin/llvm-config${_LLVM_VER} _GCC_VER= 11 _LLVM_VER= 13 .include .if ${ARCH} == "aarch64" || ${ARCH} == "amd64" CFLAGS+= -fPIC .endif CMAKE_ARGS+= -DLDC_INSTALL_PREFIX="${PREFIX}" \ -DD_COMPILER="${PREFIX}/bin/gdmd" \ -DCMAKE_C_COMPILER="${CC}" \ -DCMAKE_CXX_COMPILER="${CXX}" \ -DLLVM_CONFIG=${LLVM_CONFIG} \ -DBUILD_SHARED_LIBS="BOTH" \ -DBUILD_LTO_LIBS=ON post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ldc-build-runtime ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ldc-profdata ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ldc-prune-cache ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ldc2 ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ldmd2 .include diff --git a/lang/ldc/files/patch-driver_linker-gcc.cpp b/lang/ldc/files/patch-driver_linker-gcc.cpp index 563392761cad..0c56180f545a 100644 --- a/lang/ldc/files/patch-driver_linker-gcc.cpp +++ b/lang/ldc/files/patch-driver_linker-gcc.cpp @@ -1,11 +1,11 @@ ---- driver/linker-gcc.cpp 2020-06-16 16:15:55 UTC +--- driver/linker-gcc.cpp.orig 2022-07-20 17:05:27 UTC +++ driver/linker-gcc.cpp -@@ -647,6 +647,8 @@ void ArgsBuilder::addDefaultPlatformLibs() { - args.push_back("-ldl"); - // fallthrough +@@ -659,6 +659,8 @@ void ArgsBuilder::addDefaultPlatformLibs() { + case llvm::Triple::Darwin: + case llvm::Triple::MacOSX: case llvm::Triple::FreeBSD: + args.push_back("-lexecinfo"); // for static druntime + // fallthrough case llvm::Triple::NetBSD: case llvm::Triple::OpenBSD: case llvm::Triple::DragonFly: diff --git a/lang/ldc/files/patch-driver_targetmachine.cpp b/lang/ldc/files/patch-driver_targetmachine.cpp index daeba1879579..fe4b0af6193a 100644 --- a/lang/ldc/files/patch-driver_targetmachine.cpp +++ b/lang/ldc/files/patch-driver_targetmachine.cpp @@ -1,13 +1,13 @@ ---- driver/targetmachine.cpp 2020-06-16 18:15:55 UTC +--- driver/targetmachine.cpp.orig 2022-07-20 17:05:27 UTC +++ driver/targetmachine.cpp -@@ -444,6 +444,10 @@ createTargetMachine(const std::string targetTriple, co +@@ -431,6 +431,10 @@ createTargetMachine(const std::string targetTriple, co // these OSes. // On Android, PIC is default as well. relocModel = llvm::Reloc::PIC_; + } else if (triple.isOSFreeBSD()) { + // We default to PIC code to avoid linking issues on FreeBSD, especially + // on aarch64. + relocModel = llvm::Reloc::PIC_; } else { // ARM for other than Darwin or Android defaults to static switch (triple.getArch()) { diff --git a/lang/ldc/files/patch-runtime_CMakeLists.txt b/lang/ldc/files/patch-runtime_CMakeLists.txt index 2f7437b56157..7461ce6ca1af 100644 --- a/lang/ldc/files/patch-runtime_CMakeLists.txt +++ b/lang/ldc/files/patch-runtime_CMakeLists.txt @@ -1,11 +1,11 @@ ---- runtime/CMakeLists.txt 2022-07-20 12:05:27.000000000 -0500 -+++ runtime/CMakeLists.txt 2022-11-13 19:53:33.442980000 -0500 -@@ -123,6 +123,8 @@ +--- runtime/CMakeLists.txt.orig 2022-07-20 17:05:27 UTC ++++ runtime/CMakeLists.txt +@@ -123,6 +123,8 @@ if("${C_SYSTEM_LIBS}" STREQUAL "AUTO") set(C_SYSTEM_LIBS m c) elseif("${TARGET_SYSTEM}" MATCHES "Linux") set(C_SYSTEM_LIBS m pthread rt dl) + elseif("${TARGET_SYSTEM}" MATCHES "FreeBSD") + set(C_SYSTEM_LIBS m pthread execinfo z) else() set(C_SYSTEM_LIBS m pthread) endif()