# Every update requires an update of these hashes and the version within the control file of each of the 32 ports.
# So it is probably better to have a central location for these hashes and let the ports update via a script
set(QT_MAJOR_MINOR_VER 5.15)
set(QT_PATCH_VER 19)
set(QT_UPDATE_VERSION OFF) # Switch to update qt and not build qt. Creates a file cmake/qt_new_hashes.cmake in qt5-base with the new hashes.

set(QT_PORT_LIST base 3d activeqt charts connectivity datavis3d declarative gamepad graphicaleffects imageformats location macextras multimedia networkauth
                 purchasing quick3d quickcontrols quickcontrols2 quicktimeline remoteobjects script scxml sensors serialport speech svg tools virtualkeyboard
                 webchannel websockets webview winextras xmlpatterns doc x11extras androidextras translations serialbus webengine webglplugin wayland)

# qt5-mqtt archive is not included in 5.15.19 release, updated separately
# list(APPEND QT_PORT_LIST mqtt)

set(QT_HASH_qt5-3d abe61fcf3d8de5f83799ed37e948463a8e75817a04a36e2ea276c4f4ee56e4cb64a1d7b2ccb5bca7dd89dd72a7775ebcb7820c731138e0525b29ade7345289c4)
set(QT_HASH_qt5-activeqt 8e23acdaf8a31fa4f8435d6a42a9f8acaacc8d3271817e1a320b7e7484f7c2c649ac05115ab6eed90f47e6df4c272b8379a418ab4060b1dbe1e6c49b9276f88d)
set(QT_HASH_qt5-androidextras 705a9d0f0291a11ac4803351df9be4d16969dea1eda47a6bda1889784b8b2b9e7e257e9a8f742b6b2a07043c5ef3a7c00ddc3898fa0a3f4c3e76cbde38f22aa6)
set(QT_HASH_qt5-base ced1141f5c8f7de26ba009f1cfd31259f2b320782497fac677ef3f5357b1e9df6b65045aa0c0c4d3c1c1de9d9a00bc286eceb4f9b097d2a62f0ceab39c6134b0)
set(QT_HASH_qt5-charts d4f43d114681c54054cddee6c2420cd1186805bb95f05d101ed27fb996d489e9ca9cce65ba3c84ba649618aff98ca4ae6358bc0001228a8c0a67c31ff202546e)
set(QT_HASH_qt5-connectivity 63e91a7b2096aa23554b87ffc6e5907124dce808949e8b4377969f1d1254e8020d86378fe49bd8bb65a863555eed8eaaaff6802bf562a0572ff4ef5cdfdc67c5)
set(QT_HASH_qt5-datavis3d c592a588a99eedc37e318ac36f7806e47c108a97668a6829f524fafa36e7dc8ff96514dafc560ef8f2d32a62bca1255aab5b7f9f240fbd8a7acede935354bbf6)
set(QT_HASH_qt5-declarative 3a39260ab3ce93c2bc56e2de97df0c8b188c58d27920040bb15c5509f48af41ded102430580db54b7523891d0c80699a295ad04a58c9192843d87a23e9ce7d3f)
set(QT_HASH_qt5-doc ecf333672e13125d2e5b178cc29baad8cd684182c3f8a9ae51ba32e74430c67bbb56570821ae5e73baeb60fd27841a452102e567f2c7b412d1aa687480684558)
set(QT_HASH_qt5-gamepad c25f6508f53f30c520a8e79f8a36d5134c9f35665f25f1942d8b7edf59f6cd6215c1466fa2ff9314d6a3ed380b0ca46ca2b5145035ecd079822814d8311d4d2c)
set(QT_HASH_qt5-graphicaleffects 85bdbd354c464baf1f832ffb9b8c739b4837b10eb59f6869cc35573c884e40a3476cc2ebee4cac54ca9bc0dda7d9fdd0e8b86e4a7004a6c5c494c265e9790d07)
set(QT_HASH_qt5-imageformats 6caf58134687b6be898998105101d83e223337446e3ab78b5856b3fdc6fafe5e5ff2d4da619c4a1504ced1f9c3197587e84667d233eae61be01182a6715f2ec9)
set(QT_HASH_qt5-location f20dd7e00fc3150ec6ec0f09a545ec579a11a18cc9b3bcec63e3e40a93bed8d3c18b4080f41b9428c1b3066e12716bc6781f6acd5acb67f5c0f1cbcf89719cef)
set(QT_HASH_qt5-macextras a442e48b669003556ae39a2d6f936fb7a89525b8da39b92ab58b9d2098c935c8f2731fc0a7f42ea81a660d42b21f851216af2a3140eac4a0ffc996c57a93c974)
set(QT_HASH_qt5-multimedia 9217eb7ba18014d0900b18073398b84918efb2ea422f28d6bb5bc0773d39585af79e74c6b1cd332db2d637d3b5aa22fd767a189a3e06829f3f3ecdc5c9f69ff6)
set(QT_HASH_qt5-networkauth f914d60f7ab58b2aae6296e2bb1711bafb53882155c577d65de2739648ffe660f2e17c2dabe42c1691db4d9c084da0f1b410933d4502ea679b42ff0675732bd3)
set(QT_HASH_qt5-purchasing 3b38374598cca726bbf86ea1e65ee04a28dbe9e493afccdf8161ad03893196402562d26f037087ce863d49d1963f06d62262d29d4eb304116abcb2e390a31d7f)
set(QT_HASH_qt5-quick3d efba129b868bf7fcc29b7cf3f09c52f5744c4926e92b729487b43b13fe4893096d322dffaf51114c45e359d2259702c81c8934bd6be4af3930e8d94d20ee0d0b)
set(QT_HASH_qt5-quickcontrols 96ee4175ef9802baaa65828f582cf994509488f2396d74db0133c2ff76f54829680df7fa45c04163fbb431a2c84e1702f3df2c7e4733c85874773cb7a381a11e)
set(QT_HASH_qt5-quickcontrols2 20eae9bdd6111611d5fbbf1398834627023b181e846fe6ff320627c517c51ff693abd0206e9e66885a09e0ae2bbc81862a791089ff92ca2cc15833b37576b839)
set(QT_HASH_qt5-quicktimeline 3252845f26566574833b86cfa43cecf55eedf00ef9a87947f7a54c356192ae747f22f6366b123da9395bb9c3388796bea15b8514eeb464d16b48c6a6af022d0f)
set(QT_HASH_qt5-remoteobjects 73f1025062919c4f6d5dba0f955334edec87f975854465c7f9db30146969b2f8cbfe97248cdefd95525d96b7a0597761cd511c237ec77e7d1bcbb10836acd418)
set(QT_HASH_qt5-script 2504b4cadabf20764d8d899988ab4875f5d36078146e97ca6436f09efa9e1428d61148c1c00bd02a12445b40bd74cc2555b932ec98fa55126c15bba79cd9fd8d)
set(QT_HASH_qt5-scxml 8a956378f56a31adea8a8366e71355d2cd8cd3beb0bad006100c735b16812c8dd9bad39a590d438ec956c9dfc68e0f2c321242c264c2ecc44d38d498807e3fa3)
set(QT_HASH_qt5-sensors 16c60dd1f25eb7b55e2e46313456ff28d9dfb202debf25c77218803e4fb8d36f9c170c123e397105d1dc078158bca37623ca9b69c1e113d5716aae0e8f7e63f5)
set(QT_HASH_qt5-serialbus 2280bfe7c07ce018b21ee2a3d7ab1a27a507d3ce8060284a34201408ed8efa2c7f2eec37e96e03f5764a056cc67df2dce35daf4ee0d150fcc8e91cb1fa715b0e)
set(QT_HASH_qt5-serialport 45f8c7f14717790921eebe4d70b932b4f84d92ba52dafb667eb2c49710ac27a382a7975bc51eb4f6cec07389e5d5ae2c9175b3872ddc790142fa82ba1087bc0b)
set(QT_HASH_qt5-speech 64203deba0a7ca9c461af27a82388d6822a714158718c506aec6f8db8a78175bc04607e2a16e1aaf22fe33c8f93f165f571bd5cddbd106906e68142bb4320f90)
set(QT_HASH_qt5-svg e2f948d52f1285f6869fd65878387d1f34359c2f6591adca3b4049e53bc09a8d9c527d500ed74b39f8459fd79c72eed98988b17537fb89c9f7b04d25895301cc)
set(QT_HASH_qt5-tools 846d482874260174cd36828faa1ebd7ea08612d22e0eca45db449bde3b47e68fb9fdb22f0dac60d582772cd74f634a0a141ff2b356f5fe79f387c919ba3a3988)
set(QT_HASH_qt5-translations 2c35de1cbde0452e5afb42f0daee774b020bb598662eaa6ea62a8e9db4d72aadb4476e0653281f4941f95ceb9d2f85791f1602a169213e8258b6827f3aa264f9)
set(QT_HASH_qt5-virtualkeyboard 46ddcfe6cb29712212f44b550ced2b7dad27d9d007bf3c6f9fe120889085fd64092047f89136bef379bc381437331c0a3a54d2334ca1bbbabfa139c3ba0d1d4a)
set(QT_HASH_qt5-wayland 803c1b1e6c4c10604fb25d926b1f786f020b1ae422e98bd63c62c9d1a7352e9873e181a235830da029c21fe400b6047f0a611f9fb30af946f6e4e167d68c94c9)
set(QT_HASH_qt5-webchannel 9933337d16d572d0306fbd65ba838b28cdd228914fd54d819d61c4524cda036d7455a4cc7002b51e667c02c132adc8197586bdd79af6c51cb0f59915d2b61130)
set(QT_HASH_qt5-webengine 1b26848cd5a6720d6ad181cf05501f139686a0fbb8a6e6c2f525a9dc442a94befc88fa13c19b80dcec1d2b1cf4101e07805570911bef90064602bd9ecb488ef0)
set(QT_HASH_qt5-webglplugin 880094190e0e1d8c143921b1d80fde6a702691ef7a4e0b859b47bfc8ad4045640ccc6c0eb7a5dfec1180094e529e659e1c66e1fd890a885dac5c57f5bd017d0d)
set(QT_HASH_qt5-websockets 5440a61fea160c7d64432690d36e9f7e088fa3247083cef9655d89e409849ed174075db6fb0d6a1aa70b07cb5746f841471e5cfb6991d939b0561021e8f25d75)
set(QT_HASH_qt5-webview 0740a39d83e929ca946a7fc83e085beddf6fe0fa3050c5b3479a564e3fac8dc663a1c036a20b6bc439027bf42aa055c787acdc0cc8f99ed5a496b4a99786129c)
set(QT_HASH_qt5-winextras 395fee164d6a7937bc5346e0062cec74a58a021b531832135dad015467e76ff10a75eb126cf6d5a8e8bc0b4cc1042f805333d0d411e4a818abecf8358a9f4a38)
set(QT_HASH_qt5-x11extras 43957b548032173cc85a1eaa79f192348959248d2306575239e94999b4cf61724464ccf7409ba59950c031912c5d0f62f7c244feec22b58bedc534ab45d734bb)
set(QT_HASH_qt5-xmlpatterns 1350b90af1a0a37f0b524f84aeb4bc0a45dfd7a5c01249d5dff6bf8e47f9555e807abe0334c2ebf2d595909eab9d19a746d77c3178dd0fad3e109cef17b1408e)

