Cleanup GHC ports:

- Switch to using ld instead of binutils ld or ld.bfd on amd64/i386.
  - Add GMP option.
  - Re-enable DYNAMIC option on ARM. It is reported that it works now.
  - Fix create-bootstrap target to produce tarballs ready to be consumed by ports.
  - Update bootstrap compilers to 8.4.3 on amd64, i386, aarch64.
  - Get rid merge build.boot.mk.in into build.mk.in.
  - Sort some Makefile variables.

Reviewed by:	Mikael Urankar <mikael.urankar@gmail.com> (ARM bits), tcberner
Approved by:	tcberner (mentor)
Differential Revision:	https://reviews.freebsd.org/D18378
This commit is contained in:
Gleb Popov 2018-12-07 05:46:39 +00:00
parent a1a2a6deff
commit 7bcee44538
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=486824
9 changed files with 56 additions and 72 deletions

View file

@ -18,8 +18,6 @@ COMMENT= Compiler for the functional language Haskell
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386
GHC_VERSION= 8.4.4
HSCOLOUR_VERSION= 1.24.4
LLVM_VERSION= 50

View file

@ -5,11 +5,11 @@
# Maintained by: haskell@FreeBSD.org
#
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386
DATADIR= ${PREFIX}/share/ghc-${GHC_VERSION}
EXAMPLESDIR= ${PREFIX}/share/examples/ghc-${GHC_VERSION}
LIB_DEPENDS+= libgmp.so:math/gmp
USES= autoreconf gmake iconv:translit localbase:ldflags ncurses perl5 tar:xz
USE_LOCALE= en_US.UTF-8
USE_PERL5= build
@ -21,13 +21,12 @@ NO_CCACHE= ccache: error: Failed to create directory /nonexistent/.ccache/tmp: P
# This is better fixed in files/build.mk.in
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --with-gmp-includes=${LOCALBASE}/include \
--with-gmp-libraries=${LOCALBASE}/lib \
--with-iconv-includes=${LOCALBASE}/include \
CONFIGURE_ARGS= --with-iconv-includes=${LOCALBASE}/include \
--with-iconv-libraries=${LOCALBASE}/lib
# Turn off for a while, see PR 228727
CONFIGURE_ARGS+= --enable-dtrace=0
SUB_FILES= build.mk \
build.boot.mk
SUB_FILES= build.mk
SUB_LIST= GHC_VERSION=${GHC_VERSION} \
NCURSESINC="${NCURSESBASE}/include" NCURSESLIB="${NCURSESLIB}" \
CFLAGS="${CFLAGS}"
@ -35,47 +34,57 @@ SUB_LIST= GHC_VERSION=${GHC_VERSION} \
OPTIONS_GROUP= BOOTSTRAP
BOOTSTRAP_DESC= Bootsrap using installed ghc
OPTIONS_GROUP_BOOTSTRAP=BOOT
OPTIONS_DEFINE= DYNAMIC PROFILE DOCS
OPTIONS_DEFINE= DYNAMIC GMP PROFILE DOCS
OPTIONS_SUB= yes
OPTIONS_DEFAULT= PROFILE DYNAMIC
# ghci segfaults on arm when dynamic linking is used
OPTIONS_EXCLUDE_armv6= DYNAMIC
OPTIONS_EXCLUDE_armv7= DYNAMIC
OPTIONS_EXCLUDE_aarch64= DYNAMIC
OPTIONS_DEFAULT= DYNAMIC PROFILE GMP
BOOT_DESC= Use installed GHC for bootstrapping
PROFILE_DESC= Add support for performance profiling
DYNAMIC_DESC= Add support for dynamic linking
DOCS_DESC= Install HTML documentation
DYNAMIC_DESC= Add support for dynamic linking
GMP_DESC= Use GNU Multi-precision Library for big integers support
PROFILE_DESC= Add support for performance profiling
DYNAMIC_CONFIGURE_ARGS= --with-system-libffi \
--with-ffi-includes=${LOCALBASE}/include \
--with-ffi-libraries=${LOCALBASE}/lib
DOCS_BUILD_DEPENDS+= sphinx-build:textproc/py-sphinx
DYNAMIC_CONFIGURE_WITH= system-libffi \
ffi-includes=${LOCALBASE}/include \
ffi-libraries=${LOCALBASE}/lib
# The version number is needed as lang/gcc installs a different version
DYNAMIC_LIB_DEPENDS= libffi.so.6:devel/libffi
GMP_CONFIGURE_WITH= gmp-includes=${LOCALBASE}/include \
gmp-libraries=${LOCALBASE}/lib
GMP_LIB_DEPENDS= libgmp.so:math/gmp
# Append substitutions for build.mk
BOOT_SUB_LIST= HSC2HS=${LOCALBASE}/bin/hsc2hs
BOOT_SUB_LIST_OFF= HSC2HS=${BOOT_HSC2HS}
DOCS_BUILD_DEPENDS+= sphinx-build:textproc/py-sphinx
DOCS_SUB_LIST= WITH_DOCS="YES"
DOCS_SUB_LIST_OFF= WITH_DOCS="NO"
DYNAMIC_SUB_LIST= WITH_DYNAMIC="YES"
DYNAMIC_SUB_LIST_OFF= WITH_DYNAMIC="NO"
GMP_SUB_LIST= INTEGER_LIBRARY="integer-gmp"
GMP_SUB_LIST_OFF= INTEGER_LIBRARY="integer-simple"
PROFILE_SUB_LIST= WITH_PROFILE="YES"
PROFILE_SUB_LIST_OFF= WITH_PROFILE="NO"
DOCS_SUB_LIST= WITH_DOCS="YES"
DOCS_SUB_LIST_OFF= WITH_DOCS="NO"
LOCALBASE?= /usr/local
GHC_ARCH= ${ARCH:S/amd64/x86_64/:C/armv.*/arm/}
.include <bsd.port.options.mk>
.if empty(PORT_OPTIONS:MBOOT)
. if ${ARCH} == armv6 || ${ARCH} == armv7
BOOT_GHC_VERSION= 8.4.2
. else
BOOT_GHC_VERSION= 8.4.3
. endif
DISTFILES+= ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-freebsd${EXTRACT_SUFX}:boot
.endif # MBOOT
@ -98,16 +107,6 @@ IGNORE= qemu-user-static isn't able to build lang/ghc, but it builds fine on a r
. endif
.endif
# Turn off for a while, see PR 228727
CONFIGURE_ARGS+= --enable-dtrace=0
.if ${OSVERSION} < 1200000
USE_GCC= yes
.else
. if !exists(/usr/bin/ld.bfd)
USE_BINUTILS= yes
. endif
LD= ld.bfd
.endif
CONFIGURE_ENV+= CC=${CC} LD=${LD}
DOCSDIR= ${PREFIX}/share/doc/${DISTNAME}
@ -275,7 +274,12 @@ post-install:
.PHONY: create-bootstrap
create-bootstrap:
cd ${WRKSRC} \
&& gmake binary-dist TAR_COMP=xz \
&& mv ${WRKSRC}/ghc-${GHC_VERSION}-${ARCH}-portbld-freebsd.tar.xz /tmp/ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
&& sha256 ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
&& stat -f %z ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
&& ${ECHO} "BIN_DIST_NAME=ghc-${GHC_VERSION}-boot" >> mk/build.mk \
&& ${ECHO} "BIN_DIST_TAR=ghc-${GHC_VERSION}-boot.tar" >> mk/build.mk \
&& gmake binary-dist TAR_COMP=xz \
&& ${MV} ${WRKSRC}/ghc-${GHC_VERSION}-boot-${GHC_ARCH}-portbld-freebsd.tar.xz /tmp/ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
cd /tmp \
&& sha256 ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz \
&& ${ECHO} -n "SIZE (ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz) = " \
&& ${STAT} -f %z ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz

