summaryrefslogtreecommitdiff
path: root/lang/ghc-bootstrap/Makefile
blob: 5f0d23d3db184e6bfd82e33c1e78213052dfc08f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# $NetBSD: Makefile,v 1.3 2014/05/29 23:36:42 wiz Exp $

DISTNAME=	ghc-6.8.3
PKGNAME=	ghc-bootstrap-6.8.3
PKGREVISION=	2
CATEGORIES=	lang
MASTER_SITES=	http://www.haskell.org/ghc/dist/6.8.3/
DISTFILES=	ghc-6.8.3-src.tar.bz2

OWNER=		dholland@NetBSD.org
HOMEPAGE=	http://www.haskell.org/ghc/
COMMENT=	Bootstrap kit generator for the GHC Haskell compiler

#
# build defs
#

CONFLICTS+=	ghc-[0-9]*
# Disable this (at least for now) so bootstrap kits get built by autobuilds.
#NOT_FOR_BULK_PLATFORM=	*-*-*	# Package is useful only for maintainers.

CHECK_PORTABILITY_SKIP=	distrib/prep-bin-dist-mingw

# += in a shell script, but in embedded AWK code, so it's ok.
CHECK_PORTABILITY_SKIP+=	libraries/base/cbits/ubconfc

GNU_CONFIGURE=		yes
#CONFIGURE_ARGS+=	--with-ghc=${WRKDIR}/ghc-6.4.2/ghc/compiler/ghc-inplace
CONFIGURE_ARGS+=	--with-ghc=${BUILDLINK_PREFIX.ghc}/bin/ghc
CONFIGURE_ENV+=		PerlCmd=${PERL5:Q}
#USE_TOOLS+=		gmake pkg-config perl:run
USE_TOOLS+=		gmake pkg-config perl

SUBST_CLASSES+=		prefix
SUBST_STAGE.prefix=	pre-configure
SUBST_FILES.prefix+=	mk/bootstrap.mk
SUBST_FILES.prefix+=	libraries/readline/configure
SUBST_FILES.prefix+=	libraries/readline/readline.cabal
SUBST_FILES.prefix+=	rts/package.conf.in
SUBST_SED.prefix=	-e 's,@PREFIX@,${PREFIX},g'

#
# Build system settings.
#
# 1. The ghc compiler normally splits the generated C files into small
# parts before sending them to gcc, to enable the linker to eliminate
# unused parts.  This does however not play nice with the pkgsrc
# framework, and the result is that the build takes more than 5 times
# as long than when the files are not split.  See
#    http://mail-index.netbsd.org/tech-pkg/2006/07/30/0005.html
# for a description of the problem.
# Disable file splitting until pkgsrc has been improved.
#
# 2. For the bootstrap kit, set GhcLibWays=v; this excludes p
# (profiling libs) which take time to build and are quite useless for
# bootstrapping.
#
# 3. Later GHC versions let you set INTEGER_LIBRARY=integer-simple to
# avoid depending on gmp. This is not available in 6.8.3; instead we
# have GHC build with the rather old copy of gmp it comes with. It is
# important for the bootstrap kit to not depend on the pkgsrc shared
# gmp library, since then if its major version changes you'd be stuck.
#
pre-configure:
	${ECHO} "SplitObjs=NO" > ${WRKSRC}/mk/build.mk
	${ECHO} "GhcLibWays=v" >> ${WRKSRC}/mk/build.mk
#	${ECHO} "INTEGER_LIBRARY=integer-simple" >> ${WRKSRC}/mk/build.mk

#
# Configure script hacks.
#
# Disable readline, and disable external gmp in favor of the in-tree
# copy shipped with ghc 6.8.3. The bootstrap kit should not depend on
# shared libs from pkgsrc, as if they get their major versions bumped
# you get stuck.
#
CONFIGURE_ENV+=	ac_cv_header_readline_readline_h=no \
		ac_cv_header_readline_history_h=no \
		fp_cv_ghc_has_readline=no \
		ac_cv_lib_gmp___gmpz_fdiv_qr=no

#.include "../../devel/gmp/buildlink3.mk"

#
# As an additional measure, delete the readline and gmp .so files from
# the buildlink directory.
#
post-wrapper:
	rm -f ${WRKDIR}/.buildlink/lib/libreadline.so*
	rm -f ${WRKDIR}/.buildlink/lib/libgmp.so*
	rm -f ${WRKDIR}/.buildlink/lib/libgmpxx.so*

#
# By request of Joerg link libgcc statically so the bootstrap kit
# works on a clang-only system.
#
.include "../../mk/compiler.mk"
.if !empty(PKGSRC_COMPILER:Mgcc)
LDFLAGS+=	-static-libgcc
.endif

# We need to use lang/ghc to compile, and for now at least that requires
# buildlinking the compiler.
.include "../../lang/ghc/buildlink3.mk"

# Threads are required.
.include "../../mk/pthread.buildlink3.mk"

#
# make it go
#

.include "../../mk/bsd.pkg.mk"