#
#  W A R N I N G
#  -------------
#
# This file is not part of the Qt API.  It exists purely as an
# implementation detail.  It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#

#library
!qt_no_install_library {
    win32 {
       host_build: \
           dlltarget.path = $$[QT_HOST_BINS]
       else: \
           dlltarget.path = $$[QT_INSTALL_BINS]
       INSTALLS += dlltarget
    }
    host_build: \
        target.path = $$[QT_HOST_LIBS]
    else: \
        target.path = $$[QT_INSTALL_LIBS]
    !static: target.CONFIG = no_dll
    INSTALLS += target
}

#headers
qt_install_headers {
    gen_headers.files = $$SYNCQT.GENERATED_HEADER_FILES
    gen_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
    INSTALLS += gen_headers

    targ_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.INJECTED_HEADER_FILES
    targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME
    INSTALLS += targ_headers

    private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES
    private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private
    generated_privates: \
        private_headers.CONFIG += no_check_exist
    INSTALLS += private_headers

    qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES
    qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa
    INSTALLS += qpa_headers
}

#module
qt_install_module {
    !isEmpty(MODULE_PRI) {
        pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
        pritarget.files = $$MODULE_PRI
        INSTALLS += pritarget
    } else: isEmpty(MODULE_PRIVATE_PRI) {
        warning("Project $$basename(_PRO_FILE_) is a module, but has not defined MODULE_PRI, which is required for Qt to expose the module to other projects.")
    }
    !isEmpty(MODULE_PRIVATE_PRI) {
        privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
        privpritarget.files = $$MODULE_PRIVATE_PRI
        INSTALLS += privpritarget
    }
}
