View | Details | Raw Unified | Return to bug 196899 | Differences between
and this patch

Collapse All | Expand All

(-)lang/ghc/Makefile (-3 / +30 lines)
Lines 14-20 Link Here
14
LICENSE=	BSD3CLAUSE
14
LICENSE=	BSD3CLAUSE
15
LICENSE_FILE=	${WRKSRC}/LICENSE
15
LICENSE_FILE=	${WRKSRC}/LICENSE
16
16
17
ONLY_FOR_ARCHS=	i386 amd64
17
ONLY_FOR_ARCHS=	aarch64 amd64 armv6 armv7 i386
18
18
19
GHC_VERSION=		8.4.2
19
GHC_VERSION=		8.4.2
20
HSCOLOUR_VERSION=	1.24.4
20
HSCOLOUR_VERSION=	1.24.4
Lines 92-97 Link Here
92
DISTFILES+=		ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-freebsd${EXTRACT_SUFX}:boot
92
DISTFILES+=		ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-freebsd${EXTRACT_SUFX}:boot
93
.endif # MBOOT
93
.endif # MBOOT
94
94
95
.if ${ARCH} == aarch64 || ${ARCH} == armv6 || ${ARCH} == armv7
96
# CONFIGURE_TARGET must to be the same as the llvm triple
97
CONFIGURE_TARGET=       ${ARCH}-unknown-freebsd${"${ARCH:Maarch64}" != "":?:-gnueabihf}
98
EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-aclocal.m4
99
BUILD_DEPENDS+=	${LOCALBASE}/bin/ld.gold:devel/binutils \
100
		llc50:devel/llvm50
101
RUN_DEPENDS+=	${LOCALBASE}/bin/ld.gold:devel/binutils \
102
		llc50:devel/llvm50
103
USE_GCC=	yes
104
105
.if ${OSVERSION} < 1200064
106
IGNORE=	lang/ghc requires at least __FreeBSD_version 1200064
107
.endif
108
109
.ifdef QEMU_EMULATING
110
IGNORE=	qemu-user-static is too buggy to build lang/ghc, works fine on a real hardware
111
.endif
112
.endif
113
95
.if ${OSVERSION} < 1200000
114
.if ${OSVERSION} < 1200000
96
USE_GCC=	yes
115
USE_GCC=	yes
97
CONFIGURE_ARGS+=	--enable-dtrace=0
116
CONFIGURE_ARGS+=	--enable-dtrace=0
Lines 157-163 Link Here
157
.endif # MDOCS
176
.endif # MDOCS
158
177
159
post-extract:
178
post-extract:
160
.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031
179
.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031 && \
180
    ${ARCH} != aarch64 && ${ARCH} != armv6 && ${ARCH} != armv7
161
	@${REINPLACE_CMD} -e 's|@SettingsCCompilerLinkFlags@|& -Wl,--wrap=readdir_r,--wrap=stat,--wrap=lstat,--wrap=fstat,--wrap=mknod|' ${BOOT_DIR}/settings.in
181
	@${REINPLACE_CMD} -e 's|@SettingsCCompilerLinkFlags@|& -Wl,--wrap=readdir_r,--wrap=stat,--wrap=lstat,--wrap=fstat,--wrap=mknod|' ${BOOT_DIR}/settings.in
162
.endif
182
.endif
163
183
Lines 190-195 Link Here
190
		s|%%AR%%|${AR}|; \
210
		s|%%AR%%|${AR}|; \
191
		s|%%LD%%|${LD}|' \
211
		s|%%LD%%|${LD}|' \
192
		${WRKSRC}/libraries/Cabal/Cabal/Distribution/Simple/Program/Builtin.hs
212
		${WRKSRC}/libraries/Cabal/Cabal/Distribution/Simple/Program/Builtin.hs
213
# we must use binutils:ld on arm
214
.if ${ARCH} == aarch64 || ${ARCH} == armv6 || ${ARCH} == armv7
215
	@${REINPLACE_CMD} -e 's|LOCALBASE|${PREFIX}|' \
216
		${WRKSRC}/aclocal.m4
217
.endif
218
193
.if empty(PORT_OPTIONS:MBOOT)
219
.if empty(PORT_OPTIONS:MBOOT)
194
	@${REINPLACE_CMD} -e '/^mandir/d' ${BOOT_DIR}/mk/build.mk
220
	@${REINPLACE_CMD} -e '/^mandir/d' ${BOOT_DIR}/mk/build.mk
195
	@${REINPLACE_CMD} -e '/^infodir/d' ${BOOT_DIR}/mk/build.mk
221
	@${REINPLACE_CMD} -e '/^infodir/d' ${BOOT_DIR}/mk/build.mk
Lines 203-209 Link Here
203
229
204
	@${MKDIR} ${TMPDIR}
230
	@${MKDIR} ${TMPDIR}
