New Ticket     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #20132: lang-ghc.diff

File lang-ghc.diff, 5.6 KB (added by ecronin@…, 2 years ago)

partial update to fix Snow Leopard compat

  • files/patch-sl-compiler-main-DynFlags.hs.diff

     
     1--- compiler/main/DynFlags.hs.orig      2010-02-09 15:39:50.000000000 -0500 
     2+++ compiler/main/DynFlags.hs   2010-02-09 15:49:29.000000000 -0500 
     3@@ -2115,10 +2115,20 @@ 
     4       -- -fomit-frame-pointer : *must* in .hc files; because we're stealing 
     5       --   the fp (%ebp) for our register maps. 
     6         =  let n_regs = stolen_x86_regs _dflags 
     7-               sta = opt_Static 
     8            in 
     9-                    ( [ if sta then "-DDONT_WANT_WIN32_DLL_SUPPORT" else "" 
     10+                    ( 
     11+#if darwin_TARGET_OS 
     12+                      -- By default, gcc on OS X will generate SSE 
     13+                      -- instructions, which need things 16-byte aligned, 
     14+                      -- but we don't 16-byte align things. Thus drop 
     15+                      -- back to generic i686 compatibility. Trac #2983. 
     16+                      -- 
     17+                      -- Since Snow Leopard (10.6), gcc defaults to x86_64. 
     18+                      ["-march=i686", "-m32"], 
     19+#else 
     20+                      [ if sta then "-DDONT_WANT_WIN32_DLL_SUPPORT" else "" 
     21                       ], 
     22+#endif 
     23                       [ "-fno-defer-pop", 
     24                         "-fomit-frame-pointer", 
     25                         -- we want -fno-builtin, because when gcc inlines 
  • files/patch-sl-compiler-main-DriverPipeline.hs.diff

     
     1--- ./compiler/main/DriverPipeline.hs.bak       2010-02-09 02:26:27.000000000 -0500 
     2+++ ./compiler/main/DriverPipeline.hs   2010-02-09 02:26:54.000000000 -0500 
     3@@ -988,13 +988,6 @@ 
     4         -- This is a temporary hack. 
     5                        ++ ["-mcpu=v9"] 
     6 #endif 
     7-#if defined(darwin_TARGET_OS) && defined(i386_TARGET_ARCH) 
     8-                          -- By default, gcc on OS X will generate SSE 
     9-                          -- instructions, which need things 16-byte aligned, 
     10-                          -- but we don't 16-byte align things. Thus drop 
     11-                          -- back to generic i686 compatibility. Trac #2983. 
     12-                       ++ ["-march=i686"] 
     13-#endif 
     14                       ++ (if hcc && mangle 
     15                             then md_regd_c_flags 
     16                             else []) 
  • Portfile

     
    11# $Id$ 
    22 
    33PortSystem 1.0 
     4PortGroup  archcheck 1.0 
    45 
    56name            ghc 
    67set canonicalname       ghc 
     
    6869depends_lib     port:gmp        \ 
    6970                port:ncursesw   \ 
    7071                port:libiconv 
     72archcheck.files lib/libgmp.dylib \ 
     73                lib/libncursesw.dylib \ 
     74                lib/libiconv.dylib 
    7175 
    7276variant cabal_configure_debug description {Add verbose debugging to cabal configure commands} { 
    7377        patchfiles-append       patch-compiler-Makefile-debug.diff      \ 
     
    100104} 
    101105 
    102106 
    103 platform darwin 10 { 
    104                 pre-fetch { 
    105                         return -code error "${canonicalname} is not yet supported on Mac OS X 10.6.x (SnowLeopard)" 
    106                 } 
    107 } 
    108  
    109  
    110107platform darwin 8 powerpc { 
    111108                global ghc_bootversion 
    112109                set ghc_bootversion     6.10.1 
     
    211208} 
    212209 
    213210 
     211platform darwin 10 i386 { 
     212                global ghc_bootversion 
     213                set ghc_bootversion     6.8.2 
     214 
     215                master_sites-append     ${homepage}/dist/${ghc_bootversion}/:bootstrap 
     216 
     217                distfiles-append        ${canonicalname}-${ghc_bootversion}-darwin-i386-leopard-bootstrap.tar.bz2:bootstrap 
     218 
     219                checksums-append        ${canonicalname}-${ghc_bootversion}-darwin-i386-leopard-bootstrap.tar.bz2 md5 f263cedef8bcbaa7e9014b3e06923583 
     220 
     221                extract.only            ${canonicalname}-${version}-src.tar.bz2 \ 
     222                                        ${canonicalname}-${version}-src-extralibs.tar.bz2 \ 
     223                                        ${canonicalname}-${ghc_bootversion}-darwin-i386-leopard-bootstrap.tar.bz2 
     224 
     225                pre-fetch { 
     226                        set minimum_xcodeversion 3.1 
     227 
     228                        set current_xcodeversion [exec defaults read /Developer/Applications/Xcode.app/Contents/Info CFBundleShortVersionString] 
     229                        if {[rpm-vercomp ${current_xcodeversion} ${minimum_xcodeversion}] < 0} { 
     230                                ui_msg "On Mac OS X ${macosx_version}, ${name} ${version} requires Xcode ${minimum_xcodeversion} but you have Xcode ${current_xcodeversion}." 
     231                                return -code error "incompatible Xcode version" 
     232                        } 
     233                } 
     234 
     235 
     236                # GHC is not 64-bit friendly yet 
     237                configure.build_arch i386 
     238                patchfiles-append patch-sl-compiler-main-DriverPipeline.hs.diff \ 
     239                        patch-sl-compiler-main-DynFlags.hs.diff 
     240 
     241                pre-configure { 
     242                        # fix up the bootstrap ghc to use 32-bit gcc 
     243                        reinplace "s|-I|-optc-m32 -opta-m32 -optl-m32 -I|g" \ 
     244                                ${workpath}/ghc-bootstrap/bin/ghc 
     245                        reinplace "s|--lflag=\"|--cflag=\"-m32\" --lflag=\"-m32 |g" \ 
     246                                ${workpath}/ghc-bootstrap/bin/hsc2hs 
     247                 
     248                        # make the build use 32-bit gcc 
     249                        reinplace "s|--lflag=\"|--cflag=\"-arch i386\" --lflag=\"-arch i386 |g" \ 
     250                                ${worksrcpath}/mk/build.mk 
     251                        set cfg [open "${worksrcpath}/mk/build.mk" a] 
     252                puts $cfg "CC_OPTS += -m32" 
     253                                puts $cfg "EXTRA_CABAL_CONFIGURE_FLAGS += --ld-options=\"-arch i386 \" --gcc-options=\"-arch i386 \"" 
     254                        close $cfg 
     255                        reinplace "s|\$\(CABAL\) configure|\$\(CABAL\) configure  \$\(EXTRA_CABAL_CONFIGURE_FLAGS\)|g" \ 
     256                                ${worksrcpath}/libraries/Makefile 
     257 
     258                        # make the intermediate and final ghc use 32-bit gcc 
     259                        reinplace "s|executablename|executablename -optc-m32 -opta-m32 -optl-m32|g" \ 
     260                                ${worksrcpath}/ghc/ghc.wrapper 
     261                } 
     262} 
    214263post-extract { 
    215264     system "tar jxf ${distpath}/testsuite-${version}.tar.bz2 -C ${worksrcpath}"  
    216265}