# -*- 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           cmake 1.1
PortGroup           github 1.0
PortGroup           active_variants 1.1
PortGroup           boost 1.0
PortGroup           legacysupport 1.1

github.setup        osm2pgsql-dev osm2pgsql 2.1.1
revision            0
github.tarball_from archive

categories          gis
maintainers         {vince @Veence} openmaintainer
description         ${subport} is OpenStreetMap data to PostgreSQL converter
long_description    ${subport} is a tool for loading OpenStreetMap data into \
                    a PostgreSQL / PostGIS database suitable for applications like \
                    rendering into a map, geocoding with Nominatim, or general analysis

license             GPL-2+

homepage            https://osm2pgsql.org

checksums           rmd160  0cde62068f4d9ffcdd2da0c1f11a5073aceabd91 \
                    sha256  b084e4a79317043410ff13ece4350a801384bd34e6c2c5959fa1e1424ce195b0 \
                    size    2712681

# It uses include variant
compiler.cxx_standard 2017

# requires std::get that was introduced at 10.14
legacysupport.newest_darwin_requires_legacy 17
legacysupport.use_mp_libcxx yes

set port_libfmt     libfmt11
set opencv          opencv4

cmake.module_path-append \
                    ${prefix}/lib/${port_libfmt}/cmake
configure.args-append \
                    -DFMT_INCLUDE_DIR=${prefix}/include/${port_libfmt} \
                    -DOpenCV_DIR="${prefix}/libexec/${opencv}/cmake"

depends_build-append \
                    port:poppler

depends_lib-append  port:bzip2 \
                    port:CLI11 \
                    port:expat \
                    port:libosmium \
                    port:lua \
                    port:nlohmann-json \
                    port:${port_libfmt} \
                    port:${opencv} \
                    port:potrace \
                    port:proj \
                    port:protozero \
                    port:zlib

post-patch {
    # Remove bundled libraries
    file delete -force ${worksrcpath}/contrib
}

set proj_v 9

configure.args-append \
                    -DBUILD_COVERAGE=OFF \
                    -DBUILD_TESTS=OFF \
                    -DCLANG_TIDY=OFF \
                    -DEXTERNAL_CLI11=ON \
                    -DEXTERNAL_FMT=ON \
                    -DEXTERNAL_LIBOSMIUM=ON \
                    -DEXTERNAL_PROTOZERO=ON \
                    -DPROJ6_INCLUDE_DIR=${prefix}/lib/proj${proj_v}/include \
                    -DPROJ_LIBRARY=${prefix}/lib/proj${proj_v}/lib/libproj.dylib \
                    -DWITH_LUAJIT=OFF \
                    -DWITH_PROJ=ON

# Database variants (from the GDAL port)
set postgresql_suffixes {12 13 14 15 16 17}
set postgresql_variants {}
foreach suffix ${postgresql_suffixes} {
    lappend postgresql_variants postgresql${suffix}
}
foreach suffix ${postgresql_suffixes} {
    set vrt     postgresql${suffix}
    set index   [lsearch -exact ${postgresql_variants} ${vrt}]
    set conf    [lreplace ${postgresql_variants} ${index} ${index}]

    variant ${vrt} description "Use ${vrt}" conflicts {*}${conf} "
        depends_lib-append      port:${vrt} \
                                port:pg${suffix}-postgis3
        configure.args-append   -DPostgreSQL_INCLUDE_DIR=${prefix}/include/${vrt}
        configure.args-append   -DPostgreSQL_TYPE_INCLUDE_DIR=${prefix}/include/${vrt}
        configure.args-append   -DPostgreSQL_LIBRARY=${prefix}/lib/${vrt}/libpq.dylib
    "
}
# postgresql default
set pgdefault "if {"
foreach suffix ${postgresql_suffixes} {
    set pgdefault "${pgdefault}!\[variant_isset postgresql${suffix}\] && "
}
set pgdefault [string range ${pgdefault} 0 end-4]
set pgdefault "${pgdefault}} { default_variants +postgresql${suffix} }"
eval ${pgdefault}
