# -*- 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 118973 2014-04-14 09:04:56Z vince@macports.org $

PortSystem          1.0
PortGroup           cmake   1.0
PortGroup           qt4     1.0

name                qgis
version             2.2.0
revision            1
categories          gis
maintainers         vince
description         QGIS is a user-friendly GIS based on Qt 4
long_description    QGIS is a GIS. It can visualize, inject data into\
                    PostGres/PostGIS, or serve as a Qt front-end to\
                    Grass. Extended with Python plugins, it can become\
                    a quite powerful GIS on its own.

platforms           darwin
license             GPL

use_parallel_build  no
homepage            http://www.qgis.org/

distname            ${name}-${version}
master_sites        http://qgis.org/downloads/
use_bzip2           yes

checksums           md5     0390e50c8a38c6cbef1720fc11aeabe6 \
                    sha1    0e319fc07235b780f258a497db6883a7bf3e93c9 \
                    rmd160  389e53e52b0dc47c17a8d7891114bfd037dcd5f3

patchfiles          patch-app_info_plist_in.diff

worksrcdir          ${name}-${version}

depends_lib-append  port:libiconv \
                    port:expat \
                    port:openssl \
                    port:proj \
                    port:geos \
                    port:gdal \
                    port:sqlite3 \
                    port:gsl \
                    port:qwt52 \
                    port:fcgi \
                    port:spatialindex

depends_build-append    port:bison \
                        port:ld64

post-extract {
    system -W ${worksrcpath} "mkdir build"
}


post-patch {
    reinplace -E "s|@@@|${prefix}|g" \
        ${worksrcpath}/mac/app.info.plist.in
}
# Overrides default

if {![variant_isset postgis] && ![variant_isset postgis2]} {
    default_variants    +postgis2
}

if {![variant_isset python26] && ![variant_isset python27]} {

    default_variants    +python27
}

if {![variant_isset postgresql91] && ![variant_isset postgresql92] && \
    ![variant_isset postgresql93]} {

    default_variants    +postgresql92
}

# Python related stuff

variant python26    conflicts python27 \
                    description use Python 2.6 {

    depends_lib-append      port:py26-pyqt4 \
                            port:py26-qscintilla
    depends_build-append    port:py26-sip
    depends_run-append      port:py26-psycopg2 \
                            port:py26-spatialite

    set Py_FRM              ${frameworks_dir}/Python.framework/Versions/2.6
 
    configure.args-append  "-DPYTHON_EXECUTABLE=${prefix}/bin/python2.6"
    configure.args-append  "-DPYUIC4_PROGRAM=${prefix}/bin/pyuic4-2.6"
    configure.args-append  "-DPYRCC4_PROGRAM=${prefix}/bin/pyrcc4-2.6"
    configure.args-append  "-DPYTHON_CUSTOM_FRAMEWORK=${Py_FRM}"
    configure.args-append  "-DSIP_BINARY_PATH=${Py_FRM}/bin/sip-2.6"
    
    pre-configure {
        reinplace -E "s|Versions/Current|Versions/2.6|" \
            ${worksrcpath}/cmake/FindPythonLibrary.cmake
    }
}

variant python27    conflicts python26 \
                    description use Python 2.7 {

    depends_lib-append      port:py27-pyqt4 \
                            port:py27-qscintilla
    depends_build-append    port:py27-sip
    depends_run-append      port:py27-psycopg2 \
                            port:py27-spatialite

    set Py_FRM              ${frameworks_dir}/Python.framework/Versions/2.7

    configure.args-append  "-DPYTHON_EXECUTABLE=${prefix}/bin/python2.7"
    configure.args-append  "-DPYUIC4_PROGRAM=${prefix}/bin/pyuic4-2.7"
    configure.args-append  "-DPYRCC4_PROGRAM=${prefix}/bin/pyrcc4-2.7"
    configure.args-append  "-DPYTHON_CUSTOM_FRAMEWORK=${Py_FRM}"
    configure.args-append  "-DSIP_BINARY_PATH=${prefix}/bin/sip-2.7"

    pre-configure {
        reinplace -E "s|Versions/Current|Versions/2.7|" \
            ${worksrcpath}/cmake/FindPythonLibrary.cmake
    }
}

variant postgresql91    conflicts postgresql92 postgresql93 \
                        description "Use postgresql 9.1" {

    depends_lib-append      port:postgresql91
    set PGSQL_DIR           ${prefix}/lib/postgresql91
    configure.args-append   \
                "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config"
}

variant postgresql92    conflicts postgresql91 postgresql93 \
                        description "Use postgresql 9.2" {

    depends_lib-append      port:postgresql92
    set PGSQL_DIR           ${prefix}/lib/postgresql92
    configure.args-append   \
                "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config"
}

variant postgresql93    conflicts postgresql91 postgresql92 \
                        description "Use postgresql 9.3" {

    depends_lib-append      port:postgresql93
    set PGSQL_DIR           ${prefix}/lib/postgresql93
    configure.args-append   \
                "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config"
}

variant postgis         description "Build postgis 1.x support" \
                        conflicts postgis2 {

    depends_lib-append      port:postgis
}

variant postgis2            description "Build postgis 2.x support" \
                            conflicts postgis {

    depends_lib-append      port:postgis2
}

variant grass               description "Build Grass (6.43) plugin" {

    #depends_lib-append      port:grass
    configure.args-append   \
                "-DGRASS_PREFIX=${prefix}/share/grass-6.4.3"
}

configure.dir               ${worksrcpath}/build
configure.cmd               cmake ..

configure.args-append  "-DCMAKE_CXX_COMPILER=${configure.cxx}"
configure.args-append  "-DCMAKE_C_COMPILER=${configure.cc}"
configure.args-append  "-DEXPAT_INCLUDE_DIR=${prefix}/include"
configure.args-append  "-DEXPAT_LIBRARY=${prefix}/lib/libexpat.dylib"
configure.args-append  "-DCMAKE_INSTALL_PREFIX=${applications_dir}"
configure.args-append  "-DGDAL_CONFIG=${prefix}/bin/gdal-config"
configure.args-append  "-DGDAL_INCLUDE_DIR=${prefix}/include"
configure.args-append  "-DGDAL_LIBRARY=${prefix}/lib/libgdal.dylib"
configure.args-append  "-DGEOS_CONFIG=${prefix}/bin/geos-config"
configure.args-append  "-DGEOS_INCLUDE_DIR=${prefix}/include/geos"
configure.args-append  "-DGEOS_LIBRARY=${prefix}/lib/libgeos_c.dylib"
configure.args-append  "-DGSL_CONFIG=${prefix}/bin/gsl-config"
configure.args-append  "-DPROJ_INCLUDE_DIR=${prefix}/include"
configure.args-append  "-DPROJ_LIBRARY=${prefix}/lib/libproj.dylib"
configure.args-append  \
        "-DSPATIALINDEX_LIBRARY=${prefix}/lib/libspatialindex.dylib"
configure.args-append  "-DCMAKE_BUILD_TYPE=Release"

use_parallel_build          yes
build.dir                   ${worksrcpath}/build
destroot.target             install
