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

PortSystem          1.0

name                qt5-creator

if { ${subport} eq "${name}-docs" } {
    universal_variant no
    supported_archs   noarch
    set qt5_qmake_request_no_debug 1
}
PortGroup           qmake5 1.0

version             4.0.1
revision            1
categories          devel aqua
platforms           darwin
# from https://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
# The GPL license comes with two exceptions that ensure that there are no license restrictions on generated code, and that bridging to 3rd party code is still possible.
license             GPL-3
maintainers         mcalhoun openmaintainer
description         Cross-platform integrated development environment (IDE) tailored to the needs of Qt developers.
long_description    Qt Creator is a cross-platform integrated development environment (IDE) tailored to the needs of Qt developers.

homepage            http://qt-project.org/wiki/Category:Tools::QtCreator
distname            qt-creator-opensource-src-${version}
master_sites        https://download.qt.io/official_releases/qtcreator/[join [lrange [split ${version} .] 0 1] .]/${version}/

checksums           rmd160  312da42a263bc3e74b9493eb055fd6dc03736b57 \
                    sha256  95518a0b93d2d2fb7e5b46508fc1f59811edb2c5e05659262539dd316b8e5f4c

if { ${subport} eq ${name}  } {
    depends_lib-append           \
        port:qt5-qtscript        \
        port:qt5-qtdeclarative   \
        port:qt5-qttools         \
        port:qt5-qtmacextras     \
        port:qt5-qtquickcontrols \
        port:qt5-qtsvg

    depends_lib-append     port:botan
    configure.args-append  "USE_SYSTEM_BOTAN=1"

    # do not opportunistically use QtWebkit
    patchfiles-append      patch-no_qtwebkit.diff

    # do not opportunistically use QtWebengine
    patchfiles-append      patch-no_qtwebengine.diff

    variant qtwebkit description {build with QtWebkit support} {
        patchfiles-delete  patch-no_qtwebkit.diff
        depends_lib-append port:qt5-qtwebkit
    }

    variant qtwebengine description {build with QtWebengine support} {
        patchfiles-delete  patch-no_qtwebkit.diff
        depends_lib-append port:qt5-qtwebengine
    }

    if { ![variant_isset universal] } {
        destroot {
            # make install attempts to install command line tools into /bin, etc.
            xinstall -m 755 -d ${destroot}${qt_apps_dir}
            copy "${worksrcpath}/bin/Qt Creator.app" "${destroot}${qt_apps_dir}"
        }
    } else {
        # We should really just override destroot, but the muniversal Portgroup would override our override.
        destroot.cmd "true"
        merger-post-destroot {
            foreach arch ${universal_archs_to_use} {
                xinstall -m 755 -d ${destroot}-${arch}${qt_apps_dir}
                copy "${worksrcpath}-${arch}/bin/Qt Creator.app" "${destroot}-${arch}${qt_apps_dir}"
            }
        }
    }

    # put following in post-destroot so it works with universal
    post-destroot {
        # sdktool is a tool located in "Qt Creator.app/Contents/Resources"
        #
        # two necessary files that sdktool creates are:
        #    "${qt_apps_dir}/Qt Creator.app/Contents/Resources/QtProject/qtcreator/qtversion.xml"
        #    "${qt_apps_dir}/Qt Creator.app/Contents/Resources/QtProject/qtcreator/profiles.xml"
        #
        # from the installer.dat file, it seems the following are run by the binary installer of Qt Creator version 5.6.1
        # see http://code.qt.io/cgit/qtsdk/qtsdk.git/tree/packaging-tools/configurations/pkg_templates/pkg_56/qt.56.clang_64/meta/installscript.qs
        #    sdktool addQt --id qt.56.clang_64 --name "Qt %{Qt:Version} clang 64bit" --qmake qmakeBinary --type Qt4ProjectManager.QtVersion.Desktop
        #    sdktool addKit --id qt.56.clang_64_kit --name "Desktop Qt %{Qt:Version} clang 64bit" --toolchain x86-macos-generic-mach_o-64bit --qt qt.56.clang_64 --debuggerengine 256 --devicetype Desktop
        #
        # modify for our purposes
        #
        # for unknown reason, using system instead of exec results in "QWidget: Cannot create a QWidget without QApplication"
        set sdktool ${destroot}${qt_apps_dir}/Qt\ Creator.app/Contents/Resources/sdktool

        exec                                             \
            "${sdktool}"                                 \
            addQt                                        \
            --id    qt.5.macports                        \
            --name  "Qt %{Qt:Version} from MacPorts"     \
            --qmake "${qt_qmake_cmd}"                    \
            --type  Qt4ProjectManager.QtVersion.Desktop

        if { [variant_isset universal] } {
            foreach arch ${universal_archs_to_use} {
                if { ${arch} eq "i386" } {
                    set toolchain_bit      32
                    set qt_qmake_spec_arch ${qt_qmake_spec_32}
                } else {
                    set toolchain_bit      64
                    set qt_qmake_spec_arch ${qt_qmake_spec_64}
                }

                exec                                                                   \
                    "${sdktool}"                                                       \
                    addKit                                                             \
                    --id             qt.5.macports_${arch}_kit                         \
                    --name           "Desktop Qt %{Qt:Version} from MacPorts ${arch}"  \
                    --toolchain      x86-macos-generic-mach_o-${toolchain_bit}bit      \
                    --qt             qt.5.macports                                     \
                    --debuggerengine 256                                               \
                    --devicetype Desktop                                               \
                    --mkspec     ${qt_qmake_spec_arch}
            }
        } else {
            if { ${build_arch} eq "i386" } {
                set toolchain_bit 32
            } else {
                set toolchain_bit 64
            }

            exec                                                                         \
                "${sdktool}"                                                             \
                addKit                                                                   \
                --id             qt.5.macports_${build_arch}_kit                         \
                --name           "Desktop Qt %{Qt:Version} from MacPorts ${build_arch}"  \
                --toolchain      x86-macos-generic-mach_o-${toolchain_bit}bit            \
                --qt             qt.5.macports                                           \
                --debuggerengine 256                                                     \
                --devicetype     Desktop                                                 \
                --mkspec         ${qt_qmake_spec}

        }

        # N.B. that at some point in the future, QtCreator.ini may need to be created
        #    to include more search locations for documentation and examples
    }
}

subport ${name}-docs {
    depends_build-append port:qt5-sqlite-plugin
    depends_run-append   port:${name}
    build.target       docs

    destroot {
        xinstall -m 755 -d ${destroot}${qt_apps_dir}
        copy "${worksrcpath}/bin/Qt Creator.app" "${destroot}${qt_apps_dir}"

        xinstall -m 755 -d ${destroot}${qt_docs_dir}
        copy ${worksrcpath}/doc/html ${worksrcpath}/doc/html-dev ${destroot}${qt_docs_dir}
    }
}

livecheck.type      regex
livecheck.url       http://www.qt.io/download-open-source/
livecheck.regex     qt-creator-opensource-src-(\[a-z0-9.\]+)${extract.suffix}"