if(QT_UPDATE_VERSION)
    message(STATUS "Running Qt in automatic version port update mode!")
    set(_VCPKG_INTERNAL_NO_HASH_CHECK 1)
    if("${PORT}" MATCHES "qt5-base")
        function(update_qt_version_in_manifest _port_name)
            set(_current_control "${VCPKG_ROOT_DIR}/ports/${_port_name}/vcpkg.json")
            file(READ ${_current_control} _control_contents)
            #message(STATUS "Before: \n${_control_contents}")
            string(REGEX REPLACE "\"version.*\": \"[0-9]+\.[0-9]+\.[0-9]+\",\n" "\"version\": \"${QT_MAJOR_MINOR_VER}.${QT_PATCH_VER}\",\n" _control_contents "${_control_contents}")
            string(REGEX REPLACE "\n  \"port-version\": [0-9]+," "" _control_contents "${_control_contents}")
            #message(STATUS "After: \n${_control_contents}")
            file(WRITE ${_current_control} "${_control_contents}")
            configure_file("${_current_control}" "${_current_control}" @ONLY NEWLINE_STYLE LF)
        endfunction()

        update_qt_version_in_manifest("qt5")
        foreach(_current_qt_port_basename ${QT_PORT_LIST})
            update_qt_version_in_manifest("qt5-${_current_qt_port_basename}")
        endforeach()
    endif()
endif()
