New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #19455: Portfile.diff

File Portfile.diff, 5.4 KB (added by mcalhoun@…, 4 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}