aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAlexander Neumann <30894796+Neumann-A@users.noreply.github.com>2019-09-12 19:07:22 +0200
committerPhil Christensen <philc@microsoft.com>2019-09-12 10:07:21 -0700
commit96f4487c77fbf08518a9ee665612927c97ce8ebd (patch)
treea7b610226f798bda208a6459f26afa9922fb5dde /scripts
parentecfc714b9adbdf8bf6b394dd6b46d9c56ca993ea (diff)
downloadvcpkg-96f4487c77fbf08518a9ee665612927c97ce8ebd.tar.gz
vcpkg-96f4487c77fbf08518a9ee665612927c97ce8ebd.zip
[Qt] Update to 5.12.4 (#7667)
* update to 5.12.4 * removed port qt5-modularscripts and split it functionality into more functions into qt5-base * added qt_port_hashes.cmake for simpler upgrade. * added optional VCPKG_QT_HOST_MKSPEC and VCPKG_QT_TARGET_MKSPEC to select QTs build mkspecs from a triplet * qt_<config>.conf are now copied from the build dir instead from the port dir * fixed freetype dependencies. * cleanup of vcpkg_qmake scripts. No strange/unclear replacements anymore. * introduced vcpkg_buildpath_length_warning * changed directory layout of the qt5 installation executables and mkspecs a bit.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/cmake/vcpkg_build_qmake.cmake82
-rw-r--r--scripts/cmake/vcpkg_buildpath_length_warning.cmake8
-rw-r--r--scripts/cmake/vcpkg_common_functions.cmake1
-rw-r--r--scripts/cmake/vcpkg_configure_qmake.cmake34
4 files changed, 56 insertions, 69 deletions
diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake
index cf79fe8fc..03c468463 100644
--- a/scripts/cmake/vcpkg_build_qmake.cmake
+++ b/scripts/cmake/vcpkg_build_qmake.cmake
@@ -11,11 +11,9 @@ function(vcpkg_build_qmake)
cmake_parse_arguments(_csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS" ${ARGN})
if(CMAKE_HOST_WIN32)
- set(_PATHSEP ";")
vcpkg_find_acquire_program(JOM)
set(INVOKE "${JOM}")
else()
- set(_PATHSEP ":")
find_program(MAKE make)
set(INVOKE "${MAKE}")
endif()
@@ -23,22 +21,8 @@ function(vcpkg_build_qmake)
# Make sure that the linker finds the libraries used
set(ENV_PATH_BACKUP "$ENV{PATH}")
- if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
- set(DEBUG_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
- endif()
- if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
- set(RELEASE_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
- endif()
-
file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR)
- if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
- list(APPEND _csc_RELEASE_TARGETS ${_csc_TARGETS})
- endif()
- if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
- list(APPEND _csc_DEBUG_TARGETS ${_csc_TARGETS})
- endif()
-
if(NOT _csc_BUILD_LOGNAME)
set(_csc_BUILD_LOGNAME build)
endif()
@@ -56,55 +40,33 @@ function(vcpkg_build_qmake)
set(ENV_CL_BACKUP "$ENV{_CL_}")
set(ENV{_CL_} "/utf-8")
- #First generate the makefiles so we can modify them
+ #Replace with VCPKG variables if PR #7733 is merged
+ unset(BUILDTYPES)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
- set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/debug/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}")
- if(NOT _csc_SKIP_MAKEFILES)
- run_jom(qmake_all makefiles dbg)
-
- #Store debug makefiles path
- file(GLOB_RECURSE DEBUG_MAKEFILES ${DEBUG_DIR}/*Makefile*)
-
- foreach(DEBUG_MAKEFILE ${DEBUG_MAKEFILES})
- file(READ "${DEBUG_MAKEFILE}" _contents)
- string(REPLACE "zlib.lib" "zlibd.lib" _contents "${_contents}")
- string(REPLACE "installed\\${TARGET_TRIPLET}\\lib" "installed\\${TARGET_TRIPLET}\\debug\\lib" _contents "${_contents}")
- string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib" "/LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib\\manual-link /LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib shell32.lib" _contents "${_contents}")
- string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}")
- string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}")
- string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
- string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
- string(REPLACE " Qt5Bootstrap.lib " " ${NATIVE_INSTALLED_DIR}\\tools\\qt5\\Qt5Bootstrap.lib Ole32.lib Netapi32.lib Advapi32.lib ${NATIVE_INSTALLED_DIR}\\lib\\zlib.lib Shell32.lib " _contents "${_contents}")
- file(WRITE "${DEBUG_MAKEFILE}" "${_contents}")
- endforeach()
- endif()
-
- run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} dbg)
+ set(_buildname "DEBUG")
+ list(APPEND BUILDTYPES ${_buildname})
+ set(_short_name_${_buildname} "dbg")
+ set(_path_suffix_${_buildname} "/debug")
endif()
-
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
- set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib${_PATHSEP}${CURRENT_INSTALLED_DIR}/bin${_PATHSEP}${CURRENT_INSTALLED_DIR}/tools/qt5${_PATHSEP}${ENV_PATH_BACKUP}")
- if(NOT _csc_SKIP_MAKEFILES)
- run_jom(qmake_all makefiles rel)
-
- #Store release makefile path
- file(GLOB_RECURSE RELEASE_MAKEFILES ${RELEASE_DIR}/*Makefile*)
-
- foreach(RELEASE_MAKEFILE ${RELEASE_MAKEFILES})
- file(READ "${RELEASE_MAKEFILE}" _contents)
- string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib" "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib\\manual-link /LIBPATH:${NATIVE_INSTALLED_DIR}\\lib shell32.lib" _contents "${_contents}")
- string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}")
- string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}")
- string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
- string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
- string(REPLACE " Qt5Bootstrap.lib " " ${NATIVE_INSTALLED_DIR}\\tools\\qt5\\Qt5Bootstrap.lib Ole32.lib Netapi32.lib Advapi32.lib ${NATIVE_INSTALLED_DIR}\\lib\\zlib.lib Shell32.lib " _contents "${_contents}")
- file(WRITE "${RELEASE_MAKEFILE}" "${_contents}")
- endforeach()
- endif()
-
- run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} rel)
+ set(_buildname "RELEASE")
+ list(APPEND BUILDTYPES ${_buildname})
+ set(_short_name_${_buildname} "rel")
+ set(_path_suffix_${_buildname} "")
endif()
+ unset(_buildname)
+ foreach(_buildname ${BUILDTYPES})
+ set(_BUILD_PREFIX "${_path_suffix_${_buildname}}")
+ vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/bin")
+ vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${_BUILD_PREFIX}/lib")
+ list(APPEND _csc_${_buildname}_TARGETS ${_csc_TARGETS})
+ if(NOT _csc_SKIP_MAKEFILES)
+ run_jom(qmake_all makefiles ${_short_name_${_buildname}})
+ endif()
+ run_jom("${_csc_${_buildname}_TARGETS}" ${_csc_BUILD_LOGNAME} ${_short_name_${_buildname}})
+ endforeach()
+
# Restore the original value of ENV{PATH}
set(ENV{PATH} "${ENV_PATH_BACKUP}")
set(ENV{_CL_} "${ENV_CL_BACKUP}")
diff --git a/scripts/cmake/vcpkg_buildpath_length_warning.cmake b/scripts/cmake/vcpkg_buildpath_length_warning.cmake
new file mode 100644
index 000000000..b7ef10bb8
--- /dev/null
+++ b/scripts/cmake/vcpkg_buildpath_length_warning.cmake
@@ -0,0 +1,8 @@
+function(vcpkg_buildpath_length_warning WARNING_LENGTH)
+ string(LENGTH "${CURRENT_BUILDTREES_DIR}" BUILDTREES_PATH_LENGTH)
+ if(BUILDTREES_PATH_LENGTH GREATER ${WARNING_LENGTH} AND CMAKE_HOST_WIN32)
+ message(WARNING "${PORT}'s buildsystem uses very long paths and may fail on your system.\n"
+ "We recommend moving vcpkg to a short path such as 'C:\\src\\vcpkg' or using the subst command."
+ )
+ endif()
+endfunction() \ No newline at end of file
diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake
index 5f4155e9d..d2ea35608 100644
--- a/scripts/cmake/vcpkg_common_functions.cmake
+++ b/scripts/cmake/vcpkg_common_functions.cmake
@@ -35,3 +35,4 @@ include(vcpkg_replace_string)
include(vcpkg_from_git)
include(vcpkg_test_cmake)
include(vcpkg_prettify_command)
+include(vcpkg_buildpath_length_warning)
diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake
index d660fedd7..73f554a33 100644
--- a/scripts/cmake/vcpkg_configure_qmake.cmake
+++ b/scripts/cmake/vcpkg_configure_qmake.cmake
@@ -6,37 +6,53 @@
# ::
# vcpkg_configure_qmake(SOURCE_PATH <pro_file_path>
# [OPTIONS arg1 [arg2 ...]]
+# [OPTIONS_RELEASE arg1 [arg2 ...]]
+# [OPTIONS_DEBUG arg1 [arg2 ...]]
# )
#
# ``SOURCE_PATH``
# The path to the *.pro qmake project file.
-# ``OPTIONS``
+# ``OPTIONS[_RELEASE|_DEBUG]``
# The options passed to qmake.
function(vcpkg_configure_qmake)
- cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS" ${ARGN})
-
+ cmake_parse_arguments(_csc "" "SOURCE_PATH" "OPTIONS;OPTIONS_RELEASE;OPTIONS_DEBUG" ${ARGN})
+
# Find qmake executable
- find_program(QMAKE_COMMAND NAMES qmake PATHS ${CURRENT_INSTALLED_DIR}/tools/qt5)
+ set(_triplet_hostbindir ${CURRENT_INSTALLED_DIR}/tools/qt5/bin)
+ find_program(QMAKE_COMMAND NAMES qmake PATHS ${VCPKG_QT_HOST_TOOLS_ROOT_DIR}/bin ${_triplet_hostbindir})
if(NOT QMAKE_COMMAND)
message(FATAL_ERROR "vcpkg_configure_qmake: unable to find qmake.")
endif()
- if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
- list(APPEND _csc_OPTIONS CONFIG+=staticlib)
+ if(${VCPKG_LIBRARY_LINKAGE} STREQUAL "static")
+ list(APPEND _csc_OPTIONS "CONFIG-=shared")
+ list(APPEND _csc_OPTIONS "CONFIG*=static")
+ else()
+ list(APPEND _csc_OPTIONS "CONFIG-=static")
+ list(APPEND _csc_OPTIONS "CONFIG*=shared")
+ list(APPEND _csc_OPTIONS_DEBUG "CONFIG*=separate_debug_info")
endif()
-
+
+ if(VCPKG_TARGET_IS_WINDOWS AND ${VCPKG_CRT_LINKAGE} STREQUAL "static")
+ list(APPEND _csc_OPTIONS "CONFIG*=static-runtime")
+ endif()
+
# Cleanup build directories
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
+ if(DEFINED VCPKG_OSX_DEPLOYMENT_TARGET)
+ set(ENV{QMAKE_MACOSX_DEPLOYMENT_TARGET} ${VCPKG_OSX_DEPLOYMENT_TARGET})
+ endif()
+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
configure_file(${CURRENT_INSTALLED_DIR}/tools/qt5/qt_release.conf ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf)
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
vcpkg_execute_required_process(
- COMMAND ${QMAKE_COMMAND} CONFIG-=debug CONFIG+=release ${_csc_OPTIONS} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf"
+ COMMAND ${QMAKE_COMMAND} CONFIG-=debug CONFIG+=release ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/qt.conf"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
LOGNAME config-${TARGET_TRIPLET}-rel
)
@@ -49,7 +65,7 @@ function(vcpkg_configure_qmake)
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
vcpkg_execute_required_process(
- COMMAND ${QMAKE_COMMAND} CONFIG-=release CONFIG+=debug ${_csc_OPTIONS} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf"
+ COMMAND ${QMAKE_COMMAND} CONFIG-=release CONFIG+=debug ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG} ${_csc_SOURCE_PATH} -qtconf "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf"
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
LOGNAME config-${TARGET_TRIPLET}-dbg
)