# -*- 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
# $Id: Portfile 112223 2013-10-15 19:26:10Z ryandesign@macports.org $

PortSystem              1.0

name                    cdf
epoch                   1
version                 3.5.0.1
set my_branch           [join [lrange [split ${version} .] 0 1] ""]
set my_version          ${my_branch}_[join [lrange [split ${version} .] 2 end] "_"]
set my_short_version    ${my_branch}_[lindex [split ${version} .] 2]
maintainers             ryandesign openmaintainer
platforms               darwin
categories              science
license                 Noncommercial

description             CDF: Common Data Format

long_description        The Common Data Format (CDF) is a self-describing \
                        data format for the storage and manipulation of \
                        scalar and multidimensional data in a platform and \
                        discipline independent fashion.

homepage                http://cdf.gsfc.nasa.gov/
master_sites            http://cdaweb.gsfc.nasa.gov/pub/software/cdf/dist/${name}${my_short_version}/unix/

# The 3.5.0.1 distfile is named to look like 3.5.0; not sure if this is going to be a trend.
dist_subdir             ${name}/${version}_0

fetch.use_epsv          no
distname                ${name}${my_short_version}-dist
extract.suffix          -all${extract.suffix}

checksums               rmd160  8722b0aaca47ba82026439ab81ac35f0bf237d58 \
                        sha256  68c871c07fe56405e3ec9720d446b5902f21a1901a288249039c7935b2a12c16

depends_lib             port:ncurses

post-patch {
    reinplace "s|\\\$(INSTALLDIR)/bin/definitions\\.\\(\[BCK\]\\)|${prefix}/bin/definitions.\\1|" ${worksrcpath}/Makefile
}

use_configure           no

pre-build {
    set cdf_os          macosx
    #set cdf_env         ${configure.build_arch}
    set cdf_env         gnu

    if {[string match *gcc* ${configure.compiler}]} {
        set libgcc [exec ${configure.cc} -print-libgcc-file-name]
    } else {
        set libgcc ""
    }

    build.args-append   ENV=${cdf_env} \
                        OS=${cdf_os} \
                        COPTIONSld_${cdf_os}_${cdf_env}= \
                        CURSESLIB_${cdf_os}_${cdf_env}=${prefix}/lib/libncurses.dylib \
                        LDOPTIONS_${cdf_os}_${cdf_env}="-dynamiclib -install_name ${prefix}/lib/libcdf.dylib" \
                        MACOSxFopt= \
                        MACOSxlink="-lc -lm ${libgcc}" \
                        MACOSxmin=

    if {${os.endian} eq "little"} {
        set endian_flag i386
    } else {
        set endian_flag __ppc__
    }

    # When upgrading, verify COPTIONS still approximately reflects what’s in the Makefile.
    # Using ${configure.cc_archflags} in LD because ${configure.ld_archflags} doesn’t use -m32 / -m64 flags when they’re needed.
    build.args-append   COPTIONS_${cdf_os}_${cdf_env}="-D${endian_flag} -D__APPLE__ -D__MACH__ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE ${configure.optflags}" \
                        CC="${configure.cc} ${configure.cc_archflags}" \
                        LD="${configure.cc} ${configure.cc_archflags}"

    if {${configure.fc} eq ""} {
        build.args-append \
                        FORTRAN=no
    } else {
        build.args-append \
                        FC="${configure.fc} ${configure.fc_archflags}" \
                        FORTRAN=yes
    }
}

use_parallel_build      no

destroot.destdir        INSTALLDIR=${destroot}${prefix}

post-destroot {
    eval reinplace "s|${destroot}||g" [glob ${destroot}${prefix}/bin/definitions.*]
    
    set docdir ${destroot}${prefix}/share/doc/${name}
    xinstall -d ${docdir}
    xinstall -W ${worksrcpath} CDF_copyright.txt CHANGES.txt \
        README_cdf_tools.txt Release.notes Welcome.txt ${docdir}
    move ${destroot}${prefix}/CDFLeapSeconds.txt ${docdir}
}

variant gcc44 conflicts gcc45 gcc46 gcc47 gcc48 description {Use gcc44} {
    configure.compiler  macports-gcc-4.4
}

variant gcc45 conflicts gcc44 gcc46 gcc47 gcc48 description {Use gcc45} {
    configure.compiler  macports-gcc-4.5
}

variant gcc46 conflicts gcc44 gcc45 gcc47 gcc48 description {Use gcc46} {
    configure.compiler  macports-gcc-4.6
}

variant gcc47 conflicts gcc44 gcc45 gcc46 gcc48 description {Use gcc47} {
    configure.compiler  macports-gcc-4.7
}

variant gcc48 conflicts gcc44 gcc45 gcc46 gcc47 description {Use gcc48} {
    configure.compiler  macports-gcc-4.8
}

if {![variant_isset gcc44] && ![variant_isset gcc45] && ![variant_isset gcc46] && ![variant_isset gcc47] && ![variant_isset gcc48]} {
    default_variants    +gcc48
}

livecheck.type          regex
livecheck.regex         {latest operational version \(V([0-9.]+)\)}
