1 | # $Id: Portfile 75415 2011-01-24 18:40:37Z jmr@macports.org $ |
---|
2 | |
---|
3 | PortSystem 1.0 |
---|
4 | |
---|
5 | name SuiteSparse |
---|
6 | version 3.6.0 |
---|
7 | categories math science |
---|
8 | maintainers stechert |
---|
9 | platforms darwin |
---|
10 | description Sparse matrix routines |
---|
11 | long_description \ |
---|
12 | SuiteSparse is a single archive that contains all packages \ |
---|
13 | authored by Tim Davis. |
---|
14 | |
---|
15 | homepage http://www.cise.ufl.edu/research/sparse/SuiteSparse/ |
---|
16 | master_sites http://www.cise.ufl.edu/research/sparse/SuiteSparse/ |
---|
17 | distname SuiteSparse-$version |
---|
18 | worksrcdir ${name} |
---|
19 | |
---|
20 | depends_build port:metis \ |
---|
21 | port:atlas |
---|
22 | |
---|
23 | use_parallel_build no |
---|
24 | |
---|
25 | patchfiles patch_UFconfig_makefile.diff |
---|
26 | |
---|
27 | # cflags recommended for Macs in ${worksrcpath}/UFconfig/UFconfig.mk |
---|
28 | configure.cflags -O3 -fno-common -no-cpp-precomp -fexceptions |
---|
29 | |
---|
30 | use_configure no |
---|
31 | build.target |
---|
32 | |
---|
33 | checksums md5 8ccb9e90b478b5d55b1d9a794e8ed676 \ |
---|
34 | sha1 bc430a051de5681d31f819b40b7f0ea0be178e04 \ |
---|
35 | rmd160 019a974113a74cc091f5497c9117499956233229 |
---|
36 | |
---|
37 | variant universal {} |
---|
38 | if {[variant_isset universal]} { |
---|
39 | append configure.cflags " " ${configure.universal_cflags} |
---|
40 | append configure.cxxflags " " ${configure.universal_cxxflags} |
---|
41 | } else { |
---|
42 | append configure.cflags " " ${configure.cc_archflags} |
---|
43 | } |
---|
44 | |
---|
45 | variant gcc45 { |
---|
46 | |
---|
47 | depends_build-append port:gcc45 |
---|
48 | configure.cflags-delete -no-cpp-precomp |
---|
49 | } |
---|
50 | |
---|
51 | post-patch { |
---|
52 | # Metis is included with SuiteSparse, but we want to use |
---|
53 | # the MacPorts version |
---|
54 | |
---|
55 | # -I$(METIS_PATH)/Lib -> -I$(METIS_PATH)/include |
---|
56 | reinplace \ |
---|
57 | "s|-I\$(METIS_PATH)/Lib|-I\$(METIS_PATH)/include|g" \ |
---|
58 | ${worksrcpath}/CHOLMOD/Lib/Makefile |
---|
59 | |
---|
60 | # #include "metis.h" -> #include <metis/metis.h> |
---|
61 | reinplace \ |
---|
62 | "s|#include \"metis.h\"|#include <metis/metis.h>|g" \ |
---|
63 | ${worksrcpath}/CHOLMOD/Partition/cholmod_metis.c |
---|
64 | |
---|
65 | # klu_version.h defines Real and Imag which conflicts with math.h on ppc |
---|
66 | reinplace -E \ |
---|
67 | "s|(\[^a-zA-Z\])Real(\[^a-zA-Z\])|\\1RealPart\\2|g" \ |
---|
68 | ${worksrcpath}/KLU/Include/klu_version.h |
---|
69 | reinplace -E \ |
---|
70 | "s|(\[^a-zA-Z\])Imag(\[^a-zA-Z\])|\\1ImagPart\\2|g" \ |
---|
71 | ${worksrcpath}/KLU/Include/klu_version.h |
---|
72 | # ranlib after ar |
---|
73 | reinplace "s|ccolamd_global\.o|ccolamd_global.o\\ |
---|
74 | - \$(RANLIB) libccolamd.a|" ${worksrcpath}/CCOLAMD/Lib/Makefile |
---|
75 | reinplace "s|colamd_global\.o|colamd_global.o\\ |
---|
76 | - \$(RANLIB) libcolamd.a|" ${worksrcpath}/COLAMD/Lib/Makefile |
---|
77 | } |
---|
78 | |
---|
79 | post-configure { |
---|
80 | # SuiteSparse does not use configure, so the variables must be |
---|
81 | # set manually. |
---|
82 | # This is done in post-configure so that ${configure.cc} is |
---|
83 | # set to its default value. |
---|
84 | |
---|
85 | if {[variant_isset gcc45]} { |
---|
86 | file copy ${filespath}/c-wrapper-template ${worksrcpath}/c-wrapper |
---|
87 | file copy ${filespath}/c-wrapper-template ${worksrcpath}/cxx-wrapper |
---|
88 | |
---|
89 | reinplace "s|@@@|${prefix}/bin/gcc-mp-4.5|" ${worksrcpath}/c-wrapper |
---|
90 | reinplace "s|&&&|\\\\.c|" ${worksrcpath}/c-wrapper |
---|
91 | |
---|
92 | reinplace "s|@@@|${prefix}/bin/g++-mp-4.5|" ${worksrcpath}/cxx-wrapper |
---|
93 | reinplace "s|&&&|\\\\.cpp|" ${worksrcpath}/cxx-wrapper |
---|
94 | |
---|
95 | set configure.cc ${worksrcpath}/c-wrapper |
---|
96 | set configure.cxx ${worksrcpath}/cxx-wrapper |
---|
97 | } |
---|
98 | |
---|
99 | reinplace -E \ |
---|
100 | "s|^CC = .*$|CC = ${configure.cc}|g" \ |
---|
101 | ${worksrcpath}/UFconfig/UFconfig.mk \ |
---|
102 | ${worksrcpath}/CSparse/Demo/Makefile \ |
---|
103 | ${worksrcpath}/CSparse/Lib/Makefile |
---|
104 | reinplace -E \ |
---|
105 | "s|^CPLUSPLUS = .*$|CPLUSPLUS = ${configure.cxx}|g" \ |
---|
106 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
107 | reinplace -E \ |
---|
108 | "s|^CFLAGS = .*$|CFLAGS = ${configure.cflags}|g" \ |
---|
109 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
110 | reinplace -E \ |
---|
111 | "s|^CFLAGS = -O|CFLAGS = ${configure.cflags}|g" \ |
---|
112 | ${worksrcpath}/CSparse/Demo/Makefile \ |
---|
113 | ${worksrcpath}/CSparse/Lib/Makefile |
---|
114 | |
---|
115 | if {[file exists ${prefix}/lib/libptcblas.dylib]} { |
---|
116 | reinplace -E \ |
---|
117 | "s|^BLAS = .*$|BLAS = -lptf77blas|g" \ |
---|
118 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
119 | } else { |
---|
120 | reinplace -E \ |
---|
121 | "s|^BLAS = .*$|BLAS = -lcblas|g" \ |
---|
122 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
123 | } |
---|
124 | |
---|
125 | reinplace -E \ |
---|
126 | "s|^LAPACK = .*$|LAPACK = -llapack|g" \ |
---|
127 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
128 | reinplace -E \ |
---|
129 | "s|^METIS_PATH = .*$|METIS_PATH = ${prefix}|g" \ |
---|
130 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
131 | reinplace -E \ |
---|
132 | "s|^METIS = .*$|METIS = ${prefix}/lib/libmetis.a|g" \ |
---|
133 | ${worksrcpath}/UFconfig/UFconfig.mk |
---|
134 | reinplace "s|(CC)|(CC) \$(CFLAGS)|" ${worksrcpath}/CXSparse/Demo/Makefile |
---|
135 | } |
---|
136 | |
---|
137 | destroot { |
---|
138 | # SuiteSparse does not support "make install" |
---|
139 | |
---|
140 | eval xinstall -m 644 \ |
---|
141 | [glob ${worksrcpath}/*/Lib/*.a] \ |
---|
142 | ${destroot}${prefix}/lib |
---|
143 | |
---|
144 | xinstall -m 755 -d ${destroot}${prefix}/include/ufsparse |
---|
145 | eval xinstall -m 644 \ |
---|
146 | [glob ${worksrcpath}/*/Include/*.h] \ |
---|
147 | ${worksrcpath}/UFconfig/UFconfig.h \ |
---|
148 | ${destroot}${prefix}/include/ufsparse |
---|
149 | |
---|
150 | xinstall -m 755 -d ${destroot}${prefix}/share/doc/${name} |
---|
151 | eval xinstall -m 644 \ |
---|
152 | [glob ${worksrcpath}/*/Doc/*.pdf] \ |
---|
153 | ${destroot}${prefix}/share/doc/${name} |
---|
154 | } |
---|
155 | |
---|
156 | livecheck.type regex |
---|
157 | livecheck.regex ${name}-(\\d+(\\.\\d+)*)${extract.suffix} |
---|