205
.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && \
231
.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == FreeBSD && \
206
    ${OSVERSION} >= 1200031
232
    ${OSVERSION} >= 1200031 && \
233
    ${ARCH} != aarch64 && ${ARCH} != armv6 && ${ARCH} != armv7
207
	${CC} ${CFLAGS} -c -o ${BOOT_DIR}/wrap.o ${PATCHDIR}/wrap.c
234
	${CC} ${CFLAGS} -c -o ${BOOT_DIR}/wrap.o ${PATCHDIR}/wrap.c
208
	for x in ${BOOT_DIR}/rts/dist/build/libCffi*.a; do \
235
	for x in ${BOOT_DIR}/rts/dist/build/libCffi*.a; do \
209
	    ${AR} q $$x ${BOOT_DIR}/wrap.o; ${RANLIB} $$x; \
236
	    ${AR} q $$x ${BOOT_DIR}/wrap.o; ${RANLIB} $$x; \
(-)lang/ghc/distinfo (+6 lines)
Lines 7-9 Link Here
7
SIZE (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 69976728
7
SIZE (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 69976728
8
SHA256 (hscolour-1.24.4.tar.gz) = 243332b082294117f37b2c2c68079fa61af68b36223b3fc07594f245e0e5321d
8
SHA256 (hscolour-1.24.4.tar.gz) = 243332b082294117f37b2c2c68079fa61af68b36223b3fc07594f245e0e5321d
9
SIZE (hscolour-1.24.4.tar.gz) = 28729
9
SIZE (hscolour-1.24.4.tar.gz) = 28729
10
SHA256 (ghc-8.4.2-boot-aarch64-freebsd.tar.xz) = 18412f10bb172dbaff7f31505845fbd43fdde14046463fdacc42e26683be311d
11
SIZE (ghc-8.4.2-boot-aarch64-freebsd.tar.xz) = 100240140
12
SHA256 (ghc-8.4.2-boot-armv6-freebsd.tar.xz) = 61d3a4486dbb904b05a735e98f23a49c2b464d6b19212dd655ff578f36d02f0d
13
SIZE  (ghc-8.4.1-boot-armv6-freebsd.tar.xz) = 107368936
14
SHA256 (ghc-8.4.2-boot-armv7-freebsd.tar.xz) = eedb9416870bfe82315155751871e31e815b718b381ccf4f7e45a99a6ad7c94d
15
SIZE (ghc-8.4.2-boot-armv7-freebsd.tar.xz) = 110153548
(-)lang/ghc/files/extra-patch-aclocal.m4 (+88 lines)
Line 0 Link Here
1
--- aclocal.m4.orig	2018-03-25 21:22:32 UTC
2
+++ aclocal.m4
3
@@ -648,6 +648,14 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
4
         $3="$$3 -D_HPUX_SOURCE"
5
         $5="$$5 -D_HPUX_SOURCE"
6
         ;;
7
+    arm*freebsd*)
8
+        # On arm/freebsd, tell gcc to generate Arm
9
+        # instructions (ie not Thumb) and to link using the gold linker.
10
+        # Forcing LD to be ld.gold is done in FIND_LD m4 macro.
11
+        $2="$$2 -marm"
12
+        $3="$$3 -Wl,-z,noexecstack"
13
+        $4="$$4 -z noexecstack"
14
+        ;;
15
     arm*linux*)
16
         # On arm/linux and arm/android, tell gcc to generate Arm
17
         # instructions (ie not Thumb).
18
@@ -656,6 +664,11 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
19
         $4="$$4 -z noexecstack"
20
         ;;
21
 
22
+    aarch64*freebsd*)
23
+        $3="$$3 -Wl,-z,noexecstack"
24
+        $4="$$4 -z noexecstack"
25
+        ;;
26
+
27
     aarch64*linux*)
28
         $3="$$3 -Wl,-z,noexecstack"
29
         $4="$$4 -z noexecstack"
