Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion ports/lang/ldc/Makefile.DragonFly

This file was deleted.

4 changes: 1 addition & 3 deletions ports/lang/ldc/STATUS
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
PORT
Last attempt: 1.3.0
Last success:
DPORT
38 changes: 0 additions & 38 deletions ports/lang/ldc/dragonfly/patch-dmd2_root_port.c

This file was deleted.

173 changes: 173 additions & 0 deletions ports/lang/ldc/newport/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# $FreeBSD: head/lang/ldc/Makefile 499553 2019-04-21 18:11:40Z antoine $

PORTNAME= ldc
PORTVERSION= 1.18.0
DISTVERSIONPREFIX= v
CATEGORIES= lang

MAINTAINER= acm@FreeBSD.org
COMMENT= LLVM-based D compiler

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_powerpc64= fails to compile: cc1plus: error: unrecognized command line option "-std=c++11"

LIB_DEPENDS= libconfig.so:devel/libconfig

# Remarked out llvm flavors, and use one default instead
#FLAVORS= llvm80 llvm70 llvm60

USES= ninja cmake:insource compiler:c++14-lang dlang:bootstrap
USE_LDCONFIG= yes

CONFLICTS_INSTALL= ldc

OPTIONS_DEFINE= LTO BASH_COMPLETION DEBUG FORCE_BOOTSTRAP
OPTIONS_DEFAULT= LTO

FORCE_BOOTSTRAP_DESC= Override search for suitable bootstrap d-compiler
FORCE_BOOTSTRAP_BUILD_DEPENDS=${LOCALBASE}/ldc-ltsmaster/bin/ldmd2:lang/ldc-bootstrap

BASH_COMPLETION_DESC= install bash_completion files
BASH_COMPLETION_DEPENDS=libdata/pkgconfig/bash-completion.pc:shells/bash-completion

DEBUG_DESC= build with debug enabled
DEBUG_CMAKE_BOOL= CMAKE_VERBOSE_MAKEFILE
DEBUG_CMAKE_ON= -DCMAKE_BUILD_TYPE:STRING="RelWithDebInfo"

LTO_DESC= Enable link time optimization support
LTO_CMAKE_BOOL= BUILD_LTO_LIBS LDC_INSTALL_LTOPLUGIN

CMAKE_BUILD_TYPE= Release

PHOBOS_VERSION= 88

# To improve portability of the generated binaries, link the C++ standard library statically.
# Also don't use relax relocations for the C(++) parts of the default libraries in order to
# support older user binutils.
# Note: This build option is more memory intensive
.if exists(/usr/lib32/libc.so)
OPTIONS_DEFINE+= MULTILIB
OPTIONS_DEFAULT+= MULTILIB
MULTILIB_DESC= Build support for 32-bit and 64-bit targets
MULTILIB_CMAKE_BOOL= MULTILIB LDC_INSTALL_LLVM_RUNTIME_LIBS
MULTILIB_CMAKE_ON= -DCMAKE_EXE_LINKER_FLAGS="-static-libstdc++" \
-DRT_CFLAGS="-Wa,-mrelax-relocations=no"
.else
MULTILIB= "@comment "
.endif

OPTIONS_SUB= yes

# Remarked out llvm flavors, and use one default instead
#llvm60_PKGNAMEPREFIX= llvm60-
#llvm60_BUILD_DEPENDS= llvm60>0:devel/llvm60
#llvm60_RUN_DEPENDS= llvm60>0:devel/llvm60

#llvm70_PKGNAMEPREFIX= llvm70-
#llvm70_BUILD_DEPENDS= llvm70>0:devel/llvm70
#llvm70_RUN_DEPENDS= llvm70>0:devel/llvm70

#llvm80_PKGNAMEPREFIX= llvm80-
#llvm80_BUILD_DEPENDS= llvm80>0:devel/llvm80
#llvm80_RUN_DEPENDS= llvm80>0:devel/llvm80
BUILD_DEPENDS= llvm80>0:devel/llvm80
RUN_DEPENDS= llvm80>0:devel/llvm80

