summaryrefslogblamecommitdiff
path: root/lang/ghc/Makefile
blob: 11daccf7027adaf28f2c90a36ce19653b201c175 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                           




                                                                             
                   
                     
                 
                            
                                                                        
                                                                              
                                               

                                                                      
 


                                                              
                          
 

                              
                                
                   
                                              


                   





                                                         
                   
 
                                                          
 

                          





                                                    



                                                     
                     
                          
                                                                                 
                            








                                                                                   
     
                                         
      

                                                                   
      
 


                                               


                                                                                                      




                                   


                                                                          

                                                  
 
                                                                  
                                                                                      
         
                                                                        
 

                                                              

                                
                                               
 














                                                                 

                     












                                                                                           
             



                                                                                            
                            




                                                              
      
 
                                                           

           
                                                         
                                             
 
              

                                                                                                          
 
















                                                                                            
                                              

                                                                                           
                                               


                                                                                           
          
                           
 
             









                                                                                                             

                                                                   
 
                           
# New ports collection makefile for:	ghc
# Date created:				28 August 1999
# Whom:					Simon Marlow <simonmar@microsoft.com>
#
# $FreeBSD$

PORTNAME=	ghc
PORTVERSION=	6.8.2
PORTREVISION=	1
CATEGORIES=	lang haskell
MASTER_SITES=	http://www.haskell.org/ghc/dist/${PORTVERSION}/:source \
		http://www.haskell.org/ghc/dist/${PORTVERSION}/FreeBSD/:boot \
		${MASTER_SITE_LOCAL:S/$/:boot/}
DISTFILES=	ghc-${PORTVERSION}-src${EXTRACT_SUFX}:source \
		ghc-${PORTVERSION}-src-extralibs${EXTRACT_SUFX}:source

MAINTAINER=	haskell@FreeBSD.org
COMMENT=	A Compiler for the functional language Haskell

ONLY_FOR_ARCHS=	i386 amd64

GHC_VERSION=	${PORTVERSION}

USE_AUTOTOOLS=	autoconf:261:env
USE_BZIP2=	yes
LIB_DEPENDS+=	gmp.7:${PORTSDIR}/math/libgmp4

USE_PERL5=	yes
USE_GMAKE=	yes

# The configure process accepts,filters and canonicalises
# the CONFIGURE_TARGET variable. You can read the files
# ${WRKSRC}/configure and ${WRKSRC}/config.sub.
# This is better fixed in the ${WRKSRC}/mk/build.mk.
# You can view below.
GNU_CONFIGURE=	yes

OPTIONS=	PROFILE "Compile for profiling as well" on

.include <bsd.port.pre.mk>

.if ${ARCH} == "i386"
OPTIONS+=	DOCS "Install HTML documentation" on
.else
.undef		WITH_DOCS
.endif

.if exists(${LOCALBASE}/lib/libreadline.so.5)
LIB_DEPENDS+=	readline.5:${PORTSDIR}/devel/readline
.endif

.if ${ARCH} == "i386"
.if ${OSVERSION} >= 700000
DISTFILES+=	ghc-${PORTVERSION}-i386-unknown-freebsd7-boot${EXTRACT_SUFX}:boot
.elif ${OSVERSION} >= 600000
DISTFILES+=	ghc-${PORTVERSION}-i386-unknown-freebsd6-boot${EXTRACT_SUFX}:boot
.else
IGNORE=		unsupported at the moment
.endif
.endif

.if ${ARCH} == "amd64"
.if ${OSVERSION} >= 700000
DISTFILES+=	ghc-${PORTVERSION}-x86_64-unknown-freebsd7-boot${EXTRACT_SUFX}:boot
.else
IGNORE=		unsupported at the moment
.endif
EXTRA_PATCHES=	${PATCHDIR}/extra-patch-rts-Linker.c \
		${PATCHDIR}/extra-patch-driver-mangler-ghc-asm.lprl
.endif

DOCSDIR=	${PREFIX}/share/doc/${DISTNAME}
GHC_LIBDIR_REL=	lib/ghc-${GHC_VERSION}
PORTDOCS=	*

PLIST_SUB+=	GHC_VERSION=${GHC_VERSION} GHC_LIBDIR_REL=${GHC_LIBDIR_REL} DOCSDIR_REL=${DOCSDIR_REL}

.if defined(WITHOUT_PROFILE)
PLIST_SUB+=	PROFILE="@comment "
.else
PLIST_SUB+=	PROFILE=""
.endif

# This port builds by downloading a minimal binary distribution of GHC and
# using that to bootstrap.
BOOT_DIR=	${WRKDIR}/ghc-${GHC_VERSION}-boot
BOOT_GHC=	${BOOT_DIR}/bin/ghc-${GHC_VERSION}

CONFIGURE_ARGS+=	--with-ghc=${BOOT_GHC}  --with-gcc=${CC} \
	--with-gmp-includes=${LOCALBASE}/include --with-gmp-libraries=${LOCALBASE}/lib
# libgmp:
CONFIGURE_ENV+=	CFLAGS=-I${LOCALBASE}/include LDFLAGS=-L${LOCALBASE}/lib

