Ticket #25066: Portfile.diff

File Portfile.diff, 6.1 KB (added by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), 14 years ago)
  • Portfile

    old new  
    11# $Id: Portfile 59188 2009-10-11 09:08:29Z blb@macports.org $
    22
    33PortSystem 1.0
     4PortGroup  muniversal 1.0
    45
    56name          arpack
    67version       1
    7 revision      3
     8revision      4
    89categories    math
    910platforms     darwin
    1011maintainers             mmoll
     
    2122use_configure   no
    2223worksrcdir      ARPACK
    2324patchfiles      patch-arpack.diff
    24 post-patch {
    25     if {[variant_isset g95]} {
    26         reinplace "s|-ff2c||" ${worksrcpath}/ARmake.inc
    27     }
    28 }
     25
    2926use_parallel_build      no
    30 build.args      all home=${worksrcpath}
    31 destroot    {
    32    xinstall -m 644 -v -W ${worksrcpath} libarpack.a ${destroot}${prefix}/lib
     27
     28# Fortran compilers can not cross-compile
     29if { ${os.arch}=="i386" } {
     30    set universal_archs_supported "i386 x86_64"
     31} else {
     32    set universal_archs_supported "ppc ppc64"
     33}
     34
     35if { ! [variant_isset universal]} {
     36        build.args-append home=${worksrcpath}
     37        if { ${build_arch}=="x86_64" || ${build_arch}=="ppc64" } {
     38                build.args-append FFLAGS='-O2 -m64'
     39        } else {
     40                build.args-append FFLAGS='-O2 -m32'
     41        }
     42} else {
     43        foreach arch {x86_64 i386 ppc ppc64} {
     44                set merger_build_args(${arch}) home=${worksrcpath}-${arch}
     45                if { ${arch}=="x86_64" || ${arch}=="ppc64" } {
     46                        lappend merger_build_args(${arch}) FFLAGS='-O2 -m64'
     47                } else {
     48                        lappend merger_build_args(${arch}) FFLAGS='-O2 -m32'
     49                }
     50        }
     51
    3352}
    34 post-destroot {
    35         system "ranlib ${destroot}${prefix}/lib/libarpack.a"
     53
     54proc make_dylib { name lib_dir arch libs curVer } {
     55    global destroot prefix gccnumber
     56
     57    set comVer [join [lrange [split ${curVer} '.'] 0 0] '.']
     58
     59    set cmd "\
     60              /usr/bin/ld -arch ${arch} -dynamic -dylib -single_module -dead_strip \
     61              -x -all_load -L. -L${prefix}/lib/gcc${gccnumber}/${arch} -L${prefix}/lib/gcc${gccnumber} -L${prefix}/lib \
     62              -dylib_install_name ${prefix}/lib/lib${name}.${comVer}.dylib \
     63              -current_version ${curVer} \
     64              -compatibility_version ${comVer} \
     65              lib${name}.a -o lib${name}.${curVer}.dylib ${libs}"
     66
     67    system "cd ${lib_dir} && ${cmd}"
     68}
     69
     70pre-build {
     71        build.args-append FC=${configure.fc} MAKE=${build.cmd}
     72}
     73
     74post-build {
     75    set curVer ${version}
     76    set comVer [join [lrange [split ${version} '.'] 0 1 ] '.']
     77
     78    if { ![variant_isset universal] } {
     79        set archs ${build_arch}
     80    } else {
     81        set archs ${universal_archs_to_use}
     82    }
     83
     84    foreach arch ${archs} {
     85        if { ![variant_isset universal] } {
     86            set dir ${worksrcpath}
     87        } else {
     88            set dir ${worksrcpath}-${arch}
     89        }
     90
     91        make_dylib arpack ${dir} ${arch} "-latlas -llapack -lgfortran -lSystem" ${version}
     92
     93        if { [variant_isset mpi] } {
     94            make_dylib parpack ${dir} ${arch} "-llapack -lgfortran -lmpi_f77 -lSystem -larpack.1" ${version}
     95        }
     96    }
     97}
     98
     99post-configure {
     100        if { [variant_isset mpi] } {
     101            set stlibs "libarpack.a libparpack.a"
     102            set shlibs "libarpack.1.dylib libparpack.1.dylib"
     103        } else {
     104            set stlibs "libarpack.a"
     105            set shlibs "libarpack.1.dylib"
     106        }
     107
     108        if { ![variant_isset universal] } {
     109            set fl [open ${worksrcpath}/Makefile "a"]
     110            puts ${fl} "\n.PHONY install"
     111            puts ${fl} "\t.install: ${stlibs} ${shlibs}"
     112            foreach lib ${stlibs} {
     113                puts ${fl} "\tinstall -m 644 -v ${lib}"
     114            }
     115            foreach lib ${shlibs} {
     116                puts ${fl} "\tinstall -m 755 -v ${lib}"
     117            }
     118            close ${fl}
     119        } else {
     120            foreach arch ${universal_archs_to_use} {
     121                set fl [open ${worksrcpath}-${arch}/Makefile "a"]
     122                puts ${fl} "\n.PHONY: install"
     123                puts ${fl} "install: ${stlibs} ${shlibs}"
     124                foreach lib ${stlibs} {
     125                    puts ${fl} "\tinstall -m 644 -v ${lib} ${destroot}-${arch}${prefix}/lib"
     126                }
     127                foreach lib ${shlibs} {
     128                    puts ${fl} "\tinstall -m 755 -v ${lib} ${destroot}-${arch}${prefix}/lib"
     129                }
     130                close ${fl}
     131            }
     132        }
    36133}
    37134
    38135variant gcc42 description {build with gfortran-mp-4.2} conflicts gcc43 gcc44 g95 {
    39         build.args-append       FC=${prefix}/bin/gfortran-mp-4.2
    40136        depends_build-append    port:gcc42
     137        configure.fc ${prefix}/bin/gfortran-mp-4.2
    41138}
    42139
    43140variant gcc43 description {build with gfortran-mp-4.3} conflicts gcc42 gcc44 g95 {
    44         build.args-append       FC=${prefix}/bin/gfortran-mp-4.3
    45141        depends_build-append    port:gcc43
     142        configure.fc ${prefix}/bin/gfortran-mp-4.3
    46143}
    47144
    48145variant gcc44 description {build with gfortran-mp-4.4} conflicts gcc42 gcc43 g95 {
    49         build.args-append       FC=${prefix}/bin/gfortran-mp-4.4
    50146        depends_build-append    port:gcc44
     147        configure.fc ${prefix}/bin/gfortran-mp-4.4
    51148}
    52149
    53 variant g95 description {build with g95} conflicts gcc42 gcc43 gcc44 {
    54         build.args-append       FC=${prefix}/bin/g95
    55         depends_build-append    port:g95
     150if { [variant_isset gcc42] } {
     151  set gccversion    4.2
     152} elseif { [variant_isset gcc43] } {
     153  set gccversion    4.3
     154} else {
     155  set gccversion    4.4
    56156}
     157set gccnumber       [join [split ${gccversion} .] ""]
    57158
    58159variant mpi description {build PARPACK, the parallel eigenvalue solver library} {
    59160  distfiles-append parpack96.tar.gz ppatch.tar.gz
     
    65166           }
    66167        }
    67168        pre-build { foreach entry [glob -directory ${worksrcpath}/PARPACK */MPI/mpif.h] { delete $entry } }
     169
    68170        depends_build port:openmpi
    69         build.args all FC=${prefix}/bin/openmpif77 home=${worksrcpath}
    70         destroot    {
    71            xinstall -m 644 -v -W ${worksrcpath} libarpack.a libparpack.a ${destroot}${prefix}/lib
    72         }
    73         post-destroot {
    74                 system "ranlib ${destroot}${prefix}/lib/libarpack.a"
    75                 system "ranlib ${destroot}${prefix}/lib/libparpack.a"
    76         }
     171        configure.fc ${prefix}/bin/openmpif77
    77172}
    78173
    79174if { ![variant_isset gcc42] && ![variant_isset gcc43] && ![variant_isset gcc44] && ![variant_isset g95] } {
    80         default_variants      +gcc43
     175        default_variants      +gcc44
    81176}
    82177
    83178livecheck.type  none