.if !defined({PREFIX)
PREFIX:= ${LOCALBASE}/${PKGNAMEPREFIX}${PORTNAME}
.endif

CMAKE_INSTALL_PREFIX= ${PREFIX}
PLIST_SUB+= LOCALBASE=${LOCALBASE} \
MULTILIB=${MULTILIB} \
PHOBOS_VERSION=${PHOBOS_VERSION} \
LLVM_LIB=${LLVM_LIB} \
FLAVOR=${FLAVOR}

USE_GITHUB= yes
GH_ACCOUNT= ldc-developers
GH_PROJECT= ldc
GH_TUPLE= ldc-developers:druntime:ad2324e:druntime/runtime/druntime \
ldc-developers:phobos:b60fda9:phobos/runtime/phobos

# fixes for LTO, gc-sections, backtrace
#PATCH_SITES= https://github.com/myfreeweb/ldc/commit/
#PATCHFILES= 3616870e9acbe565ff5b59db97482eda010dc00d.patch:-p1 \
# 120ed38cef179ec3774253bb424c159f7a566aa7.patch:-p1 \
# 573cb1456b1074bb4ab604a838658f30beb6a797.patch:-p1

# Use ldc-wrapper.sh to set LD_LIBRARY_PATH before calling the actual binary
# to solve the ldconfig issue which does not recognise libLLVM-X.so format
SUB_FILES= ldc-wrapper.sh
SUB_LIST= LLVM_PREFIX="${LOCALBASE}/llvm${LLVM_VER}" LDC_PREFIX="${PREFIX}" LDC_SUFFIX=".bin"

.include <bsd.port.pre.mk>

# Remarked out llvm flavors, and use one default instead
#.if ${FLAVOR} == "llvm60"
#LLVM_VER?= 60
#D_REQ_LLVM:= 60
#.elif ${FLAVOR} == "llvm70"
#LLVM_VER?= 70
#D_REQ_LLVM:= 70
#.elif ${FLAVOR} == "llvm80"
#LLVM_VER?= 80
#D_REQ_LLVM:= 80
#.endif
LLVM_VER?= 80
D_REQ_LLVM:= 80

.if !defined(LLVM_CONFIG)
LLVM_CONFIG:= ${LOCALBASE}/bin/llvm-config${LLVM_VER}
.endif

.if ${ARCH} == "amd64" || ${ARCH} == "aarch64"
CFLAGS+= -fPIC
.endif

.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031
EXTRA_PATCHES= ${PATCHDIR}/ino64-*
.endif

.if ${PORT_OPTIONS:MFORCE_BOOTSTRAP}
DCOMPILER_DMD= ${LOCALBASE}/ldc-ltsmaster/bin/ldmd2
.endif

.if defined(WITH_DEBUG) || ${PORT_OPTIONS:MDEBUG}
CMAKE_BUILD_TYPE= Debug
STRIP=no
.endif

CMAKE_ARGS+= -DD_COMPILER:PATH="${DCOMPILER_DMD}"
CMAKE_ARGS+= -DLDC_INSTALL_LLVM_RUNTIME_LIBS:BOOL=ON \
CMAKE_ARGS+= -DCMAKE_INSTALL_PREFIX:PATH="${PREFIX}"
CMAKE_ARGS+= -DCMAKE_C_COMPILER:PATH="${CC}"
CMAKE_ARGS+= -DCMAKE_CXX_COMPILER:PATH="${CXX}"
CMAKE_ARGS+= -DBUILD_SHARED_LIBS:STRING="BOTH"
CMAKE_ARGS+= -DLLVM_CONFIG:PATH=${LLVM_CONFIG}

post-patch:
@${REINPLACE_CMD} -e "s|%%LOCALBASE%%|${LOCALBASE}|" ${WRKSRC}/ldc2_install.conf.in

post-stage:
@${MKDIR} ${STAGEDIR}${D_INCLUDE_DIR}
@${MKDIR} ${STAGEDIR}${D_LIB_DIR}

post-install:
@${MKDIR} ${STAGEDIR}${LOCALBASE}/bin/
@${MV} ${STAGEDIR}${PREFIX}/bin/ldc2 ${STAGEDIR}${PREFIX}/bin/ldc2.bin
@${MV} ${STAGEDIR}${PREFIX}/bin/ldmd2 ${STAGEDIR}${PREFIX}/bin/ldmd2.bin
@${INSTALL_SCRIPT} ${WRKDIR}/ldc-wrapper.sh ${STAGEDIR}${PREFIX}/bin/ldc2
@${LN} -f ${STAGEDIR}${PREFIX}/bin/ldc2 ${STAGEDIR}${PREFIX}/bin/ldmd2

do-install-BASH_COMPLETION-on:
@${MKDIR} ${STAGEDIR}${D_INCLUDE_DIR}
@${MKDIR} ${STAGEDIR}${D_LIB_DIR}
@${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d/
@${CP} ${WRKSRC}/packaging/bash_completion.d/ldc2 ${STAGEDIR}/${PREFIX}/etc/bash_completion.d/ldc2

.include <bsd.port.post.mk>
8 changes: 8 additions & 0 deletions ports/lang/ldc/newport/Makefile.DragonFly
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#CMake Error at CMakeLists.txt:480 (add_executable):
# The install of the ldc2 target requires changing an RPATH from the build
# tree, but this is not supported with the Ninja generator unless on an
# ELF-based platform. The CMAKE_BUILD_WITH_INSTALL_RPATH variable may be set
# to avoid this relinking step.

#CMAKE_ARGS+= -DCMAKE_INSTALL_RPATH="${LOCALBASE}/llvm70/lib"
CMAKE_ARGS+= -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
13 changes: 13 additions & 0 deletions ports/lang/ldc/newport/distinfo
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
TIMESTAMP = 1574145223
SHA256 (ldc-developers-ldc-v1.18.0_GH0.tar.gz) = 6d357ad746fe75b9e8970419298b669168f438659c4911ffe4a6f7938bc769c6
SIZE (ldc-developers-ldc-v1.18.0_GH0.tar.gz) = 1770887
SHA256 (ldc-developers-druntime-ad2324e_GH0.tar.gz) = aa20d9ce664369d18d126ef86346023c704c295d8a5591b996f2572f577f2b7d
SIZE (ldc-developers-druntime-ad2324e_GH0.tar.gz) = 1786054
SHA256 (ldc-developers-phobos-b60fda9_GH0.tar.gz) = 60e7cda4b922a92c26e48361c91647647a1f6cefb5124004cfb7b250d9e66a83
SIZE (ldc-developers-phobos-b60fda9_GH0.tar.gz) = 2377016
SHA256 (3616870e9acbe565ff5b59db97482eda010dc00d.patch) = 0707adde9ca2bafd25e8c347e2fcc7d716a60eb30cfe3d8eec91c9c5f6a90dfc
SIZE (3616870e9acbe565ff5b59db97482eda010dc00d.patch) = 2515
SHA256 (120ed38cef179ec3774253bb424c159f7a566aa7.patch) = 545768390fe97dcb9a489c59af0db5a86ebea14b848a73630320d35895b2bd90
SIZE (120ed38cef179ec3774253bb424c159f7a566aa7.patch) = 2415
SHA256 (573cb1456b1074bb4ab604a838658f30beb6a797.patch) = 299cc893462af827623977be0517554311eff86933792ae7cd7d38e959e95c03
SIZE (573cb1456b1074bb4ab604a838658f30beb6a797.patch) = 1282
15 changes: 15 additions & 0 deletions ports/lang/ldc/newport/dragonfly/patch-druntime_dlfcn.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--- runtime/druntime/src/core/sys/dragonflybsd/dlfcn.d 2019-11-18 23:23:05.584916000 -0800
+++ runtime/druntime/src/core/sys/dragonflybsd/dlfcn.d 2019-11-18 23:24:01.974571000 -0800
@@ -90,8 +90,10 @@
/* XSI functions first. */
static assert(is(typeof(&dlclose) == __externC!(int, void*)));
static assert(is(typeof(&dlerror) == __externC!(char*)));
-static assert(is(typeof(&dlopen) == __externC!(void*, const char*, int)));
-static assert(is(typeof(&dlsym) == __externC!(void*, void*, const char*)));
+//static assert(is(typeof(&dlopen) == __externC!(void*, const char*, int)));
+static assert(is(typeof(&dlopen) == void* function(scope const(char*), int) nothrow @nogc));
+//static assert(is(typeof(&dlsym) == __externC!(void*, void*, const char*)));
+static assert(is(typeof(&dlsym) == void* function(void*, scope const(char*)) nothrow @nogc));

void* fdlopen(int, int);
int dladdr(const(void)*, Dl_info*);
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
--- runtime/druntime/src/core/sys/freebsd/sys/event.d 2019-02-15 17:20:40.000000000 +0000
+++ runtime/druntime/src/core/sys/freebsd/sys/event.d 2019-03-05 17:57:03.552667000 +0000
@@ -49,8 +49,9 @@
short filter; /* filter for event */
ushort flags;
uint fflags;
- intptr_t data;
- void *udata; /* opaque user data identifier */
+ long data;
+ void* udata; /* opaque user data identifier */
+ ulong[4] ext;
}

enum
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
--- runtime/druntime/src/core/sys/freebsd/sys/mount.d 2019-03-05 17:38:00.882617000 +0000
+++ runtime/druntime/src/core/sys/freebsd/sys/mount.d 2019-03-05 17:38:53.720464000 +0000
@@ -32,8 +32,8 @@
}