# override TMPDIR because /tmp often doesn't have enough space
# to build some of the larger libraries.
TMPDIR=		${WRKSRC}/tmp
MAKE_ENV+=	TMPDIR=${TMPDIR}
EXCLUDELIBS=	ALUT GLUT HGL OpenAL OpenGL X11

# Defining WITH_DOCS:
# An in place installation and registration of haddock will be
# activated. In this way it's possible to use it directly into
# the build tree, without needing to install it. At the end
# you could view the output of: ${BOOT_GHC} describe haddock
.if defined(WITH_DOCS)

MASTER_SITES+=	http://www.haskell.org/haddock/dist/:docs \
		ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/:docs

DISTFILES+=	haddock-2.0.0.0.tar.gz:docs \
		hscolour-1.9.tar.gz:docs

EXTRACT_ONLY=	${_DISTFILES:C/hscolour.*$//g:C/haddock.*$//g}

MAN1=		ghc.1

SUB_FILES=	pkg-message.haddock

SLAVES_PREFIX=		${WRKDIR}/slaves_prefix
SLAVES_WRKDIRPREFIX=	${WRKDIR}/slaves_wrkdirprefix
SLAVES_MAKE_ARGS=	-DSLAVE PREFIX=${SLAVES_PREFIX} WRKDIRPREFIX=${SLAVES_WRKDIRPREFIX}

MAKE_ENV+=	PATH=${SLAVES_PREFIX}/bin:${PATH}
CONFIGURE_ENV+=	PATH=${SLAVES_PREFIX}/bin:${PATH}

BUILD_DEPENDS+=	${LOCALBASE}/share/xsl/docbook/html:${PORTSDIR}/textproc/docbook-xsl \
		${LOCALBASE}/bin/xsltproc:${PORTSDIR}/textproc/libxslt
.endif

post-extract:
	@${ECHO} >> ${WRKSRC}/mk/build.mk "docdir = ${PREFIX}/share/doc/ghc-${GHC_VERSION}"
	@${ECHO} >> ${WRKSRC}/mk/build.mk "htmldir = ${PREFIX}/share/doc/ghc-${GHC_VERSION}"
	@${ECHO} >> ${WRKSRC}/mk/build.mk "mandir = ${PREFIX}/man"
	@${ECHO} >> ${WRKSRC}/mk/build.mk "infodir = ${PREFIX}/info"
.if defined(WITHOUT_PROFILE)
	@${ECHO} >> ${WRKSRC}/mk/build.mk "GhcLibWays ="
.endif
.if defined(WITH_DOCS)
	@${ECHO} >> ${WRKSRC}/mk/build.mk "XMLDocWays = html"
	@${ECHO} >> ${WRKSRC}/mk/build.mk "HADDOCK_DOCS = YES"
.endif

	@cd ${WRKSRC}/libraries && ${RM} -rf ${EXCLUDELIBS}

post-patch:
	@${REINPLACE_CMD} s+%%LOCALBASE%%+${LOCALBASE}+ \
		${WRKSRC}/rts/package.conf.in

pre-configure:
	@(cd ${BOOT_DIR} && ${CONFIGURE_ENV} ./${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS} --prefix=${BOOT_DIR})
	@(cd ${BOOT_DIR} && ${GMAKE} install)

# Defining WITH_DOCS:
# Defining "SLAVE" in devel/hs-haddock and
# print/hs-hscolour flips the building process
# functionally to this port.
.if defined(WITH_DOCS)
	@${ECHO_MSG} -e "\a"
	@${ECHO_MSG} "====================================================================="
	@${ECHO_MSG} "  WARNING: Now Haddock and HsColour will be built, the respective    "
	@${ECHO_MSG} "           ports won't be installed, but it takes place an in-place  "
	@${ECHO_MSG} "           installation and registration of both.                    "
	@${ECHO_MSG} "====================================================================="
	@${ECHO_MSG} ""
	@sleep 3

	@${MKDIR} ${SLAVES_PREFIX}
	@${MKDIR} ${SLAVES_WRKDIRPREFIX}

	@(cd ${PORTSDIR}/devel/hs-haddock && \
		${SETENV} PATH=${BOOT_DIR}/bin:${PATH} ${MAKE} ${SLAVES_MAKE_ARGS} install)

	@(cd ${PORTSDIR}/print/hs-hscolour && \
		${SETENV} PATH=${BOOT_DIR}/bin:${PATH} ${MAKE} ${SLAVES_MAKE_ARGS} install)
.endif

pre-build:
	@${MKDIR} ${TMPDIR}

post-install:
	# cabalised hs-foo-ghc ports
	@${MKDIR} ${PREFIX}/lib/ghc-${PORTVERSION}/cabal
	@${MKDIR} ${PREFIX}/share/doc/ghc-${GHC_VERSION}/cabal

.if defined(WITH_DOCS)
	@(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install-docs)

	@${ECHO_MSG}
	@${CAT} ${PKGMESSAGE}
	@${ECHO_MSG}
.endif
	@${RM} -f ${PREFIX}/lib/ghc-${PORTVERSION}/package.conf.old

.include <bsd.port.post.mk>