From 109fe9d919a513e4421a1b25cf3b6f3dd93e71b2 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Fri, 13 Sep 2019 02:09:36 +0200 Subject: [PATCH 1/3] LDC: Upgrade to v1.18.0-beta1 --- packages/ldc/build.sh | 50 +++--- packages/ldc/ldc-cmake-fix.patch | 70 ++++++++ packages/ldc/ldc-druntime-fix.patch | 26 +++ packages/ldc/ldc-druntime-link-symbols.patch | 30 ---- packages/ldc/ldc-druntime-unistd.patch | 170 ------------------- packages/ldc/ldc-linker-flags.patch | 14 -- packages/ldc/ldc-tools-utils-bugs.patch | 19 --- packages/ldc/llvm-config.in | 4 +- 8 files changed, 122 insertions(+), 261 deletions(-) create mode 100644 packages/ldc/ldc-cmake-fix.patch create mode 100644 packages/ldc/ldc-druntime-fix.patch delete mode 100644 packages/ldc/ldc-druntime-link-symbols.patch delete mode 100644 packages/ldc/ldc-druntime-unistd.patch delete mode 100644 packages/ldc/ldc-linker-flags.patch delete mode 100644 packages/ldc/ldc-tools-utils-bugs.patch diff --git a/packages/ldc/build.sh b/packages/ldc/build.sh index 761c72c8f..61ea8f51d 100644 --- a/packages/ldc/build.sh +++ b/packages/ldc/build.sh @@ -4,22 +4,22 @@ TERMUX_PKG_HOMEPAGE=https://github.com/ldc-developers/ldc TERMUX_PKG_DESCRIPTION="D programming language compiler, built with LLVM" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=() -TERMUX_PKG_VERSION+=(1.17.0) +TERMUX_PKG_VERSION+=(1.18.0-beta1) TERMUX_PKG_VERSION+=(8.0.1) # LLVM version -TERMUX_PKG_VERSION+=(2.087.1) # TOOLS version -TERMUX_PKG_VERSION+=(1.16.0) # DUB version -TERMUX_PKG_REVISION=4 +TERMUX_PKG_VERSION+=(2.088.0) # TOOLS version +TERMUX_PKG_VERSION+=(8ffc09ed6fb9625837161ffbbda2d926f490196c) # DUB version +TERMUX_PKG_REVISION=5 TERMUX_PKG_SRCURL=(https://github.com/ldc-developers/ldc/releases/download/v${TERMUX_PKG_VERSION}/ldc-${TERMUX_PKG_VERSION}-src.tar.gz https://github.com/ldc-developers/llvm/releases/download/ldc-v${TERMUX_PKG_VERSION[1]}/llvm-${TERMUX_PKG_VERSION[1]}.src.tar.xz https://github.com/dlang/tools/archive/v${TERMUX_PKG_VERSION[2]}.tar.gz - https://github.com/dlang/dub/archive/v${TERMUX_PKG_VERSION[3]}.tar.gz + https://github.com/dlang/dub/archive/${TERMUX_PKG_VERSION[3]}.tar.gz https://github.com/ldc-developers/ldc/releases/download/v${TERMUX_PKG_VERSION}/ldc2-${TERMUX_PKG_VERSION}-linux-x86_64.tar.xz) -TERMUX_PKG_SHA256=(6a2fa91a53d954361832591488241c92adb497842069077425d73c9b9d2c4fa9 +TERMUX_PKG_SHA256=(7bfa87a325f0c2202ec4dc6bd50ea56ebe30049ff06f6a630c63b6a33a9cafcc af469483241e90366f910af32ca3a23e878ad8d2f29c0518811da19e1b6f4454 - a7cb8b217f2841f1ebe513ac5090d6ef77e03dc72bf2047bf92632c263941810 - f4291dc053864b81c10dc1e9f9220aee3d4ce7ef735ecdb70de9ecbf6e0aaa5b - 715adbdd614edf926d5f53bb9f8bfa34d0c828aa40077cb627ce064955fd641d) + b21d4ab4750d671351f4307660b798a27922e7b0d8982ca5680918863a9970fe + e11c4b171c0d26f4d85216aabb1e03d289a5551eda4e2c1bd7b70cf2ca57fd6a + d58524bdddacfe336371328a6888b4a9108e32c144aab2824de37ce9e9fbc6e4) TERMUX_PKG_DEPENDS="clang, libc++, zlib" TERMUX_PKG_NO_STATICSPLIT=true TERMUX_PKG_HOSTBUILD=true @@ -50,7 +50,7 @@ termux_step_post_extract_package() { mv tools-${TERMUX_PKG_VERSION[2]} dlang-tools mv dub-${TERMUX_PKG_VERSION[3]} dub - export LLVM_TRIPLE=${TERMUX_HOST_PLATFORM/-/--} + LLVM_TRIPLE=${TERMUX_HOST_PLATFORM/-/--} if [ $TERMUX_ARCH = arm ]; then LLVM_TRIPLE=${LLVM_TRIPLE/arm-/armv7a-}; fi sed $TERMUX_PKG_BUILDER_DIR/llvm-config.in \ -e "s|@LLVM_VERSION@|${TERMUX_PKG_VERSION[1]}|g" \ @@ -126,14 +126,16 @@ termux_step_post_configure() { TERMUX_PKG_BUILDDIR=$OLD_TERMUX_PKG_BUILDDIR cd "$TERMUX_PKG_BUILDDIR" - export LDC_FLAGS="-mtriple=$LLVM_TRIPLE" + LDC_FLAGS="-mtriple=$LLVM_TRIPLE" if [ $TERMUX_ARCH = arm ]; then LDC_FLAGS="$LDC_FLAGS;-mcpu=cortex-a8"; fi - export LDC_PATH=$TERMUX_PKG_SRCDIR/ldc2-$TERMUX_PKG_VERSION-linux-x86_64 + LDC_PATH=$TERMUX_PKG_SRCDIR/ldc2-$TERMUX_PKG_VERSION-linux-x86_64 + DMD=$LDC_PATH/bin/ldmd2 TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DLLVM_ROOT_DIR=$LLVM_INSTALL_DIR \ - -DD_COMPILER=$LDC_PATH/bin/ldmd2 \ - -DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX" + -DD_COMPILER=$DMD \ + -DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX \ + -DD_LINKER_ARGS='-fuse-ld=bfd;-Lldc-build-runtime.tmp/lib;-lphobos2-ldc;-ldruntime-ldc;-Wl,--gc-sections'" termux_step_configure_cmake } @@ -144,7 +146,7 @@ termux_step_make() { --dFlags="$LDC_FLAGS" --cFlags="$CFLAGS -I$TERMUX_PREFIX/include" \ --targetSystem="Android;Linux;UNIX" --ldcSrcDir="$TERMUX_PKG_SRCDIR" - # Set up ldmd2 for cross-compilation + # Set up host ldmd2 for cross-compilation export DFLAGS="${LDC_FLAGS//;/ }" # Cross-compile LDC executables (linked against runtime libs above) @@ -154,21 +156,17 @@ termux_step_make() { # Cross-compile dlang tools and dub: - DMD=$LDC_PATH/bin/ldmd2 - D_LDFLAGS="-fuse-ld=bfd -L$TERMUX_PKG_BUILDDIR/ldc-build-runtime.tmp/lib -lphobos2-ldc -ldruntime-ldc -Wl,--gc-sections -ldl -lm -fPIE -pie -Wl,-z,nocopyreloc ${LDFLAGS}" - if [ $TERMUX_ARCH = arm ]; then D_LDFLAGS="$D_LDFLAGS -Wl,--fix-cortex-a8"; fi + # Set up host ldmd2 for cross-compilation & -linking + export DFLAGS="$DFLAGS -linker=bfd -L-L$TERMUX_PKG_BUILDDIR/ldc-build-runtime.tmp/lib -Xcc=-pie -L-z -Lnocopyreloc" + if [ $TERMUX_ARCH = arm ]; then export DFLAGS="$DFLAGS -L--fix-cortex-a8"; fi cd $TERMUX_PKG_SRCDIR/dlang-tools - $DMD -w -de -c rdmd.d -of=$TERMUX_PKG_BUILDDIR/bin/rdmd.o - $DMD -w -de -c ddemangle.d -of=$TERMUX_PKG_BUILDDIR/bin/ddemangle.o - $DMD -w -de -c DustMite/dustmite.d DustMite/splitter.d -of=$TERMUX_PKG_BUILDDIR/bin/dustmite.o - $CC $TERMUX_PKG_BUILDDIR/bin/rdmd.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/rdmd - $CC $TERMUX_PKG_BUILDDIR/bin/ddemangle.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/ddemangle - $CC $TERMUX_PKG_BUILDDIR/bin/dustmite.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/dustmite + $DMD -w -de rdmd.d -of=$TERMUX_PKG_BUILDDIR/bin/rdmd + $DMD -w -de ddemangle.d -of=$TERMUX_PKG_BUILDDIR/bin/ddemangle + $DMD -w -de DustMite/dustmite.d DustMite/splitter.d -of=$TERMUX_PKG_BUILDDIR/bin/dustmite cd $TERMUX_PKG_SRCDIR/dub - $DMD -O -w -version=DubUseCurl -version=DubApplication -Isource -c @build-files.txt -of=$TERMUX_PKG_BUILDDIR/bin/dub.o - $CC $TERMUX_PKG_BUILDDIR/bin/dub.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/dub + $DMD -O -w -version=DubUseCurl -version=DubApplication -Isource @build-files.txt -of=$TERMUX_PKG_BUILDDIR/bin/dub } termux_step_make_install() { diff --git a/packages/ldc/ldc-cmake-fix.patch b/packages/ldc/ldc-cmake-fix.patch new file mode 100644 index 000000000..9f6b8ba1b --- /dev/null +++ b/packages/ldc/ldc-cmake-fix.patch @@ -0,0 +1,70 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a9cd81983..b7700a7d2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -562,6 +562,16 @@ add_custom_target(${LDMD_EXE} ALL DEPENDS ${LDMD_EXE_FULL}) + # Figure out how to link the main LDC executable, for which we need to take the + # LLVM flags into account. + set(LDC_LINKERFLAG_LIST ${SANITIZE_LDFLAGS} ${LLVM_LIBRARIES} ${LLVM_LDFLAGS}) ++if(MSVC) ++ # Issue 1297 – set LDC's stack to 8 MiB like on Linux and Mac (default: 1 MiB). ++ list(APPEND LDC_LINKERFLAG_LIST "/STACK:8388608") ++ # VS 2017+: Use undocumented /NOOPTTLS MS linker switch to keep on emitting ++ # a .tls section. Required for older host druntime versions, otherwise the ++ # GC TLS ranges are garbage starting with VS 2017 Update 15.3. ++ if(MSVC_VERSION GREATER 1900) # VS 2017+ ++ list(APPEND LDC_LINKERFLAG_LIST "/NOOPTTLS") ++ endif() ++endif() + if(LDC_WITH_LLD) + # ELF, Mach-O, MinGW and WebAssembly formats supported since LLD 6.0.0, otherwise just Windows COFF + if(NOT (LDC_LLVM_VER LESS 600)) +@@ -615,9 +625,11 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan + # we manually invoke the linker instead of using the D compiler to do so. + set(LDC_LINK_MANUALLY ON) + +- include(ExtractDMDSystemLinker) +- message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}") +- message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}") ++ if(NOT DEFINED D_LINKER_ARGS) ++ include(ExtractDMDSystemLinker) ++ message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}") ++ message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}") ++ endif() + list(APPEND LDC_LINKERFLAG_LIST ${D_LINKER_ARGS}) + + if(NOT "${CMAKE_EXE_LINKER_FLAGS}" STREQUAL "") +@@ -625,23 +637,11 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan + list(APPEND LDC_LINKERFLAG_LIST ${flags}) + endif() + else() +- # Use D compiler for linking, trying to translate a few common linker flags. ++ # use D compiler for linking + set(LDC_TRANSLATED_LINKER_FLAGS "") + foreach(f ${LDC_LINKERFLAG_LIST}) +- string(REPLACE "-LIBPATH:" "/LIBPATH:" f ${f}) + list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L${f}") + endforeach() +- +- if(MSVC) +- # Issue 1297 – set LDC's stack to 8 MiB like on Linux and Mac (default: 1 MiB). +- list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L/STACK:8388608") +- # VS 2017+: Use undocumented /NOOPTTLS MS linker switch to keep on emitting +- # a .tls section. Required for older host druntime versions, otherwise the +- # GC TLS ranges are garbage starting with VS 2017 Update 15.3. +- if(MSVC_VERSION GREATER 1900) # VS 2017+ +- list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L/NOOPTTLS") +- endif() +- endif() + endif() + + # CONFIG generator expressions need to be repeated due to https://cmake.org/Bug/view.php?id=14353 +@@ -838,7 +838,7 @@ endif() + # + # Auxiliary build and test utils. + # +-add_subdirectory(utils) ++#add_subdirectory(utils) + + # + # Auxiliary tools. diff --git a/packages/ldc/ldc-druntime-fix.patch b/packages/ldc/ldc-druntime-fix.patch new file mode 100644 index 000000000..bb5a2450c --- /dev/null +++ b/packages/ldc/ldc-druntime-fix.patch @@ -0,0 +1,26 @@ +diff --git a/src/core/runtime.d b/src/core/runtime.d +index 03103daa..fd185816 100644 +--- a/src/core/runtime.d ++++ b/runtime/druntime/src/core/runtime.d +@@ -799,7 +799,8 @@ unittest + } + + /// Default implementation for POSIX systems +-version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo ++version (CRuntime_Bionic) { /* no backtrace[_symbols] */ } ++else version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo + { + // backtrace + version (CRuntime_Glibc) +@@ -825,7 +826,10 @@ version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo + { + version (LDC) + { +- numframes = backtrace( callstack.ptr, MAXFRAMES ); ++ static if ( __traits( compiles, backtrace ) ) ++ numframes = backtrace( callstack.ptr, MAXFRAMES ); ++ else ++ numframes = 0; + } + else + { diff --git a/packages/ldc/ldc-druntime-link-symbols.patch b/packages/ldc/ldc-druntime-link-symbols.patch deleted file mode 100644 index 6c73f141d..000000000 --- a/packages/ldc/ldc-druntime-link-symbols.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d -index 33644151..34a2ae5e 100644 ---- a/src/rt/sections_android.d -+++ b/runtime/druntime/src/rt/sections_android.d -@@ -76,7 +76,11 @@ void initSections() nothrow @nogc - _sections.moduleGroup = ModuleGroup(mbeg[0 .. mend - mbeg]); - - auto pbeg = cast(void*)&_tlsend; -- auto pend = cast(void*)&__bss_end__; -+ version(X86) auto pend = cast(void*)&_end; -+ else version(X86_64) auto pend = cast(void*)& _end; -+ else version(ARM) auto pend = cast(void*)& __bss_end__; -+ else version(AArch64) auto pend = cast(void*)& __bss_end__; -+ else static assert( false, "Android architecture not supported." ); - // _tlsend is a 32-bit int and may not be 64-bit void*-aligned, so align pbeg. - version (D_LP64) pbeg = cast(void*)(cast(size_t)(pbeg + 7) & ~cast(size_t)7); - _sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; -@@ -180,7 +184,11 @@ extern(C) - void* __stop_minfo; - } - -- size_t __bss_end__; -+ version(X86) size_t _end; -+ else version(X86_64) size_t _end; -+ else version(ARM) size_t __bss_end__; -+ else version(AArch64) size_t __bss_end__; -+ else static assert( false, "Android architecture not supported." ); - - int _tlsstart; - int _tlsend; diff --git a/packages/ldc/ldc-druntime-unistd.patch b/packages/ldc/ldc-druntime-unistd.patch deleted file mode 100644 index de437c291..000000000 --- a/packages/ldc/ldc-druntime-unistd.patch +++ /dev/null @@ -1,170 +0,0 @@ -diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d -index 04de7764..418d63d4 100644 ---- a/src/core/sys/posix/unistd.d -+++ b/runtime/druntime/src/core/sys/posix/unistd.d -@@ -1342,9 +1342,162 @@ else version (CRuntime_Bionic) - enum W_OK = 2; - enum X_OK = 1; - -- enum _SC_PAGESIZE = 0x0027; -- enum _SC_NPROCESSORS_ONLN = 0x0061; -- enum _SC_THREAD_STACK_MIN = 0x004c; -+ enum -+ { -+ _SC_ARG_MAX = 0x0000, -+ _SC_BC_BASE_MAX = 0x0001, -+ _SC_BC_DIM_MAX = 0x0002, -+ _SC_BC_SCALE_MAX = 0x0003, -+ _SC_BC_STRING_MAX = 0x0004, -+ _SC_CHILD_MAX = 0x0005, -+ _SC_CLK_TCK = 0x0006, -+ _SC_COLL_WEIGHTS_MAX = 0x0007, -+ _SC_EXPR_NEST_MAX = 0x0008, -+ _SC_LINE_MAX = 0x0009, -+ _SC_NGROUPS_MAX = 0x000a, -+ _SC_OPEN_MAX = 0x000b, -+ _SC_PASS_MAX = 0x000c, -+ _SC_2_C_BIND = 0x000d, -+ _SC_2_C_DEV = 0x000e, -+ _SC_2_C_VERSION = 0x000f, -+ _SC_2_CHAR_TERM = 0x0010, -+ _SC_2_FORT_DEV = 0x0011, -+ _SC_2_FORT_RUN = 0x0012, -+ _SC_2_LOCALEDEF = 0x0013, -+ _SC_2_SW_DEV = 0x0014, -+ _SC_2_UPE = 0x0015, -+ _SC_2_VERSION = 0x0016, -+ _SC_JOB_CONTROL = 0x0017, -+ _SC_SAVED_IDS = 0x0018, -+ _SC_VERSION = 0x0019, -+ _SC_RE_DUP_MAX = 0x001a, -+ _SC_STREAM_MAX = 0x001b, -+ _SC_TZNAME_MAX = 0x001c, -+ _SC_XOPEN_CRYPT = 0x001d, -+ _SC_XOPEN_ENH_I18N = 0x001e, -+ _SC_XOPEN_SHM = 0x001f, -+ _SC_XOPEN_VERSION = 0x0020, -+ _SC_XOPEN_XCU_VERSION = 0x0021, -+ _SC_XOPEN_REALTIME = 0x0022, -+ _SC_XOPEN_REALTIME_THREADS = 0x0023, -+ _SC_XOPEN_LEGACY = 0x0024, -+ _SC_ATEXIT_MAX = 0x0025, -+ _SC_IOV_MAX = 0x0026, -+ _SC_UIO_MAXIOV = _SC_IOV_MAX, -+ _SC_PAGESIZE = 0x0027, -+ _SC_PAGE_SIZE = 0x0028, -+ _SC_XOPEN_UNIX = 0x0029, -+ _SC_XBS5_ILP32_OFF32 = 0x002a, -+ _SC_XBS5_ILP32_OFFBIG = 0x002b, -+ _SC_XBS5_LP64_OFF64 = 0x002c, -+ _SC_XBS5_LPBIG_OFFBIG = 0x002d, -+ _SC_AIO_LISTIO_MAX = 0x002e, -+ _SC_AIO_MAX = 0x002f, -+ _SC_AIO_PRIO_DELTA_MAX = 0x0030, -+ _SC_DELAYTIMER_MAX = 0x0031, -+ _SC_MQ_OPEN_MAX = 0x0032, -+ _SC_MQ_PRIO_MAX = 0x0033, -+ _SC_RTSIG_MAX = 0x0034, -+ _SC_SEM_NSEMS_MAX = 0x0035, -+ _SC_SEM_VALUE_MAX = 0x0036, -+ _SC_SIGQUEUE_MAX = 0x0037, -+ _SC_TIMER_MAX = 0x0038, -+ _SC_ASYNCHRONOUS_IO = 0x0039, -+ _SC_FSYNC = 0x003a, -+ _SC_MAPPED_FILES = 0x003b, -+ _SC_MEMLOCK = 0x003c, -+ _SC_MEMLOCK_RANGE = 0x003d, -+ _SC_MEMORY_PROTECTION = 0x003e, -+ _SC_MESSAGE_PASSING = 0x003f, -+ _SC_PRIORITIZED_IO = 0x0040, -+ _SC_PRIORITY_SCHEDULING = 0x0041, -+ _SC_REALTIME_SIGNALS = 0x0042, -+ _SC_SEMAPHORES = 0x0043, -+ _SC_SHARED_MEMORY_OBJECTS = 0x0044, -+ _SC_SYNCHRONIZED_IO = 0x0045, -+ _SC_TIMERS = 0x0046, -+ _SC_GETGR_R_SIZE_MAX = 0x0047, -+ _SC_GETPW_R_SIZE_MAX = 0x0048, -+ _SC_LOGIN_NAME_MAX = 0x0049, -+ _SC_THREAD_DESTRUCTOR_ITERATIONS = 0x004a, -+ _SC_THREAD_KEYS_MAX = 0x004b, -+ _SC_THREAD_STACK_MIN = 0x004c, -+ _SC_THREAD_THREADS_MAX = 0x004d, -+ _SC_TTY_NAME_MAX = 0x004e, -+ -+ _SC_THREADS = 0x004f, -+ _SC_THREAD_ATTR_STACKADDR = 0x0050, -+ _SC_THREAD_ATTR_STACKSIZE = 0x0051, -+ _SC_THREAD_PRIORITY_SCHEDULING = 0x0052, -+ _SC_THREAD_PRIO_INHERIT = 0x0053, -+ _SC_THREAD_PRIO_PROTECT = 0x0054, -+ _SC_THREAD_SAFE_FUNCTIONS = 0x0055, -+ -+ _SC_NPROCESSORS_CONF = 0x0060, -+ _SC_NPROCESSORS_ONLN = 0x0061, -+ _SC_PHYS_PAGES = 0x0062, -+ _SC_AVPHYS_PAGES = 0x0063, -+ _SC_MONOTONIC_CLOCK = 0x0064, -+ -+ _SC_2_PBS = 0x0065, -+ _SC_2_PBS_ACCOUNTING = 0x0066, -+ _SC_2_PBS_CHECKPOINT = 0x0067, -+ _SC_2_PBS_LOCATE = 0x0068, -+ _SC_2_PBS_MESSAGE = 0x0069, -+ _SC_2_PBS_TRACK = 0x006a, -+ _SC_ADVISORY_INFO = 0x006b, -+ _SC_BARRIERS = 0x006c, -+ _SC_CLOCK_SELECTION = 0x006d, -+ _SC_CPUTIME = 0x006e, -+ _SC_HOST_NAME_MAX = 0x006f, -+ _SC_IPV6 = 0x0070, -+ _SC_RAW_SOCKETS = 0x0071, -+ _SC_READER_WRITER_LOCKS = 0x0072, -+ _SC_REGEXP = 0x0073, -+ _SC_SHELL = 0x0074, -+ _SC_SPAWN = 0x0075, -+ _SC_SPIN_LOCKS = 0x0076, -+ _SC_SPORADIC_SERVER = 0x0077, -+ _SC_SS_REPL_MAX = 0x0078, -+ _SC_SYMLOOP_MAX = 0x0079, -+ _SC_THREAD_CPUTIME = 0x007a, -+ _SC_THREAD_PROCESS_SHARED = 0x007b, -+ _SC_THREAD_ROBUST_PRIO_INHERIT = 0x007c, -+ _SC_THREAD_ROBUST_PRIO_PROTECT = 0x007d, -+ _SC_THREAD_SPORADIC_SERVER = 0x007e, -+ _SC_TIMEOUTS = 0x007f, -+ _SC_TRACE = 0x0080, -+ _SC_TRACE_EVENT_FILTER = 0x0081, -+ _SC_TRACE_EVENT_NAME_MAX = 0x0082, -+ _SC_TRACE_INHERIT = 0x0083, -+ _SC_TRACE_LOG = 0x0084, -+ _SC_TRACE_NAME_MAX = 0x0085, -+ _SC_TRACE_SYS_MAX = 0x0086, -+ _SC_TRACE_USER_EVENT_MAX = 0x0087, -+ _SC_TYPED_MEMORY_OBJECTS = 0x0088, -+ _SC_V7_ILP32_OFF32 = 0x0089, -+ _SC_V7_ILP32_OFFBIG = 0x008a, -+ _SC_V7_LP64_OFF64 = 0x008b, -+ _SC_V7_LPBIG_OFFBIG = 0x008c, -+ _SC_XOPEN_STREAMS = 0x008d, -+ _SC_XOPEN_UUCP = 0x008e, -+ -+ _SC_LEVEL1_ICACHE_SIZE = 0x008f, -+ _SC_LEVEL1_ICACHE_ASSOC = 0x0090, -+ _SC_LEVEL1_ICACHE_LINESIZE = 0x0091, -+ _SC_LEVEL1_DCACHE_SIZE = 0x0092, -+ _SC_LEVEL1_DCACHE_ASSOC = 0x0093, -+ _SC_LEVEL1_DCACHE_LINESIZE = 0x0094, -+ _SC_LEVEL2_CACHE_SIZE = 0x0095, -+ _SC_LEVEL2_CACHE_ASSOC = 0x0096, -+ _SC_LEVEL2_CACHE_LINESIZE = 0x0097, -+ _SC_LEVEL3_CACHE_SIZE = 0x0098, -+ _SC_LEVEL3_CACHE_ASSOC = 0x0099, -+ _SC_LEVEL3_CACHE_LINESIZE = 0x009a, -+ _SC_LEVEL4_CACHE_SIZE = 0x009b, -+ _SC_LEVEL4_CACHE_ASSOC = 0x009c, -+ _SC_LEVEL4_CACHE_LINESIZE = 0x009d, -+ } - } - else version (Solaris) - { diff --git a/packages/ldc/ldc-linker-flags.patch b/packages/ldc/ldc-linker-flags.patch deleted file mode 100644 index 7084998a0..000000000 --- a/packages/ldc/ldc-linker-flags.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 336bbdbc..4b9e8c88 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -591,7 +591,8 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Cla - message(FATAL_ERROR "GDMD currently not supported due to http://bugzilla.gdcproject.org/show_bug.cgi?id=232.") - endif() - -- include(ExtractDMDSystemLinker) -+ #include(ExtractDMDSystemLinker) -+ set(D_LINKER_ARGS "-fuse-ld=bfd;-Lldc-build-runtime.tmp/lib;-lphobos2-ldc;-ldruntime-ldc;-Wl,--gc-sections") - message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}") - message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}") - list(APPEND LDC_LINKERFLAG_LIST ${D_LINKER_ARGS}) diff --git a/packages/ldc/ldc-tools-utils-bugs.patch b/packages/ldc/ldc-tools-utils-bugs.patch deleted file mode 100644 index d51966b83..000000000 --- a/packages/ldc/ldc-tools-utils-bugs.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 336bbdbc..4b9e8c88 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -736,12 +737,12 @@ endif() - # - # Auxiliary build and test utils. - # --add_subdirectory(utils) -+#add_subdirectory(utils) - - # - # Auxiliary tools. - # --add_subdirectory(tools) -+#add_subdirectory(tools) - - # - # Test and runtime targets. Note that enable_testing() is order-sensitive! diff --git a/packages/ldc/llvm-config.in b/packages/ldc/llvm-config.in index 3803c207c..fc288760b 100644 --- a/packages/ldc/llvm-config.in +++ b/packages/ldc/llvm-config.in @@ -56,10 +56,10 @@ components="aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64des aarch64info aarch64utils aggressiveinstcombine all all-targets analysis arm armasmparser armasmprinter \ armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitwriter \ codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle \ -dlltooldriver engine executionengine fuzzmutate globalisel gtest gtest_main instcombine instrumentation \ +dlltooldriver engine executionengine fuzzmutate globalisel instcombine instrumentation \ interpreter ipo irreader libdriver lineeditor linker lto mc mca mcdisassembler mcjit mcparser mirparser \ native nativecodegen objcarcopts object objectyaml option optremarks orcjit passes profiledata runtimedyld \ -scalaropts selectiondag support symbolize tablegen target testingsupport textapi transformutils vectorize \ +scalaropts selectiondag support symbolize tablegen target textapi transformutils vectorize \ webassembly webassemblyasmparser webassemblyasmprinter webassemblycodegen webassemblydesc \ webassemblydisassembler webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc \ x86disassembler x86info x86utils xray" From 9e342fd8cec636ebdd38db98d9e8e0b39a1c00c3 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sun, 29 Sep 2019 22:41:21 +0200 Subject: [PATCH 2/3] LDC: Upgrade to v1.18.0-beta2 --- packages/ldc/build.sh | 41 +++++----- packages/ldc/ldc-cmake-fix.patch | 70 ---------------- packages/ldc/ldc-druntime-fix.patch | 26 ------ packages/ldc/llvm-config.in | 121 ---------------------------- 4 files changed, 22 insertions(+), 236 deletions(-) delete mode 100644 packages/ldc/ldc-cmake-fix.patch delete mode 100644 packages/ldc/ldc-druntime-fix.patch delete mode 100644 packages/ldc/llvm-config.in diff --git a/packages/ldc/build.sh b/packages/ldc/build.sh index 61ea8f51d..5506e06d7 100644 --- a/packages/ldc/build.sh +++ b/packages/ldc/build.sh @@ -4,8 +4,8 @@ TERMUX_PKG_HOMEPAGE=https://github.com/ldc-developers/ldc TERMUX_PKG_DESCRIPTION="D programming language compiler, built with LLVM" TERMUX_PKG_LICENSE="BSD 3-Clause" TERMUX_PKG_VERSION=() -TERMUX_PKG_VERSION+=(1.18.0-beta1) -TERMUX_PKG_VERSION+=(8.0.1) # LLVM version +TERMUX_PKG_VERSION+=(1.18.0-beta2) +TERMUX_PKG_VERSION+=(9.0.0) # LLVM version TERMUX_PKG_VERSION+=(2.088.0) # TOOLS version TERMUX_PKG_VERSION+=(8ffc09ed6fb9625837161ffbbda2d926f490196c) # DUB version TERMUX_PKG_REVISION=5 @@ -15,11 +15,11 @@ TERMUX_PKG_SRCURL=(https://github.com/ldc-developers/ldc/releases/download/v${TE https://github.com/dlang/tools/archive/v${TERMUX_PKG_VERSION[2]}.tar.gz https://github.com/dlang/dub/archive/${TERMUX_PKG_VERSION[3]}.tar.gz https://github.com/ldc-developers/ldc/releases/download/v${TERMUX_PKG_VERSION}/ldc2-${TERMUX_PKG_VERSION}-linux-x86_64.tar.xz) -TERMUX_PKG_SHA256=(7bfa87a325f0c2202ec4dc6bd50ea56ebe30049ff06f6a630c63b6a33a9cafcc - af469483241e90366f910af32ca3a23e878ad8d2f29c0518811da19e1b6f4454 +TERMUX_PKG_SHA256=(e439dc40e534132756a8aafa9b1983de85868a6a1bf3e0e701a34b9d7747f0d5 + 0d8d5ebde82843f9b9829494a210c09315c6866c9f8b5df78be35d44943bb1f0 b21d4ab4750d671351f4307660b798a27922e7b0d8982ca5680918863a9970fe e11c4b171c0d26f4d85216aabb1e03d289a5551eda4e2c1bd7b70cf2ca57fd6a - d58524bdddacfe336371328a6888b4a9108e32c144aab2824de37ce9e9fbc6e4) + e42f3d0587ad5ae9e962dd27f99915a173867286481aacd9fc39cee2e528b2fe) TERMUX_PKG_DEPENDS="clang, libc++, zlib" TERMUX_PKG_NO_STATICSPLIT=true TERMUX_PKG_HOSTBUILD=true @@ -27,15 +27,17 @@ TERMUX_PKG_FORCE_CMAKE=true #These CMake args are only used to configure a patched LLVM TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DLLVM_ENABLE_PIC=ON +-DLLVM_ENABLE_PLUGINS=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_BUILD_UTILS=OFF -DCOMPILER_RT_INCLUDE_TESTS=OFF +-DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_LIBEDIT=OFF -DLLVM_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-tblgen +-DLLVM_CONFIG_PATH=$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-config -DPYTHON_EXECUTABLE=$(which python3) --DLLVM_TARGETS_TO_BUILD='AArch64;ARM;X86' --DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly +-DLLVM_TARGETS_TO_BUILD='AArch64;ARM;WebAssembly;X86' -DCMAKE_INSTALL_PREFIX=$LLVM_INSTALL_DIR " @@ -52,13 +54,6 @@ termux_step_post_extract_package() { LLVM_TRIPLE=${TERMUX_HOST_PLATFORM/-/--} if [ $TERMUX_ARCH = arm ]; then LLVM_TRIPLE=${LLVM_TRIPLE/arm-/armv7a-}; fi - sed $TERMUX_PKG_BUILDER_DIR/llvm-config.in \ - -e "s|@LLVM_VERSION@|${TERMUX_PKG_VERSION[1]}|g" \ - -e "s|@LLVM_INSTALL_DIR@|$LLVM_INSTALL_DIR|g" \ - -e "s|@TERMUX_PKG_SRCDIR@|$TERMUX_PKG_SRCDIR|g" \ - -e "s|@LLVM_DEFAULT_TARGET_TRIPLE@|$LLVM_TRIPLE|g" \ - -e "s|@LLVM_TARGETS@|AArch64 ARM X86 WebAssembly|g" > $TERMUX_PKG_BUILDDIR/llvm-config - chmod 755 $TERMUX_PKG_BUILDDIR/llvm-config } termux_step_host_build() { @@ -70,7 +65,8 @@ termux_step_host_build() { -DCMAKE_BUILD_TYPE=Release \ -DLLVM_BUILD_TOOLS=OFF \ -DLLVM_BUILD_UTILS=OFF \ - -DCOMPILER_RT_INCLUDE_TESTS=OFF + -DCOMPILER_RT_INCLUDE_TESTS=OFF \ + -DLLVM_INCLUDE_TESTS=OFF ninja -j $TERMUX_MAKE_PROCESSES llvm-tblgen } @@ -116,16 +112,22 @@ termux_step_post_configure() { ninja -j $TERMUX_MAKE_PROCESSES install fi - # Replace non-native llvm-config executable with bash script, - # as it is going to be invoked during LDC CMake config. - mv ../llvm-config $LLVM_INSTALL_DIR/bin - # Invoke CMake for LDC: TERMUX_PKG_SRCDIR=$OLD_TERMUX_PKG_SRCDIR TERMUX_PKG_BUILDDIR=$OLD_TERMUX_PKG_BUILDDIR cd "$TERMUX_PKG_BUILDDIR" + # Replace non-native llvm-config executable with bash script, + # as it is going to be invoked during LDC CMake config. + sed $TERMUX_PKG_SRCDIR/.azure-pipelines/android-llvm-config.in \ + -e "s|@LLVM_VERSION@|${TERMUX_PKG_VERSION[1]}|g" \ + -e "s|@LLVM_INSTALL_DIR@|$LLVM_INSTALL_DIR|g" \ + -e "s|@TERMUX_PKG_SRCDIR@|$TERMUX_PKG_SRCDIR/llvm|g" \ + -e "s|@LLVM_DEFAULT_TARGET_TRIPLE@|$LLVM_TRIPLE|g" \ + -e "s|@LLVM_TARGETS@|AArch64 ARM X86 WebAssembly|g" > $LLVM_INSTALL_DIR/bin/llvm-config + chmod 755 $LLVM_INSTALL_DIR/bin/llvm-config + LDC_FLAGS="-mtriple=$LLVM_TRIPLE" if [ $TERMUX_ARCH = arm ]; then LDC_FLAGS="$LDC_FLAGS;-mcpu=cortex-a8"; fi @@ -135,6 +137,7 @@ termux_step_post_configure() { TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DLLVM_ROOT_DIR=$LLVM_INSTALL_DIR \ -DD_COMPILER=$DMD \ -DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX \ + -DLDC_WITH_LLD=OFF \ -DD_LINKER_ARGS='-fuse-ld=bfd;-Lldc-build-runtime.tmp/lib;-lphobos2-ldc;-ldruntime-ldc;-Wl,--gc-sections'" termux_step_configure_cmake diff --git a/packages/ldc/ldc-cmake-fix.patch b/packages/ldc/ldc-cmake-fix.patch deleted file mode 100644 index 9f6b8ba1b..000000000 --- a/packages/ldc/ldc-cmake-fix.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index a9cd81983..b7700a7d2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -562,6 +562,16 @@ add_custom_target(${LDMD_EXE} ALL DEPENDS ${LDMD_EXE_FULL}) - # Figure out how to link the main LDC executable, for which we need to take the - # LLVM flags into account. - set(LDC_LINKERFLAG_LIST ${SANITIZE_LDFLAGS} ${LLVM_LIBRARIES} ${LLVM_LDFLAGS}) -+if(MSVC) -+ # Issue 1297 – set LDC's stack to 8 MiB like on Linux and Mac (default: 1 MiB). -+ list(APPEND LDC_LINKERFLAG_LIST "/STACK:8388608") -+ # VS 2017+: Use undocumented /NOOPTTLS MS linker switch to keep on emitting -+ # a .tls section. Required for older host druntime versions, otherwise the -+ # GC TLS ranges are garbage starting with VS 2017 Update 15.3. -+ if(MSVC_VERSION GREATER 1900) # VS 2017+ -+ list(APPEND LDC_LINKERFLAG_LIST "/NOOPTTLS") -+ endif() -+endif() - if(LDC_WITH_LLD) - # ELF, Mach-O, MinGW and WebAssembly formats supported since LLD 6.0.0, otherwise just Windows COFF - if(NOT (LDC_LLVM_VER LESS 600)) -@@ -615,9 +625,11 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan - # we manually invoke the linker instead of using the D compiler to do so. - set(LDC_LINK_MANUALLY ON) - -- include(ExtractDMDSystemLinker) -- message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}") -- message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}") -+ if(NOT DEFINED D_LINKER_ARGS) -+ include(ExtractDMDSystemLinker) -+ message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}") -+ message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}") -+ endif() - list(APPEND LDC_LINKERFLAG_LIST ${D_LINKER_ARGS}) - - if(NOT "${CMAKE_EXE_LINKER_FLAGS}" STREQUAL "") -@@ -625,23 +637,11 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan - list(APPEND LDC_LINKERFLAG_LIST ${flags}) - endif() - else() -- # Use D compiler for linking, trying to translate a few common linker flags. -+ # use D compiler for linking - set(LDC_TRANSLATED_LINKER_FLAGS "") - foreach(f ${LDC_LINKERFLAG_LIST}) -- string(REPLACE "-LIBPATH:" "/LIBPATH:" f ${f}) - list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L${f}") - endforeach() -- -- if(MSVC) -- # Issue 1297 – set LDC's stack to 8 MiB like on Linux and Mac (default: 1 MiB). -- list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L/STACK:8388608") -- # VS 2017+: Use undocumented /NOOPTTLS MS linker switch to keep on emitting -- # a .tls section. Required for older host druntime versions, otherwise the -- # GC TLS ranges are garbage starting with VS 2017 Update 15.3. -- if(MSVC_VERSION GREATER 1900) # VS 2017+ -- list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L/NOOPTTLS") -- endif() -- endif() - endif() - - # CONFIG generator expressions need to be repeated due to https://cmake.org/Bug/view.php?id=14353 -@@ -838,7 +838,7 @@ endif() - # - # Auxiliary build and test utils. - # --add_subdirectory(utils) -+#add_subdirectory(utils) - - # - # Auxiliary tools. diff --git a/packages/ldc/ldc-druntime-fix.patch b/packages/ldc/ldc-druntime-fix.patch deleted file mode 100644 index bb5a2450c..000000000 --- a/packages/ldc/ldc-druntime-fix.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/src/core/runtime.d b/src/core/runtime.d -index 03103daa..fd185816 100644 ---- a/src/core/runtime.d -+++ b/runtime/druntime/src/core/runtime.d -@@ -799,7 +799,8 @@ unittest - } - - /// Default implementation for POSIX systems --version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo -+version (CRuntime_Bionic) { /* no backtrace[_symbols] */ } -+else version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo - { - // backtrace - version (CRuntime_Glibc) -@@ -825,7 +826,10 @@ version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo - { - version (LDC) - { -- numframes = backtrace( callstack.ptr, MAXFRAMES ); -+ static if ( __traits( compiles, backtrace ) ) -+ numframes = backtrace( callstack.ptr, MAXFRAMES ); -+ else -+ numframes = 0; - } - else - { diff --git a/packages/ldc/llvm-config.in b/packages/ldc/llvm-config.in deleted file mode 100644 index fc288760b..000000000 --- a/packages/ldc/llvm-config.in +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/bash -show_help () { -echo "usage: llvm-config