# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0

name                postgis
version             1.5.8
revision            5
categories          databases
license             GPL-2
platforms           darwin
maintainers         nomaintainer

description         PostGIS adds support for geographic objects to the PostgreSQL database

long_description \
    PostGIS adds support for geographic objects to the PostgreSQL \
    object-relational database.  In effect, PostGIS \"spatially enables\" \
    the PostgreSQL server, allowing it to be used as a backend spatial \
    database for geographic information systems (GIS), much like ESRI's \
    SDE or Oracle's Spatial extension.  PostGIS follows the OpenGIS \
    Simple Features Specification for SQL and will be submitted for \
    conformance testing at version 1.0.

homepage            http://postgis.refractions.net/
master_sites        http://download.osgeo.org/postgis/source/

checksums           rmd160  825be8892a22c660200bb6005608375cb47c920d \
                    sha256  4896fdae2f814b88c3ca458b7d01d7eca7e9aca021599c817919f131a1b0d804

depends_build \
    port:docbook-xsl-nons \
    port:libxslt \
    port:ImageMagick

depends_lib \
    port:geos \
    port:proj4 \
    port:libiconv \
    port:libxml2

use_parallel_build  no

patchfiles          patch-postgis-Makefile.in.diff

configure.args \
    --datadir=${prefix}/share/${name} \
    --with-projdir=${prefix}/lib/proj49 \
    --with-xsldir=${prefix}/share/xsl/docbook-xsl-nons

configure.cflags-append \
    -Diconv=libiconv -Diconv_open=libiconv_open -Diconv_close=libiconv_close

build.target-append comments
build.args-append   ICONV_LDFLAGS='-L${prefix}/lib -liconv'

# Workaround for https://trac.osgeo.org/postgis/ticket/1694 (actually the same internal result as in postgis2 port)
build.args-append   CPP="cpp"

destroot.target-append docs-install comments-install

set pgsql_suffixes {82 83 84 90 91 92}

set pgsql_ports {}
foreach s ${pgsql_suffixes} {
    lappend pgsql_ports postgresql${s}
}

foreach s ${pgsql_suffixes} {
    set p postgresql${s}
    set v [string index ${s} 0].[string index ${s} 1]
    set i [lsearch -exact ${pgsql_ports} ${p}]
    set c [lreplace ${pgsql_ports} ${i} ${i}]
    variant ${p} description "Build with PostgreSQL ${v}" conflicts {*}${c} "
        post-patch {
            set args {
                 PGSQL_DOCDIR=${prefix}/share/doc/${p}
                 PGSQL_MANDIR=${prefix}/share/man
                 PGSQL_SHAREDIR=${prefix}/share/${p}
            }

            reinplace -E \"/doc .*install\\\$/s|\\\$| \[join \${args}\]|\" ${worksrcpath}/GNUmakefile
        }
        depends_lib-append  port:${p}

        configure.args-append   --libdir=${prefix}/lib/${p} \
                                --with-pgconfig=${prefix}/lib/${p}/bin/pg_config

        build.args-append   PGSQL_DOCDIR=${prefix}/share/doc/${p} \
                            PGSQL_MANDIR=${prefix}/share/man
    "
}

proc has_pgsql_variant {} {
    global pgsql_ports
    foreach p ${pgsql_ports} {
        if {[variant_isset ${p}]} {
            return 1
        }
    }
    return 0
}

if {![has_pgsql_variant]} {
    set p [lindex ${pgsql_ports} end]
    default_variants +${p}

    if {![has_pgsql_variant]} {
        error "One of the following variants must be set: [join ${pgsql_ports}]"
    }
}

livecheck.type      regex
livecheck.url       ${master_sites}
livecheck.regex     "${name}-(1(?:\\.\\d+)*)\\.\[tz\]"
