Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F140693131
D15674.id43355.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
D15674.id43355.diff
View Options
Index: lang/ghc/Makefile
===================================================================
--- lang/ghc/Makefile
+++ lang/ghc/Makefile
@@ -15,7 +15,7 @@
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
-ONLY_FOR_ARCHS= i386 amd64
+ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386
GHC_VERSION= 8.4.2
HSCOLOUR_VERSION= 1.24.4
@@ -93,6 +93,25 @@
DISTFILES+= ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-freebsd${EXTRACT_SUFX}:boot
.endif # MBOOT
+.if ${ARCH} == aarch64 || ${ARCH} == armv6 || ${ARCH} == armv7
+# CONFIGURE_TARGET must to be the same as the llvm triple
+CONFIGURE_TARGET= ${ARCH}-unknown-freebsd${"${ARCH:Maarch64}" != "":?:-gnueabihf}
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-aclocal.m4
+BUILD_DEPENDS+= ${LOCALBASE}/bin/ld.gold:devel/binutils \
+ llc50:devel/llvm50
+RUN_DEPENDS+= ${LOCALBASE}/bin/ld.gold:devel/binutils \
+ llc50:devel/llvm50
+USE_GCC= yes
+
+.if ${OSVERSION} < 1200064
+IGNORE= lang/ghc requires at least __FreeBSD_version 1200064
+.endif
+
+.ifdef QEMU_EMULATING
+IGNORE= qemu-user-static is too buggy to build lang/ghc, works fine on a real hardware
+.endif
+.endif
+
# Turn off for a while, see PR 228727
CONFIGURE_ARGS+= --enable-dtrace=0
.if ${OSVERSION} < 1200000
@@ -159,7 +178,8 @@
.endif # MDOCS
post-extract:
-.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031
+.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031 && \
+ ${ARCH} != aarch64 && ${ARCH} != armv6 && ${ARCH} != armv7
@${REINPLACE_CMD} -e 's|@SettingsCCompilerLinkFlags@|& -Wl,--wrap=readdir_r,--wrap=stat,--wrap=lstat,--wrap=fstat,--wrap=mknod|' ${BOOT_DIR}/settings.in
.endif
@@ -192,6 +212,12 @@
s|%%AR%%|${AR}|; \
s|%%LD%%|${LD}|' \
${WRKSRC}/libraries/Cabal/Cabal/Distribution/Simple/Program/Builtin.hs
+# we must use binutils:ld on arm
+.if ${ARCH} == aarch64 || ${ARCH} == armv6 || ${ARCH} == armv7
+ @${REINPLACE_CMD} -e 's|LOCALBASE|${PREFIX}|' \
+ ${WRKSRC}/aclocal.m4
+.endif
+
.if empty(PORT_OPTIONS:MBOOT)
@${REINPLACE_CMD} -e '/^mandir/d' ${BOOT_DIR}/mk/build.mk
@${REINPLACE_CMD} -e '/^infodir/d' ${BOOT_DIR}/mk/build.mk
@@ -205,7 +231,8 @@
@${MKDIR} ${TMPDIR}
.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && \
- ${OSVERSION} >= 1200031
+ ${OSVERSION} >= 1200031 && \
+ ${ARCH} != aarch64 && ${ARCH} != armv6 && ${ARCH} != armv7
${CC} ${CFLAGS} -c -o ${BOOT_DIR}/wrap.o ${PATCHDIR}/wrap.c
for x in ${BOOT_DIR}/rts/dist/build/libCffi*.a; do \
${AR} q $$x ${BOOT_DIR}/wrap.o; ${RANLIB} $$x; \
Index: lang/ghc/distinfo
===================================================================
--- lang/ghc/distinfo
+++ lang/ghc/distinfo
@@ -7,3 +7,9 @@
SIZE (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 69976728
SHA256 (hscolour-1.24.4.tar.gz) = 243332b082294117f37b2c2c68079fa61af68b36223b3fc07594f245e0e5321d
SIZE (hscolour-1.24.4.tar.gz) = 28729
+SHA256 (ghc-8.4.2-boot-aarch64-freebsd.tar.xz) = 18412f10bb172dbaff7f31505845fbd43fdde14046463fdacc42e26683be311d
+SIZE (ghc-8.4.2-boot-aarch64-freebsd.tar.xz) = 100240140
+SHA256 (ghc-8.4.2-boot-armv6-freebsd.tar.xz) = 61d3a4486dbb904b05a735e98f23a49c2b464d6b19212dd655ff578f36d02f0d
+SIZE (ghc-8.4.1-boot-armv6-freebsd.tar.xz) = 107368936
+SHA256 (ghc-8.4.2-boot-armv7-freebsd.tar.xz) = eedb9416870bfe82315155751871e31e815b718b381ccf4f7e45a99a6ad7c94d
+SIZE (ghc-8.4.2-boot-armv7-freebsd.tar.xz) = 110153548
Index: lang/ghc/files/extra-patch-aclocal.m4
===================================================================
--- lang/ghc/files/extra-patch-aclocal.m4
+++ lang/ghc/files/extra-patch-aclocal.m4
@@ -0,0 +1,88 @@
+--- aclocal.m4.orig 2018-03-25 21:22:32 UTC
++++ aclocal.m4
+@@ -648,6 +648,14 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
+ $3="$$3 -D_HPUX_SOURCE"
+ $5="$$5 -D_HPUX_SOURCE"
+ ;;
++ arm*freebsd*)
++ # On arm/freebsd, tell gcc to generate Arm
++ # instructions (ie not Thumb) and to link using the gold linker.
++ # Forcing LD to be ld.gold is done in FIND_LD m4 macro.
++ $2="$$2 -marm"
++ $3="$$3 -Wl,-z,noexecstack"
++ $4="$$4 -z noexecstack"
++ ;;
+ arm*linux*)
+ # On arm/linux and arm/android, tell gcc to generate Arm
+ # instructions (ie not Thumb).
+@@ -656,6 +664,11 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
+ $4="$$4 -z noexecstack"
+ ;;
+
++ aarch64*freebsd*)
++ $3="$$3 -Wl,-z,noexecstack"
++ $4="$$4 -z noexecstack"
++ ;;
++
+ aarch64*linux*)
+ $3="$$3 -Wl,-z,noexecstack"
+ $4="$$4 -z noexecstack"
+@@ -1087,7 +1100,7 @@ AC_DEFUN([FP_PROG_AR],
+ fp_prog_ar=$(cygpath -m $fp_prog_ar)
+ fi
+ else
+- AC_CHECK_TARGET_TOOL([fp_prog_ar], [ar])
++ AC_CHECK_TOOL([fp_prog_ar], [ar])
+ fi
+ fi
+ if test -z "$fp_prog_ar"; then
+@@ -1917,6 +1930,10 @@ case "$1" in
+ # converts the canonicalized target into someting llvm can understand
+ AC_DEFUN([GHC_LLVM_TARGET], [
+ case "$2-$3" in
++ *-freebsd*-gnueabihf)
++ llvm_target_vendor="unknown"
++ llvm_target_os="freebsd-gnueabihf"
++ ;;
+ hardfloat-*eabi)
+ llvm_target_vendor="unknown"
+ llvm_target_os="$3""hf"
+@@ -2071,7 +2088,7 @@ AC_DEFUN([XCODE_VERSION],[
+ #
+ AC_DEFUN([FIND_LLVM_PROG],[
+ # Test for program with and without version name.
+- AC_CHECK_TOOLS([$1], [$2-$3 $2], [:])
++ AC_CHECK_TOOLS([$1], [$2], [:])
+ if test "$$1" != ":"; then
+ AC_MSG_CHECKING([$$1 is version $3])
+ if test `$$1 --version | grep -c "version $3"` -gt 0 ; then
+@@ -2361,19 +2378,12 @@ AC_DEFUN([FIND_LD],[
+ [enable_ld_override=yes])
+
+ find_ld() {
+- # Make sure the user didn't specify LD manually.
+- if test "z$LD" != "z"; then
+- AC_CHECK_TARGET_TOOL([LD], [ld])
+- LD_NO_GOLD=$LD
+- return
+- fi
+-
+ # Manually iterate over possible names since we want to ensure that, e.g.,
+ # if ld.lld is installed but gcc doesn't support -fuse-ld=lld, that we
+ # then still try ld.gold and -fuse-ld=gold.
+ for possible_ld in ld.lld ld.gold ld; do
+ TmpLd="" # In case the user set LD
+- AC_CHECK_TARGET_TOOL([TmpLd], [$possible_ld])
++ AC_CHECK_TOOL([TmpLd], [$possible_ld])
+ if test "x$TmpLd" = "x"; then continue; fi
+
+ out=`$TmpLd --version`
+@@ -2383,7 +2393,7 @@ AC_DEFUN([FIND_LD],[
+ FP_CC_LINKER_FLAG_TRY(bfd, $2) ;;
+ "GNU gold"*)
+ FP_CC_LINKER_FLAG_TRY(gold, $2)
+- LD_NO_GOLD=ld
++ LD_NO_GOLD=LOCALBASE/bin/ld
+ ;;
+ "LLD"*)
+ FP_CC_LINKER_FLAG_TRY(lld, $2) ;;
Index: lang/ghc/files/patch-configure
===================================================================
--- lang/ghc/files/patch-configure
+++ lang/ghc/files/patch-configure
@@ -0,0 +1,22 @@
+--- configure.orig 2018-03-06 20:04:54 UTC
++++ configure
+@@ -9108,6 +9108,19 @@ $as_echo_n "checking Setting up CFLAGS, LDFLAGS, IGNOR
+ IGNORE_LINKER_LD_FLAGS="$IGNORE_LINKER_LD_FLAGS -z noexecstack"
+ ;;
+
++ arm*freebsd*)
++ # On arm/freebsd, tell gcc to generate Arm
++ # instructions (ie not Thumb).
++ CFLAGS="$CFLAGS -marm"
++ LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
++ IGNORE_LINKER_LD_FLAGS="$IGNORE_LINKER_LD_FLAGS -z noexecstack"
++ ;;
++
++ aarch64*freebsd*)
++ LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
++ IGNORE_LINKER_LD_FLAGS="$IGNORE_LINKER_LD_FLAGS -z noexecstack"
++ ;;
++
+ powerpc-ibm-aix*)
+ # We need `-D_THREAD_SAFE` to unlock the thread-local `errno`.
+ CFLAGS="$CFLAGS -D_THREAD_SAFE"
Index: lang/ghc/files/patch-configure.ac
===================================================================
--- lang/ghc/files/patch-configure.ac
+++ lang/ghc/files/patch-configure.ac
@@ -1,4 +1,4 @@
---- configure.ac.orig 2018-03-06 16:48:53 UTC
+--- configure.ac.orig 2018-04-17 19:30:22 UTC
+++ configure.ac
@@ -447,6 +447,9 @@ XCODE_VERSION()
dnl ** Building a cross compiler?
@@ -10,6 +10,39 @@
# If 'host' and 'target' differ, then this means we are building a cross-compiler.
if test "$TargetPlatform" != "$HostPlatform" ; then
CrossCompiling=YES
+@@ -614,7 +617,7 @@ AC_SUBST([RanlibCmd])
+
+ dnl ** which strip to use?
+ dnl --------------------------------------------------------------
+-AC_CHECK_TARGET_TOOL([STRIP], [strip])
++AC_CHECK_TOOL([STRIP], [strip])
+ StripCmd="$STRIP"
+ AC_SUBST([StripCmd])
+
+@@ -639,6 +642,7 @@ AC_SUBST([LibtoolCmd])
+ # versions of LLVM simultaneously, but that stopped working around
+ # 3.5/3.6 release of LLVM.
+ LlvmVersion=5.0
++FreeBSDLlvmVersion=$(echo $LlvmVersion | sed 's/\.//')
+ AC_SUBST([LlvmVersion])
+ sUPPORTED_LLVM_VERSION=$(echo \($LlvmVersion\) | sed 's/\./,/')
+ AC_DEFINE_UNQUOTED([sUPPORTED_LLVM_VERSION], ${sUPPORTED_LLVM_VERSION}, [The supported LLVM version number])
+@@ -651,13 +655,13 @@ AC_SUBST([ClangCmd])
+
+ dnl ** Which LLVM llc to use?
+ dnl --------------------------------------------------------------
+-FIND_LLVM_PROG([LLC], [llc], [$LlvmVersion])
++FIND_LLVM_PROG([LLC], [llc$FreeBSDLlvmVersion], [$LlvmVersion])
+ LlcCmd="$LLC"
+ AC_SUBST([LlcCmd])
+
+ dnl ** Which LLVM opt to use?
+ dnl --------------------------------------------------------------
+-FIND_LLVM_PROG([OPT], [opt], [$LlvmVersion])
++FIND_LLVM_PROG([OPT], [opt$FreeBSDLlvmVersion], [$LlvmVersion])
+ OptCmd="$OPT"
+ AC_SUBST([OptCmd])
+
@@ -1163,6 +1158,11 @@ if test "$ac_cv_sizeof_void_p" -eq 8 ; t
# The flag MAP_NORESERVE is supported for source compatibility reasons,
# but is completely ignored by OS mmap
Index: lang/ghc/files/patch-distrib_configure.ac.in
===================================================================
--- lang/ghc/files/patch-distrib_configure.ac.in
+++ lang/ghc/files/patch-distrib_configure.ac.in
@@ -0,0 +1,27 @@
+--- distrib/configure.ac.in.orig 2018-01-15 20:26:32 UTC
++++ distrib/configure.ac.in
+@@ -113,7 +113,7 @@ FP_PROG_LD_FILELIST
+
+ dnl ** which strip to use?
+ dnl --------------------------------------------------------------
+-AC_CHECK_TARGET_TOOL([STRIP], [strip])
++AC_CHECK_TOOL([STRIP], [strip])
+ StripCmd="$STRIP"
+ AC_SUBST([StripCmd])
+
+@@ -125,13 +125,13 @@ LlvmVersion=@LlvmVersion@
+
+ dnl ** Which LLVM llc to use?
+ dnl --------------------------------------------------------------
+-FIND_LLVM_PROG([LLC], [llc], [$LlvmVersion])
++FIND_LLVM_PROG([LLC], [llc50], [$LlvmVersion])
+ LlcCmd="$LLC"
+ AC_SUBST([LlcCmd])
+
+ dnl ** Which LLVM opt to use?
+ dnl --------------------------------------------------------------
+-FIND_LLVM_PROG([OPT], [opt], [$LlvmVersion])
++FIND_LLVM_PROG([OPT], [opt50], [$LlvmVersion])
+ OptCmd="$OPT"
+ AC_SUBST([OptCmd])
+
Index: lang/ghc/files/patch-llvm-targets
===================================================================
--- lang/ghc/files/patch-llvm-targets
+++ lang/ghc/files/patch-llvm-targets
@@ -0,0 +1,10 @@
+--- llvm-targets.orig 2018-03-17 14:04:41 UTC
++++ llvm-targets
+@@ -20,4 +20,7 @@
+ ,("aarch64-apple-ios", ("e-m:o-i64:64-i128:128-n32:64-S128", "generic", "+neon"))
+ ,("i386-apple-ios", ("e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128", "yonah", ""))
+ ,("x86_64-apple-ios", ("e-m:o-i64:64-f80:128-n8:16:32:64-S128", "core2", ""))
++,("armv6-unknown-freebsd-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align"))
++,("armv7-unknown-freebsd-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", "+strict-align"))
++,("aarch64-unknown-freebsd", ("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "generic", "+neon"))
+ ]
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Dec 27, 11:23 PM (7 h, 28 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27315892
Default Alt Text
D15674.id43355.diff (11 KB)
Attached To
Mode
D15674: lang/ghc: add armv6, armv7 and aarch64 to the list of supported architectures
Attached
Detach File
Event Timeline
Log In to Comment