# -*- 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

PortSystem          1.0
PortGroup           compiler_blacklist_versions 1.0

name                lal
version             7.6.0
revision            0

description         LSC Algorithm Library
long_description    LIGO Scientific Collaboration Algorithm Library containing core \
                    routines for gravitational wave data analysis.

checksums           rmd160  a65ca9b893870c3f3f6303d9021ba99fecd5a47e \
                    sha256  c173ff3112065706dc0ad1cc5062b32ae72a25de1a079bad9d198f657b82e463 \
                    size    2384632

depends_lib-append  port:gsl \
                    port:fftw-3 \
                    port:fftw-3-single \
                    port:hdf5

# add Python dependencies for pyXY-subports
if {[string match "py*" ${subport}]} {
    set numbers [regexp -all -inline -- {[0-9]+} ${subport}]
    set v [lindex ${numbers} 0]
    # python, C-library port, and numpy are automatically added below
    depends_lib     port:py${v}-dateutil \
                    port:py${v}-scipy \
                    port:py${v}-ligo-segments \
                    port:py${v}-lscsoft-glue
}

# add Octave dependencies for octave subports
if {[string match "octave-*" ${subport}]} {
    # octave, and C-library port are automatically added below
}

###################################################################
### Everything below this line is common to all LALSuite ports. ###
###################################################################

categories          science
maintainers         nomaintainer
license             GPL-2+

homepage            https://wiki.ligo.org/Computing/DASWG/LALSuite
master_sites        https://software.igwn.org/lscsoft/source/lalsuite
use_xz              yes

depends_build-append \
                    path:bin/pkg-config:pkgconfig \
                    port:swig \

# Choose a compiler that supports OpenMP.
compiler.openmp_version 2.5

configure.args-append \
                    --mandir=${prefix}/share/man \
                    --disable-silent-rules \
                    --disable-gcc-flags \
                    --enable-swig-iface \
                    --disable-swig-octave \
                    --disable-swig-python \
                    --disable-python

test.run            yes
test.target         check

compiler.cxx_standard   2011
configure.cxxflags-append   -std=c++11
compiler.blacklist-append   {clang < 700}

# Create subports for each supported Python version
foreach v {312} {
  subport py${v}-${name} {
    set pythonversion   [string index ${v} 0].[string range ${v} 1 end]
    set pythonhome      "${frameworks_dir}/Python.framework/Versions/${pythonversion}"
    set pythondir       "${pythonhome}/lib/python${pythonversion}/site-packages"

    categories-append   python
    description         Python ${pythonversion} bindings for ${description}
    long_description    ${long_description} This package provides Python \
                        ${pythonversion} bindings, modules, and scripts.

    depends_build-append \
                        port:swig-python

    depends_lib         port:python${v} \
                        port:${name} \
                        port:py${v}-numpy

    configure.args-append   PYTHON=${pythonhome}/bin/python${pythonversion}
    configure.args-replace  --disable-python --enable-python
    configure.args-replace  --disable-swig-python --enable-swig-python

    destroot.args-append \
                        pythondir="${pythondir}" \
                        pyexecdir="${pythondir}" \
                        pkgpythondir="${pythondir}/${name}" \
                        pkgpyexecdir="${pythondir}/${name}" \
                        prefix="${pythonhome}"

    # Only install SWIG bindings, Python libraries, and Python scripts
    destroot {
      command_exec destroot "" "-C swig"
      command_exec destroot "" "-C python"
    }

    post-destroot {
      # Remove Python include directory
      # (duplicate of SWIG headers in ${prefix}/include)
      file delete -force ${destroot}${pythonhome}/include
    }
  }
}

subport octave-${name} {
  set pythonversion     [string index ${v} 0].[string range ${v} 1 end]
  set pythonhome        "${frameworks_dir}/Python.framework/Versions/${pythonversion}"
  set pythondir         "${pythonhome}/lib/python${pythonversion}/site-packages"

  categories-append     octave
  description           Octave ${pythonversion} bindings for ${description}
  long_description      ${long_description} This package provides Octave \
                        bindings, modules, and scripts.

  depends_build-append  port:swig-octave

  depends_lib           port:octave \
                        port:${name}

  configure.args-replace    --disable-swig-octave --enable-swig-octave

  # Only install SWIG bindings, Python libraries, and Python scripts
  destroot {
    command_exec destroot "" "-C swig"
  }

  post-destroot {
    # Remove Octave include directory
    # (duplicate of SWIG headers in ${prefix}/include)
    file delete -force ${destroot}${prefix}/include
  }
}

if {${name} eq ${subport}} {
  livecheck.type        regex
  livecheck.url         ${master_sites}
  livecheck.regex       ${name}-(\\d+(?:\\.\\d+)*)${extract.suffix}
} else {
  livecheck.type        none
}
