a project to simplify installation of open source software
on Mac OS X and Darwin
# $Id: Portfile 22763 2007-03-13 23:11:53Z eridius@macports.org $
PortSystem 1.0
name ghc-devel
version 6.5
revision 3
categories lang
maintainers nomaintainer@macports.org
platforms darwin
description The Glorious Glasgow Haskell Compilation System (development version)
long_description \
The Glasgow Haskell Compiler is a robust, \
fully-featured, optimising compiler and interactive \
environment for Haskell 98, GHC compiles Haskell to \
either native code or C. It implements numerous \
experimental language extensions to Haskell 98, \
for example: concurrency, a foreign language interface, \
multi-parameter type classes, scoped type variables, \
existential and universal quantification, unboxed \
types, exceptions, weak pointers, and so on. \
GHC comes with a generational garbage collector, \
and a space and time profiler.
homepage http://www.haskell.org/ghc/
set darcs_site http://darcs.haskell.org/
set worksrcdir ghc
platform darwin i386 {}
platform darwin 6 {}
pre-fetch {
if {[variant_isset darwin_i386]} {
return -code error "ghc-devel is not supported on OS X i386 yet"
}
if {[variant_isset darwin_6]} {
return -code error "ghc-devel is not supported on Jaguar (OS X 10.2.x)"
}
}
fetch { cd ${workpath}
system "darcs get --partial ${darcs_site}ghc"
cd ${worksrcdir}
system "chmod +x ./darcs-all"
system "./darcs-all get"
}
variant test { ui_msg "testsuite and nofib benchmarks will be built" }
post-fetch { cd ${worksrcpath}
if { [variant_isset test] } {
system "darcs get --partial ${darcs_site}testsuite"
system "darcs get --partial ${darcs_site}nofib"
}
system "./darcs-all pull -a"
}
extract { }
checksum { }
depends_build port:ghc \
port:alex \
port:darcs \
port:happy
depends_lib port:readline \
port:gmp
#user_notes All of the executables have the version as a suffix, \
# so you must invoke ghc-6.5 or ghci-6.5 or hsc2hs-6.5... \
# Not all of the files in /bin are different from the \
# production version, but it seems safer not to overwrite \
# the versions that are officially supported.
#bugs GHC does not support DESTDIR. Instead, we install \
# everything into ${destroot}/${prefix}, and then fix up \
# the five scripts which actually have the installation \
# path hard coded.
platform darwin 7 {
depends_build-append path:${prefix}/bin/gmake:gmake
pre-configure {
set cfg [open "${worksrcpath}/mk/build.mk" w]
puts $cfg "#"
puts $cfg "# Local configuration overrides for DarwinPorts"
puts $cfg "#"
puts $cfg "ReadlineIncludePath=${prefix}/include"
puts $cfg "SRC_CC_OPTS += -I${prefix}/include"
puts $cfg "SRC_HC_OPTS += -I${prefix}/include -L/usr/lib -L${prefix}/lib"
puts $cfg "EXTRA_HSC2HS_OPTS += -I${prefix}/include"
puts $cfg "EXTRA_LD_OPTS += -L/usr/lib"
puts $cfg "EXTRA_LD_OPTS += -L${prefix}/lib"
close $cfg
cd ${worksrcpath}
system "autoreconf"
}
build.cmd gmake
}
platform darwin 8 {
patchfiles-append patch-GC.c
pre-configure {
set cfg [open "${worksrcpath}/mk/build.mk" w]
puts $cfg "#"
puts $cfg "# Local configuration overrides for DarwinPorts"
puts $cfg "#"
puts $cfg "ReadlineIncludePath=${prefix}/include"
puts $cfg "SRC_CC_OPTS += -I${prefix}/include"
puts $cfg "SRC_HC_OPTS += -I${prefix}/include -L/usr/lib -L${prefix}/lib"
puts $cfg "EXTRA_HSC2HS_OPTS += -I${prefix}/include"
puts $cfg "EXTRA_LD_OPTS += -L/usr/lib"
puts $cfg "EXTRA_LD_OPTS += -L${prefix}/lib"
close $cfg
cd ${worksrcpath}
system "autoreconf"
}
}
configure.env LDFLAGS="-L${prefix}/lib" \
CPPFLAGS="-I${prefix}/include" \
CFLAGS="-I${prefix}/include"
configure.args --prefix=${destroot}/${prefix} \
--mandir=${destroot}/${prefix}/share/man/
variant noopengl { configure.args-append --disable-hopengl }
post-destroot { foreach script_name { ghc ghci ghc-pkg } {
reinplace s|${destroot}/${prefix}|${prefix}|g ${destroot}/${prefix}/bin/${script_name}-${version}
}
foreach script_name { ghcprof hsc2hs stat2resid } {
reinplace s|${destroot}/${prefix}|${prefix}|g ${destroot}/${prefix}/bin/${script_name}
}
reinplace "s|\\\$@\"\}|\\\$@\"\} -L${prefix}/lib -I${prefix}/include |" ${destroot}/${prefix}/bin/ghc
reinplace s|${destroot}/${prefix}|${prefix}|g ${destroot}/${prefix}/lib/ghc-${version}/package.conf
file delete ${destroot}/${prefix}/bin/ghc
file delete ${destroot}/${prefix}/bin/ghci
file delete ${destroot}/${prefix}/bin/ghc-pkg
foreach bin_name {ghcprof hasktags hp2ps hsc2hs runghc runhaskell stat2resid} {
file rename ${destroot}/${prefix}/bin/${bin_name} ${destroot}/${prefix}/bin/${bin_name}-${version}
}
cd ${destroot}/${prefix}/lib/ghc-${version}
system "ranlib *.a"
}