# $Id: Portfile 116249 2014-01-23 01:02:13Z aronnax@macports.org $

PortSystem        1.0

name              nds2-client
version           0.10.4
categories        science
platforms         darwin
license           GPL-2
maintainers       aronnax

description       Network Data Server Client
long_description \
  Client tool for accessing streamed LIGO data using the Network \
  Data Server version 2.

homepage          https://www.lsc-group.phys.uwm.edu/daswg/projects/nds-client.html
master_sites      https://www.lsc-group.phys.uwm.edu/daswg/download/software/source/

checksums         rmd160  3ccdae4c84fd060cb544370acfbbc6cce6bc8f7d \
                  sha256  c2b7a8001a54e7edafe7d1220ed724527f075bd321ad2f4e86b0cbbd68e7c1b9

depends_build-append \
                  port:pkgconfig

default_variants  +doc +gssapi +swig_python27 +swig_java

configure.args    --disable-silent-rules \
                  --disable-doc \
                  --disable-mex-matlab \
                  --disable-mex-octave \
                  --disable-swig-python \
                  --disable-swig-octave \
                  --disable-swig-java \
                  --without-sasl \
                  --without-gssapi

set pythons_suffixes {25 26 27 31 32 33}

set pythons_ports {}
foreach s ${pythons_suffixes} {
    lappend pythons_ports swig_python${s}
}

variant doc description "Enable HTML documentation" {

    depends_build-append            port:docbook-xsl \
                                    port:libxslt
    configure.args-strsed           s/--disable-doc/--enable-doc/

}

variant mex_octave description "Enable MEX Octave interface" {

    configure.args-strsed           s/--disable-mex-octave/--enable-mex-octave/

}

variant mex_matlab description "Enable MEX MATLAB interface" {

    configure.args-strsed           s/--disable-mex-matlab/--enable-mex-matlab/

}

foreach s ${pythons_suffixes} {
    set p python${s}
    set v [string index ${s} 0].[string index ${s} 1]
    set i [lsearch -exact ${pythons_ports} swig_${p}]
    set c [lreplace ${pythons_ports} ${i} ${i}]
    set d ${frameworks_dir}/Python.framework/Versions/${v}/lib/python${v}
    eval [subst {
        variant swig_${p} description "Enable SWIG Python interface for Python ${v}" conflicts ${c} {

            depends_build-append    port:swig-python
            depends_lib-append      port:${p} port:py${s}-numpy
            configure.args-strsed   s/--disable-swig-python/--enable-swig-python/
            destroot.args-append    pythondir="${d}" pyexecdir="${d}"

        }
    }]
}

variant swig_octave description "Enable SWIG Octave interface" {

    depends_build-append            port:swig-octave
    configure.args-strsed           s/--disable-swig-octave/--enable-swig-octave/

    # At least as of Octave 3.2.4, the Octave C++ API does not work with clang.
    compiler.blacklist-append       *clang*

}

variant swig_java description "Enable SWIG Java interface" {

    # Need GNU Classpath to get jni.h header
    depends_build-append            bin:javac:gcc48 port:swig-java port:gnu-classpath
    depends_lib-append              bin:java:kaffe
    configure.args-strsed           s/--disable-swig-java/--enable-swig-java/

}

variant sasl description "Use cyrus-sasl2 for authentication" conflicts gssapi {

    configure.args-strsed           s/--without-sasl/--with-sasl=${prefix}/
    depends_lib-append              port:cyrus-sasl2

}

variant gssapi description "Use kerberos5 gssapi for authentication" conflicts sasl {

    configure.args-strsed           s/--without-gssapi/--with-gssapi=${prefix}/
    depends_lib-append              port:kerberos5

}

set need_octave 0
if {[variant_isset mex_octave]} {
    set need_octave 1
}
if {[variant_isset swig_octave]} {
    set need_octave 1
}
if ${need_octave} {
    # The Octave dependency can be satisfied by either octave or octave-devel.
    depends_lib-append              path:bin/octave:octave
    destroot.args-append            pkgoctexecdir="${prefix}/share/octave/site/m"
}

set need_sqlite 0
foreach s ${pythons_ports} {
    if {[variant_isset ${s}]} {
        set need_sqlite 1
    }
}
if {[variant_isset swig_octave]} {
    set need_sqlite 1
}
if {[variant_isset swig_java]} {
    set need_sqlite 1
}
if ${need_sqlite} {
    depends_lib-append port:sqlite3
}

use_parallel_build yes

livecheck.type    regex
livecheck.url     ${master_sites}
livecheck.regex   {nds2-client-(\d+(?:\.\d+)*).tar.gz}
