Ticket #25558: Portfile.6

File Portfile.6, 4.4 KB (added by kitchen.andy@…, 12 years ago)
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2# $Id$
3
4PortSystem          1.0
5
6name                ghc
7set canonicalname   ghc
8version             7.4.2
9categories          lang haskell
10maintainers         FIXME
11license             BSD
12platforms           darwin
13
14description The Glorious Glasgow Haskell Compilation System
15long_description    \
16        The Glasgow Haskell Compiler is a robust,       \
17        fully-featured, optimising compiler and interactive \
18        environment for Haskell 98, GHC compiles Haskell to \
19        either native code or C.  It implements numerous    \
20        experimental language extensions to Haskell 98,     \
21        for example: concurrency, a foreign language interface, \
22        multi-parameter type classes, scoped type variables,    \
23        existential and universal quantification, unboxed   \
24        types, exceptions, weak pointers, and so on.        \
25        GHC comes with a generational garbage collector,    \
26        and a space and time profiler.
27
28homepage        http://haskell.org/${canonicalname}
29master_sites    ${homepage}/dist/${version}/
30distname        ${canonicalname}-${version}-src
31worksrcdir      ${canonicalname}-${version}
32
33use_bzip2       yes
34
35distfiles       ${canonicalname}-${version}-src${extract.suffix}:src \
36                ${canonicalname}-${version}-testsuite${extract.suffix}:testsuite
37
38checksums       ghc-7.4.2-src.tar.bz2 \
39                rmd160  c1caf17de353d3f805966ea64235a8341a8e071e \
40                sha256  f2ee1289a33cc70539287129841acc7eaf16112bb60c59b5a6ee91887bfd836d \
41                ghc-7.4.2-testsuite.tar.bz2 \
42                rmd160  6ff2a50d2165baa540da8a486d30fab47dfdbd0d \
43                sha256  227fee370e84892e4316f611c8cae0ad24d58d594d0b49f7960caf05b4f85332
44
45depends_build   port:ghc-bootstrap
46
47depends_lib     port:gmp           \
48                port:ncurses       \
49                port:libiconv
50
51use_parallel_build  no
52test.run yes
53
54# -- BEGIN gcc variants
55
56variant gcc43 conflicts gcc44 gcc45 gcc46 gcc47 description {Compile with gcc 4.3} {
57    configure.compiler macports-gcc-4.3
58    depends_lib-append port:gcc43
59}
60
61variant gcc44 conflicts gcc43 gcc45 gcc46 gcc47 description {Compile with gcc 4.4} {
62    configure.compiler macports-gcc-4.4
63    depends_lib-append port:gcc44
64}
65
66variant gcc45 conflicts gcc43 gcc44 gcc46 gcc47 description {Compile with gcc 4.5} {
67    configure.compiler macports-gcc-4.5
68    depends_lib-append port:gcc45
69}
70
71variant gcc46 conflicts gcc43 gcc44 gcc45 gcc47 description {Compile with gcc 4.6} {
72    configure.compiler macports-gcc-4.6
73    depends_lib-append port:gcc46
74}
75
76variant gcc47 conflicts gcc43 gcc44 gcc45 gcc46  description {Compile with gcc 4.7} {
77    configure.compiler macports-gcc-4.7
78    depends_lib-append port:gcc47
79}
80
81if {![variant_isset gcc43] && ![variant_isset gcc44] && ![variant_isset gcc45] && ![variant_isset gcc46] && ![variant_isset gcc47]} {
82    default_variants +gcc45
83}
84
85# -- END gcc variants
86
87set bootstraproot ${prefix}/share/ghc-bootstrap
88configure.args  --with-ghc=${bootstraproot}/bin/ghc     \
89                --with-gcc=${configure.cc}              \
90                --with-iconv-includes=${prefix}/include \
91                --with-iconv-libraries=${prefix}/lib    \
92                --with-gmp-includes=${prefix}/include   \
93                --with-gmp-libraries=${prefix}/lib
94
95# OK so because the bootstrap binary has been prebuilt for libraries
96# in /usr/lib we search these before macports stuff to prevent
97# link errors, ghc _should_ actually compile itself in stage2
98# using paths from the command line arguments
99
100compiler.cpath /usr/include:${compiler.cpath} 
101compiler.library_path /usr/lib:${compiler.cpath} 
102
103post-destroot {
104    set prefixlib ${prefix}/lib/${worksrcdir}
105    set destlib   ${destroot}/${prefixlib}
106    set libver    ${canonicalname}${version}
107
108    variable libs [ list                               \
109                    libHSrts-${libver}.dylib           \
110                    libHSrts_debug-${libver}.dylib     \
111                    libHSrts_thr-${libver}.dylib       \
112                    libHSrts_thr_debug-${libver}.dylib ]
113
114    system "install_name_tool -id ${prefixlib}/libffi.dylib ${destlib}/libffi.dylib"
115
116    foreach lib $libs {
117      regexp -line {[^[:space:]]*/libffi.*\.dylib} [exec otool -L ${destlib}/${lib}] oldlib
118      system "install_name_tool -change ${oldlib} ${prefixlib}/libffi.dylib ${destlib}/$lib"
119    }
120}