30
@@ -1087,7 +1100,7 @@ AC_DEFUN([FP_PROG_AR],
31
       fp_prog_ar=$(cygpath -m $fp_prog_ar)
32
     fi
33
   else
34
-    AC_CHECK_TARGET_TOOL([fp_prog_ar], [ar])
35
+    AC_CHECK_TOOL([fp_prog_ar], [ar])
36
   fi
37
 fi
38
 if test -z "$fp_prog_ar"; then
39
@@ -1917,6 +1930,10 @@ case "$1" in
40
 # converts the canonicalized target into someting llvm can understand
41
 AC_DEFUN([GHC_LLVM_TARGET], [
42
   case "$2-$3" in
43
+    *-freebsd*-gnueabihf)
44
+      llvm_target_vendor="unknown"
45
+      llvm_target_os="freebsd-gnueabihf"
46
+      ;;
47
     hardfloat-*eabi)
48
       llvm_target_vendor="unknown"
49
       llvm_target_os="$3""hf"
50
@@ -2071,7 +2088,7 @@ AC_DEFUN([XCODE_VERSION],[
51
 #
52
 AC_DEFUN([FIND_LLVM_PROG],[
53
     # Test for program with and without version name.
54
-    AC_CHECK_TOOLS([$1], [$2-$3 $2], [:])
55
+    AC_CHECK_TOOLS([$1], [$2], [:])
56
     if test "$$1" != ":"; then
57
         AC_MSG_CHECKING([$$1 is version $3])
58
         if test `$$1 --version | grep -c "version $3"` -gt 0 ; then
59
@@ -2361,19 +2378,12 @@ AC_DEFUN([FIND_LD],[
60
       [enable_ld_override=yes])
61
 
62
     find_ld() {
63
-        # Make sure the user didn't specify LD manually.
64
-        if test "z$LD" != "z"; then
65
-            AC_CHECK_TARGET_TOOL([LD], [ld])
66
-            LD_NO_GOLD=$LD
67
-            return
68
-        fi
69
-
70
         # Manually iterate over possible names since we want to ensure that, e.g.,
71
         # if ld.lld is installed but gcc doesn't support -fuse-ld=lld, that we
72
         # then still try ld.gold and -fuse-ld=gold.
73
         for possible_ld in ld.lld ld.gold ld; do
74
             TmpLd="" # In case the user set LD
75
-            AC_CHECK_TARGET_TOOL([TmpLd], [$possible_ld])
76
+            AC_CHECK_TOOL([TmpLd], [$possible_ld])
77
             if test "x$TmpLd" = "x"; then continue; fi
78
 
79
             out=`$TmpLd --version`
80
@@ -2383,7 +2393,7 @@ AC_DEFUN([FIND_LD],[
81
                    FP_CC_LINKER_FLAG_TRY(bfd, $2) ;;
82
               "GNU gold"*)
83
                    FP_CC_LINKER_FLAG_TRY(gold, $2)
84
-                   LD_NO_GOLD=ld
85
+                   LD_NO_GOLD=LOCALBASE/bin/ld
86
                    ;;
87
               "LLD"*)
88
                    FP_CC_LINKER_FLAG_TRY(lld, $2) ;;
(-)lang/ghc/files/patch-configure (+22 lines)
Line 0 Link Here
1
--- configure.orig	2018-03-06 20:04:54 UTC
2
+++ configure
3
@@ -9108,6 +9108,19 @@ $as_echo_n "checking Setting up CFLAGS, LDFLAGS, IGNOR
4
         IGNORE_LINKER_LD_FLAGS="$IGNORE_LINKER_LD_FLAGS -z noexecstack"
5
         ;;
6
 
7
+    arm*freebsd*)
8
+        # On arm/freebsd, tell gcc to generate Arm
9
+        # instructions (ie not Thumb).
10
+        CFLAGS="$CFLAGS -marm"
11
+        LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
12
+        IGNORE_LINKER_LD_FLAGS="$IGNORE_LINKER_LD_FLAGS -z noexecstack"
13
+        ;;
14
+
15
+    aarch64*freebsd*)
16
+        LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
17
+        IGNORE_LINKER_LD_FLAGS="$IGNORE_LINKER_LD_FLAGS -z noexecstack"
18
+        ;;
19
+
20
     powerpc-ibm-aix*)
21
         # We need `-D_THREAD_SAFE` to unlock the thread-local `errno`.
22
         CFLAGS="$CFLAGS -D_THREAD_SAFE"
(-)lang/ghc/files/patch-configure.ac (-2 / +35 lines)
Lines 1-5 Link Here
1
--- configure.ac.orig	2018-03-06 16:48:53 UTC
1
--- configure.ac.orig	2018-04-17 19:30:22.000000000 +0200
2
+++ configure.ac
2
+++ configure.ac	2018-05-31 08:26:27.809565000 +0200
3
@@ -447,6 +447,9 @@ XCODE_VERSION()
3
@@ -447,6 +447,9 @@ XCODE_VERSION()
4
 dnl ** Building a cross compiler?
4
 dnl ** Building a cross compiler?
5
 dnl --------------------------------------------------------------
5
 dnl --------------------------------------------------------------
Lines 10-15 Link Here
10
 # If 'host' and 'target' differ, then this means we are building a cross-compiler.
10
 # If 'host' and 'target' differ, then this means we are building a cross-compiler.
11
 if test "$TargetPlatform" != "$HostPlatform" ; then
11
 if test "$TargetPlatform" != "$HostPlatform" ; then
12
     CrossCompiling=YES
12
     CrossCompiling=YES
13
@@ -614,7 +617,7 @@ AC_SUBST([RanlibCmd])
14
 
15
 dnl ** which strip to use?
16
 dnl --------------------------------------------------------------
17
-AC_CHECK_TARGET_TOOL([STRIP], [strip])
18
+AC_CHECK_TOOL([STRIP], [strip])
19
 StripCmd="$STRIP"
20
 AC_SUBST([StripCmd])
21
 
22
@@ -639,6 +642,7 @@ AC_SUBST([LibtoolCmd])
23
 # versions of LLVM simultaneously, but that stopped working around
24
 # 3.5/3.6 release of LLVM.
25
 LlvmVersion=5.0
26
+FreeBSDLlvmVersion=$(echo $LlvmVersion | sed 's/\.//')
27
 AC_SUBST([LlvmVersion])
28
 sUPPORTED_LLVM_VERSION=$(echo \($LlvmVersion\) | sed 's/\./,/')
29
 AC_DEFINE_UNQUOTED([sUPPORTED_LLVM_VERSION], ${sUPPORTED_LLVM_VERSION}, [The supported LLVM version number])
30
@@ -651,13 +655,13 @@ AC_SUBST([ClangCmd])
31
 
32
 dnl ** Which LLVM llc to use?
33
 dnl --------------------------------------------------------------
34
-FIND_LLVM_PROG([LLC], [llc], [$LlvmVersion])
35
+FIND_LLVM_PROG([LLC], [llc$FreeBSDLlvmVersion], [$LlvmVersion])
36
 LlcCmd="$LLC"
37
 AC_SUBST([LlcCmd])
38
 
39
 dnl ** Which LLVM opt to use?
40
 dnl --------------------------------------------------------------
41
-FIND_LLVM_PROG([OPT], [opt], [$LlvmVersion])
42
+FIND_LLVM_PROG([OPT], [opt$FreeBSDLlvmVersion], [$LlvmVersion])
43
 OptCmd="$OPT"
44
 AC_SUBST([OptCmd])
45
 
13
@@ -1163,6 +1158,11 @@ if test "$ac_cv_sizeof_void_p" -eq 8 ; t
46
@@ -1163,6 +1158,11 @@ if test "$ac_cv_sizeof_void_p" -eq 8 ; t
14
 	    # The flag MAP_NORESERVE is supported for source compatibility reasons,
47
 	    # The flag MAP_NORESERVE is supported for source compatibility reasons,
15
 	    # but is completely ignored by OS mmap
48
 	    # but is completely ignored by OS mmap
(-)lang/ghc/files/patch-distrib_configure.ac.in (+27 lines)
Line 0 Link Here
1
--- distrib/configure.ac.in.orig	2018-01-15 20:26:32.000000000 +0100
2
+++ distrib/configure.ac.in	2018-05-31 16:48:52.246113000 +0200
3
@@ -113,7 +113,7 @@ FP_PROG_LD_FILELIST
4
 
5
 dnl ** which strip to use?
6
 dnl --------------------------------------------------------------
7
-AC_CHECK_TARGET_TOOL([STRIP], [strip])
8
+AC_CHECK_TOOL([STRIP], [strip])
9
 StripCmd="$STRIP"
10
 AC_SUBST([StripCmd])
11
 
12
@@ -125,13 +125,13 @@ LlvmVersion=@LlvmVersion@
13
 
14
 dnl ** Which LLVM llc to use?
15
 dnl --------------------------------------------------------------
16
-FIND_LLVM_PROG([LLC], [llc], [$LlvmVersion])
17
+FIND_LLVM_PROG([LLC], [llc50], [$LlvmVersion])
18
 LlcCmd="$LLC"
19
 AC_SUBST([LlcCmd])
20
 
21
 dnl ** Which LLVM opt to use?
22
 dnl --------------------------------------------------------------
23
-FIND_LLVM_PROG([OPT], [opt], [$LlvmVersion])
24
+FIND_LLVM_PROG([OPT], [opt50], [$LlvmVersion])
25
 OptCmd="$OPT"
26
 AC_SUBST([OptCmd])
27
 
(-)lang/ghc/files/patch-llvm-targets (+10 lines)
Line 0 Link Here
1
--- llvm-targets.orig	2018-03-17 14:04:41 UTC
2
+++ llvm-targets
3
@@ -20,4 +20,7 @@
4
 ,("aarch64-apple-ios", ("e-m:o-i64:64-i128:128-n32:64-S128", "generic", "+neon"))
5
 ,("i386-apple-ios", ("e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128", "yonah", ""))
6
 ,("x86_64-apple-ios", ("e-m:o-i64:64-f80:128-n8:16:32:64-S128", "core2", ""))
7
+,("armv6-unknown-freebsd-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align"))
8
+,("armv7-unknown-freebsd-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", "+strict-align"))
9
+,("aarch64-unknown-freebsd", ("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "generic", "+neon"))
10
 ]

Return to bug 196899