View file

@ -1,14 +1,14 @@
TIMESTAMP = 1541010521
TIMESTAMP = 1541010522
SHA256 (ghc-8.4.4-src.tar.xz) = 11117735a58e507c481c09f3f39ae5a314e9fbf49fc3109528f99ea7959004b2
SIZE (ghc-8.4.4-src.tar.xz) = 11319500
SHA256 (ghc-8.4.2-boot-amd64-freebsd.tar.xz) = 8fe44700c0b765b38a2072c8ea9ddb1da18b4a738397c9ceddcce80708900e4f
SIZE (ghc-8.4.2-boot-amd64-freebsd.tar.xz) = 72751016
SHA256 (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 673230735fc459a3c05cf845ef7beeeb6eab9576bc03471b9fb50bd3fe29d911
SIZE (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 69976728
SHA256 (ghc-8.4.3-boot-amd64-freebsd.tar.xz) = 0e0324a539d471a813ed4d18c537fb19be22a4e250bd5434a3a911b9d5343724
SIZE (ghc-8.4.3-boot-amd64-freebsd.tar.xz) = 67718400
SHA256 (ghc-8.4.3-boot-i386-freebsd.tar.xz) = 65fcd48b1c0166e028b3f6d50ad295525e6b84490da82663ec66165e57e87972
SIZE (ghc-8.4.3-boot-i386-freebsd.tar.xz) = 66143592
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.3-boot-aarch64-freebsd.tar.xz) = 84611f37d31a43a3216274ee7dcee4b89f2c5ef6ab713222f266b5658c736e05
SIZE (ghc-8.4.3-boot-aarch64-freebsd.tar.xz) = 99933576
SHA256 (ghc-8.4.2-boot-armv6-freebsd.tar.xz) = 61d3a4486dbb904b05a735e98f23a49c2b464d6b19212dd655ff578f36d02f0d
SIZE (ghc-8.4.2-boot-armv6-freebsd.tar.xz) = 107368936
SHA256 (ghc-8.4.2-boot-armv7-freebsd.tar.xz) = eedb9416870bfe82315155751871e31e815b718b381ccf4f7e45a99a6ad7c94d

View file

@ -1,9 +0,0 @@
GhcLibWays = v
XMLDocWays =
HADDOCK_DOCS = NO
HSCOLOUR_SRCS = NO
INTEGER_LIBRARY = integer-simple
DYNAMIC_GHC_PROGRAMS = NO
BUILD_PROF_LIBS = NO
BIN_DIST_NAME = ghc-%%GHC_VERSION%%-boot
BIN_DIST_TAR = ghc-%%GHC_VERSION%%-boot.tar

View file

@ -6,6 +6,7 @@ DYNAMIC_GHC_PROGRAMS = %%WITH_DYNAMIC%%
BUILD_PROF_LIBS = %%WITH_PROFILE%%
HADDOCK_DOCS = %%WITH_DOCS%%
HSCOLOUR_SRCS = %%WITH_DOCS%%
INTEGER_LIBRARY = %%INTEGER_LIBRARY%%
# disable xelatex: PR 231438
BUILD_SPHINX_PDF = NO
BSD_PATH_TO_HSC2HS = %%HSC2HS%%

View file

@ -20,8 +20,6 @@ COMMENT= Compiler for the functional language Haskell
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386
GHC_VERSION= 8.4.3
HSCOLOUR_VERSION= 1.24.4
LLVM_VERSION= 50

View file

@ -1,14 +1,14 @@
TIMESTAMP = 1530033471
TIMESTAMP = 1530033472
SHA256 (ghc-8.4.3-src.tar.xz) = ae47afda985830de8811243255aa3744dfb9207cb980af74393298b2b62160d6
SIZE (ghc-8.4.3-src.tar.xz) = 11315068
SHA256 (ghc-8.4.2-boot-amd64-freebsd.tar.xz) = 8fe44700c0b765b38a2072c8ea9ddb1da18b4a738397c9ceddcce80708900e4f
SIZE (ghc-8.4.2-boot-amd64-freebsd.tar.xz) = 72751016
SHA256 (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 673230735fc459a3c05cf845ef7beeeb6eab9576bc03471b9fb50bd3fe29d911
SIZE (ghc-8.4.2-boot-i386-freebsd.tar.xz) = 69976728
SHA256 (ghc-8.4.3-boot-amd64-freebsd.tar.xz) = 0e0324a539d471a813ed4d18c537fb19be22a4e250bd5434a3a911b9d5343724
SIZE (ghc-8.4.3-boot-amd64-freebsd.tar.xz) = 67718400
SHA256 (ghc-8.4.3-boot-i386-freebsd.tar.xz) = 65fcd48b1c0166e028b3f6d50ad295525e6b84490da82663ec66165e57e87972
SIZE (ghc-8.4.3-boot-i386-freebsd.tar.xz) = 66143592
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.3-boot-aarch64-freebsd.tar.xz) = 84611f37d31a43a3216274ee7dcee4b89f2c5ef6ab713222f266b5658c736e05
SIZE (ghc-8.4.3-boot-aarch64-freebsd.tar.xz) = 99933576
SHA256 (ghc-8.4.2-boot-armv6-freebsd.tar.xz) = 61d3a4486dbb904b05a735e98f23a49c2b464d6b19212dd655ff578f36d02f0d
SIZE (ghc-8.4.2-boot-armv6-freebsd.tar.xz) = 107368936
SHA256 (ghc-8.4.2-boot-armv7-freebsd.tar.xz) = eedb9416870bfe82315155751871e31e815b718b381ccf4f7e45a99a6ad7c94d

View file

@ -1,9 +0,0 @@
GhcLibWays = v
XMLDocWays =
HADDOCK_DOCS = NO
HSCOLOUR_SRCS = NO
INTEGER_LIBRARY = integer-simple
DYNAMIC_GHC_PROGRAMS = NO
BUILD_PROF_LIBS = NO
BIN_DIST_NAME = ghc-%%GHC_VERSION%%-boot
BIN_DIST_TAR = ghc-%%GHC_VERSION%%-boot.tar

View file

@ -6,6 +6,7 @@ DYNAMIC_GHC_PROGRAMS = %%WITH_DYNAMIC%%
BUILD_PROF_LIBS = %%WITH_PROFILE%%
HADDOCK_DOCS = %%WITH_DOCS%%
HSCOLOUR_SRCS = %%WITH_DOCS%%
INTEGER_LIBRARY = %%INTEGER_LIBRARY%%
# disable xelatex: PR 231438
BUILD_SPHINX_PDF = NO
BSD_PATH_TO_HSC2HS = %%HSC2HS%%