enum MFSNAMELEN = 16;
-enum MNAMELEN = 88;
-enum STATFS_VERSION = 0x20030518;
+enum MNAMELEN = 1024;
+enum STATFS_VERSION = 0x20140518;

struct statfs_t
{
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
--- runtime/druntime/src/core/sys/posix/sys/stat.d 2019-02-15 17:20:40.000000000 +0000
+++ runtime/druntime/src/core/sys/posix/sys/stat.d 2019-03-05 17:49:41.528876000 +0000
@@ -930,32 +930,41 @@

struct stat_t
{
- dev_t st_dev;
- ino_t st_ino;
- mode_t st_mode;
- nlink_t st_nlink;
- uid_t st_uid;
- gid_t st_gid;
- dev_t st_rdev;
+ dev_t st_dev;
+ ino_t st_ino;
+ nlink_t st_nlink;
+ mode_t st_mode;
+ short st_padding0;
+ uid_t st_uid;
+ gid_t st_gid;
+ int st_padding1;
+ dev_t st_rdev;

+ version(X86) int st_atim_ext;
time_t st_atime;
c_long __st_atimensec;
+
+ version(X86) int st_mtim_ext;
+
time_t st_mtime;
c_long __st_mtimensec;
+
+ version(X86) int st_ctim_ext;
+
time_t st_ctime;
c_long __st_ctimensec;

- off_t st_size;
- blkcnt_t st_blocks;
- blksize_t st_blksize;
- fflags_t st_flags;
- uint st_gen;
- int st_lspare;
+ version(X86) int st_btim_ext;

time_t st_birthtime;
c_long st_birthtimensec;

- ubyte[16 - timespec.sizeof] padding;
+ off_t st_size;
+ blkcnt_t st_blocks;
+ blksize_t st_blksize;
+ fflags_t st_flags;
+ ulong st_gen;
+ ulong[10] st_spare;
}

enum S_IRUSR = 0x100; // octal 0000400
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--- runtime/druntime/src/core/sys/posix/sys/types.d 2019-02-15 17:20:40.000000000 +0000
+++ runtime/druntime/src/core/sys/posix/sys/types.d 2019-03-05 17:51:58.972306000 +0000
@@ -145,14 +145,13 @@
}
else version (FreeBSD)
{
- // https://github.com/freebsd/freebsd/blob/master/sys/sys/_types.h
alias long blkcnt_t;
- alias uint blksize_t;
- alias uint dev_t;
+ alias ulong blksize_t;
+ alias ulong dev_t;
alias uint gid_t;
- alias uint ino_t;
+ alias ulong ino_t;
alias ushort mode_t;
- alias ushort nlink_t;
+ alias ulong nlink_t;
alias long off_t;
alias int pid_t;
//size_t (defined in core.stdc.stddef)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--- runtime/druntime/src/core/sys/posix/dirent.d.orig 2019-04-06 12:24:12.000000000 +0000
+++ runtime/druntime/src/core/sys/posix/dirent.d 2019-04-21 14:13:39.676998000 +0000
@@ -152,11 +152,13 @@
align(4)
struct dirent
{
- uint d_fileno;
+ ino_t d_fileno;
+ off_t d_off;
ushort d_reclen;
ubyte d_type;
- ubyte d_namlen;
- char[256] d_name = 0;
+ ushort d_namlen;
+ ushort d_pad1;
+ char[256] d_name;
}

alias void* DIR;
Loading