source: trunk/dports/math/shogun/Portfile

Last change on this file was 147494, checked in by mmoll@…, 8 months ago

hdf5: update to version 1.10.0, bump revision of ports that depend on hdf5 and need to be rebuilt. closes #51062

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 7.6 KB
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2# $Id: Portfile 147494 2016-04-05 20:52:07Z ryandesign@macports.org $
3
4PortSystem          1.0
5PortGroup           compilers 1.0
6
7name                shogun
8version             2.1.0
9set branch          [join [lrange [split ${version} .] 0 1] .]
10revision            10
11categories          math science
12platforms           darwin
13license             GPL-3
14
15conflicts           shogun-devel
16
17maintainers         nomaintainer
18
19description         The machine-learning toolbox's focus is on large-scale \
20                    kernel methods
21
22long_description    ${description} and especially on Support Vector Machines \
23                    (SVM). It provides a generic SVM object interfacing to \
24                    several different SVM implementations, among them the \
25                    state of the art OCAS, LibSVM, SVMLight, SVMLin and GPDT.
26
27homepage            http://shogun-toolbox.org
28master_sites        ${homepage}/archives/shogun/releases/${branch}/sources/
29
30use_bzip2           yes
31
32checksums           rmd160  5fece569be7d95bbe9ad406f1b5e10f06f4ac20e \
33                    sha256  6c47941a98d506d7b1e21d5bfd511f8684a2e1f371accd4756cdc8821916a63b
34
35worksrcdir          ${name}-${version}/src
36
37patchfiles          patch-src_configure.diff
38
39post-patch {
40    reinplace "s|@@MAKEDEPEND@@|${configure.cc} -MM|g" ${worksrcpath}/configure
41}
42
43depends_build-append port:pkgconfig
44
45# FIXME: enable use of OpenBLAS(-devel) and Accelerate/vecLibFort?
46depends_lib-append  port:hdf5 \
47                    port:json-c \
48                    port:libxml2 \
49                    port:readline \
50                    port:atlas \
51                    port:arpack \
52                    port:eigen3 \
53                    port:lp_solve \
54                    port:glpk \
55                    port:lzo2 \
56                    port:snappy \
57                    port:gzip \
58                    port:bzip2 \
59                    port:xz
60
61universal_variant   no
62
63pre-fetch {
64    if {${os.major} <= 8} {
65        return -code error "Shogun is only supported on Leopard or above"
66    }
67}
68
69compilers.choose   fc f77 f90
70compilers.setup    require_fortran
71pre-configure {
72    configure.args-append   --ldflags=${compilers.libfortran}
73}
74
75# These compiler warnings appear:
76#clang: warning: argument unused during compilation: '-mcpu=native'
77#clang: warning: argument unused during compilation: '-pthread'
78#ld: warning: directory not found for option '-L../libshogun'
79#ld: warning: directory not found for option '-LDYLD_LIBRARY_PATH'
80
81# Define python variants
82set pythons_suffixes {26 27}
83
84set pythons_ports {}
85foreach s ${pythons_suffixes} {
86    lappend pythons_ports python${s}
87}
88
89proc python_prefix {} {
90    global prefix pythons_suffixes
91    foreach s ${pythons_suffixes} {
92        if {[variant_isset python${s}]} {
93            set p ${prefix}/bin/python[string index ${s} 0].[string index ${s} 1]
94            return [file normalize [exec ${p} -c "import sys; print(sys.prefix)"]]
95        }
96    }
97    error "Python support not enabled."
98}
99
100foreach s ${pythons_suffixes} {
101    set p python${s}
102    set v [string index ${s} 0].[string index ${s} 1]
103    set i [lsearch -exact ${pythons_ports} ${p}]
104    set c [lreplace ${pythons_ports} ${i} ${i}]
105    eval [subst {
106        variant ${p} description "Use Python ${v} for python bindings" conflicts ${c} {
107            depends_lib-append      port:${p} \
108                                    port:py${s}-numpy \
109                                    port:swig-python
110            set py_prefix \[python_prefix\]
111            configure.args-append   --python=${prefix}/bin/python${v} \
112                                    --pydir=\${py_prefix}/lib/python${v}/site-packages \
113                                    --includes=\${py_prefix}/include/python${v}
114            post-patch {
115                reinplace "s|^PYTHON=python$|PYTHON=${prefix}/bin/python${v}|g" ${worksrcpath}/configure
116            }
117        }
118    }]
119}
120
121variant perl description {Build the Perl API} {
122    depends_lib-append  port:swig-perl
123}
124
125variant r description {Build the R API} {
126    depends_lib-append  port:swig-r
127}
128
129variant octave description {Build the Octave API} {
130    depends_lib-append  port:swig-octave
131}
132
133variant java description {Build the Java API} {
134    depends_lib-append  port:swig-java
135}
136
137variant csharp description {Build the C# API} {
138    depends_lib-append  port:swig-csharp
139}
140
141variant lua description {Build the Lua API} {
142    depends_lib-append  port:swig-lua
143}
144
145variant ruby description {Build the Ruby API} {
146    depends_lib-append  port:swig-ruby
147}
148
149variant elwms description {Build the elwms (eierlegende wollmilchsau) interface. Requires python plus one other interface} {
150}
151
152variant hmm_parallel description {Enable parallel structures in hmm training} {
153    configure.args-delete --disable-hmm-parallel
154    configure.args-append --enable-hmm-parallel
155}
156
157proc lremove {list elem} {
158    set index [lsearch -exact $list $elem]
159    return [lreplace $list $index $index]
160}
161
162# Interfaces are added by a comma delimited argument list to --interfaces.
163# We check for variants and then build this list accordingly
164set interfaces "cmdline_static"
165
166if {[variant_isset python26] || [variant_isset python27]} {
167    lappend interfaces "python_modular"
168}
169
170if {[variant_isset perl]} {
171    lappend interfaces "perl_modular"
172}
173
174if {[variant_isset r]} {
175    lappend interfaces "r_modular"
176}
177
178if {[variant_isset octave]} {
179    lappend interfaces "octave_modular"
180}
181
182if {[variant_isset java]} {
183    lappend interfaces "java_modular"
184}
185
186if {[variant_isset csharp]} {
187    lappend interfaces "csharp_modular"
188}
189
190if {[variant_isset lua]} {
191    lappend interfaces "lua_modular"
192}
193
194if {[variant_isset ruby]} {
195    lappend interfaces "ruby_modular"
196}
197
198if {[variant_isset elwms] && !(([variant_isset python26] || [variant_isset python27]) && [variant_isset octave] && [variant_isset r])} {
199    return -code error "Must set python2x and both r and octave variants to build elwms interface"
200} elseif {[variant_isset elwms]} {
201    lappend interfaces "elwms_static"
202}
203
204configure.args-append \
205                    --enable-hdf5 \
206                    --enable-json \
207                    --enable-xml \
208                    --enable-readline \
209                    --enable-largefile \
210                    --disable-spinlocks \
211                    --enable-lapack \
212                    --enable-arpack \
213                    --disable-mosek \
214                    --disable-superlu \
215                    --disable-nlopt \
216                    --enable-eigen3 \
217                    --disable-cplex \
218                    --enable-lpsolve \
219                    --enable-glpk \
220                    --enable-lzo \
221                    --enable-snappy \
222                    --enable-gzip \
223                    --enable-bzip2 \
224                    --enable-lzma \
225                    --enable-bigstates \
226                    --enable-hmmcache \
227                    --enable-svm-light \
228                    --disable-logcache \
229                    --enable-shortrealkernelcache \
230                    --enable-logsum-array \
231                    --disable-hmm-parallel \
232                    --disable-doxygen \
233                    --enable-optimization \
234                    --disable-cpudetection \
235                    --includes=${prefix}/include \
236                    --libs=${prefix}/lib \
237                    --destdir=${destroot}
238
239set interfaces [join $interfaces ","]
240
241configure.args-append --interfaces=$interfaces
242
243livecheck.type      regex
244livecheck.url       http://www.shogun-toolbox.org
245livecheck.regex     {SHOGUN ([0-9.]+)}
246
247if {[string match "*clang*" ${configure.compiler}]} {
248    configure.args-delete   --disable-cpudetection
249    configure.args-append   --enable-cpudetection
250}
Note: See TracBrowser for help on using the repository browser.