Ticket #19455: Portfile.diff

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

    old new  
    44
    55name            SuiteSparse
    66version         3.3.0
     7revision        1
    78categories      math science
    89maintainers     stechert
    910platforms       darwin
     
    2324            sha1    f7496a4e1bdc6e915a45d69e2321f80856b0b4ff \
    2425            rmd160  20645aac5828655424ef9036da0ab40a3709c0d9
    2526
     27array set sub_version {
     28        AMD            2.2.0
     29        CAMD           2.2.0
     30        COLAMD         2.7.1
     31        CCOLAMD        2.7.1
     32        CHOLMOD        1.7.1
     33        CSparse        2.2.3
     34        CXSparse       2.2.3
     35        KLU            1.1.0
     36        BTF            1.0.1
     37        LDL            2.0.1
     38        UMFPACK        5.3.0
     39        RBio           1.1.1
     40        UFcollection   1.2.0
     41        LINFACTOR      1.1.0
     42        MESHND         1.1.1
     43        SSMULT         2.0.0
     44        SPQR           1.1.1
     45}
     46
    2647# cflags recommended for Macs in ${worksrcpath}/UFconfig/UFconfig.mk
    2748configure.cflags -O3 -fno-common -no-cpp-precomp -fexceptions
    2849
    29 use_configure   no
    3050build.target
    3151
    3252post-patch {
     
    5272                ${worksrcpath}/KLU/Include/klu_version.h
    5373}
    5474
    55 post-configure  {
     75configure       {
    5676        # SuiteSparse does not use configure, so the variables must be
    5777        #    set manually.
    58         # This is done in post-configure so that ${configure.cc} is
    59         #    set to its default value.
    6078        reinplace -E \
    6179                "s|^CC = .*$|CC = ${configure.cc}|g" \
    6280                ${worksrcpath}/UFconfig/UFconfig.mk \
     
    84102        reinplace -E \
    85103                "s|^METIS = .*$|METIS = ${prefix}/lib/libmetis.a|g" \
    86104                ${worksrcpath}/UFconfig/UFconfig.mk
     105
     106        # LDL does not get built because of:
     107        #     make[1]: Nothing to be done for `default'.
     108        reinplace "s|demo:|demo: Makefile|" \
     109                ${worksrcpath}/LDL/Makefile
    87110}
    88111
    89112destroot        {
    90113        # SuiteSparse does not support "make install"
    91        
    92         eval xinstall -m 644 \
    93                 [glob ${worksrcpath}/*/Lib/*.a] \
    94                 ${destroot}${prefix}/lib
    95        
    96         xinstall -m 755 -d ${destroot}${prefix}/include/ufsparse
     114
     115        # Do not install cerbla library.
     116        foreach lname {AMD BTF CAMD CCOLAMD COLAMD CHOLMOD CSparse CXSparse KLU LDL SPQR UMFPACK} {
     117
     118                set ldir ${worksrcpath}/${lname}/Lib
     119
     120                foreach lib [glob -directory ${ldir} -tails *.a] {
     121                        xinstall -m 0644 ${ldir}/${lib} ${destroot}${prefix}/lib
     122
     123                        file mkdir ${ldir}/MacPorts_Temp
     124
     125                        if { ! [variant_isset universal] } {
     126                                system "cd ${ldir}/MacPorts_Temp && /usr/bin/ar -x ../${lib}"
     127                        } else {
     128                                foreach arch ${universal_archs} {
     129                                        file mkdir ${ldir}/MacPorts_Temp/${arch}
     130                                        system "cd ${ldir}/MacPorts_Temp/${arch} && /usr/bin/lipo -thin ${arch} ../../${lib} -output ${lib}"
     131                                        system "cd ${ldir}/MacPorts_Temp/${arch} && /usr/bin/ar -x ${lib}"
     132                                }
     133                                foreach ofile [glob -tails -directory ${ldir}/MacPorts_Temp/[lindex ${universal_archs} 0] *.o] {
     134                                        system "cd ${ldir}/MacPorts_Temp && lipo -create */${ofile} -output ${ofile}"
     135                                }
     136                        }
     137
     138                        set insl_ver $sub_version(${lname})
     139                        set cmpt_ver [join [lrange [split ${insl_ver} .] 0 0] .]
     140
     141                        set base [file rootname ${lib}]
     142
     143                        set install_name ${prefix}/lib/${base}.${cmpt_ver}.dylib
     144
     145                        set linker ""
     146
     147                        if { ${lname}=="SPQR" } {
     148                                lappend linker ${configure.cxx}
     149                        } else {
     150                                lappend linker ${configure.cc}
     151                        }
     152
     153                        eval lappend linker -dynamiclib ${configure.ldflags}
     154                        lappend linker -install_name ${install_name} -current_version ${insl_ver} -compatibility_version ${cmpt_ver}
     155                        lappend linker -o ${base}.${insl_ver}.dylib *.o
     156
     157                        if { ${lname}=="CHOLMOD" } {
     158                                lappend linker -L${destroot}${prefix}/lib
     159                                lappend linker -lcolamd
     160                                lappend linker -lccolamd
     161                                lappend linker -lcamd
     162                                lappend linker -lamd
     163                                lappend linker -lmetis
     164                                lappend linker -framework Accelerate
     165                        } elseif { ${lname}=="KLU" } {
     166                                lappend linker -L${destroot}${prefix}/lib
     167                                lappend linker -lbtf
     168                                lappend linker -lamd
     169                                lappend linker -lcolamd
     170                        } elseif { ${lname}=="SPQR" } {
     171                                lappend linker -L${destroot}${prefix}/lib
     172                                lappend linker -lcholmod
     173                                lappend linker -framework Accelerate
     174                        } elseif { ${lname}=="UMFPACK" } {
     175                                lappend linker -L${destroot}${prefix}/lib
     176                                lappend linker -lamd
     177                                lappend linker -framework Accelerate
     178                        }
     179
     180                        system "cd ${ldir}/MacPorts_Temp && ${linker}"
     181                        xinstall -m 0755 ${ldir}/MacPorts_Temp/${base}.${insl_ver}.dylib ${destroot}${prefix}/lib
     182
     183                        ln -sf ${base}.${insl_ver}.dylib ${destroot}${prefix}/lib/${base}.dylib
     184                        ln -sf ${base}.${insl_ver}.dylib ${destroot}${prefix}/lib/${base}.[join [lrange [split ${insl_ver} .] 0 0] .].dylib
     185                        ln -sf ${base}.${insl_ver}.dylib ${destroot}${prefix}/lib/${base}.[join [lrange [split ${insl_ver} .] 0 1] .].dylib
     186                }
     187        }
     188
     189        xinstall -m 755 -d ${destroot}${prefix}/include/suitesparse
    97190        eval xinstall -m 644 \
    98191                [glob ${worksrcpath}/*/Include/*.h] \
    99192                ${worksrcpath}/UFconfig/UFconfig.h \
    100                 ${destroot}${prefix}/include/ufsparse
     193                ${destroot}${prefix}/include/suitesparse
    101194       
    102195        xinstall -m 755 -d ${destroot}${prefix}/share/doc/${name}
    103196        eval xinstall -m 644 \
     
    105198                ${destroot}${prefix}/share/doc/${name}
    106199}
    107200
     201variant universal {
     202        eval configure.cflags-append  ${configure.universal_cflags}
     203        eval configure.ldflags-append  ${configure.universal_ldflags}
     204        post-configure {
     205                reinplace "s|AR = ar cr|AR = ar crs|" \
     206                        ${worksrcpath}/UFconfig/UFconfig.mk
     207
     208                reinplace -E \
     209                        "s|^CFLAGS = |CFLAGS = ${configure.universal_cflags} |g" \
     210                        ${worksrcpath}/CSparse/Demo/Makefile \
     211                        ${worksrcpath}/CSparse/Lib/Makefile
     212        }
     213}
     214
    108215livecheck.check regex
    109216livecheck.regex ${name}-(\\d+(\\.\\d+)*)${extract.suffix}