diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2018-03-23 10:01:07 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2018-03-24 09:26:27 -0700 |
| commit | b14c1ba9088bd5b2ec88ebead50677cc6cc1a576 (patch) | |
| tree | d964dc1f9b65685860018447ccbbe1325cd66d48 /ports/qt5-base | |
| parent | 7029daa36df7040e420b3722f345b6923ce93ef0 (diff) | |
| download | vcpkg-b14c1ba9088bd5b2ec88ebead50677cc6cc1a576.tar.gz vcpkg-b14c1ba9088bd5b2ec88ebead50677cc6cc1a576.zip | |
[libpq][harfbuzz][qt5-base] Fix non-Windows
Diffstat (limited to 'ports/qt5-base')
| -rw-r--r-- | ports/qt5-base/configure_qt.cmake | 33 | ||||
| -rw-r--r-- | ports/qt5-base/install_qt.cmake | 29 | ||||
| -rw-r--r-- | ports/qt5-base/portfile.cmake | 158 |
3 files changed, 145 insertions, 75 deletions
diff --git a/ports/qt5-base/configure_qt.cmake b/ports/qt5-base/configure_qt.cmake index 1d4f1e570..356361a9b 100644 --- a/ports/qt5-base/configure_qt.cmake +++ b/ports/qt5-base/configure_qt.cmake @@ -1,12 +1,8 @@ function(configure_qt) cmake_parse_arguments(_csc "" "SOURCE_PATH;PLATFORM" "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" ${ARGN}) - if (_csc_PLATFORM) - set(PLATFORM ${_csc_PLATFORM}) - elseif(VCPKG_PLATFORM_TOOLSET MATCHES "v140") - set(PLATFORM "win32-msvc2015") - elseif(VCPKG_PLATFORM_TOOLSET MATCHES "v141") - set(PLATFORM "win32-msvc2017") + if(NOT _csc_PLATFORM) + message(FATAL_ERROR "configure_qt requires a PLATFORM argument.") endif() vcpkg_find_acquire_program(PERL) @@ -15,17 +11,24 @@ function(configure_qt) file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}") - if(DEFINED VCPKG_CRT_LINKAGE AND VCPKG_CRT_LINKAGE STREQUAL static) - list(APPEND _csc_OPTIONS - "-static" - "-static-runtime" - ) + if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + list(APPEND _csc_OPTIONS "-static") + endif() + + if(VCPKG_CRT_LINKAGE STREQUAL "static") + list(APPEND _csc_OPTIONS "-static-runtime") + endif() + + if(CMAKE_HOST_WIN32) + set(CONFIGURE_BAT "configure.bat") + else() + set(CONFIGURE_BAT "configure") endif() message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) vcpkg_execute_required_process( - COMMAND "${_csc_SOURCE_PATH}/configure.bat" ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG} + COMMAND "${_csc_SOURCE_PATH}/${CONFIGURE_BAT}" ${_csc_OPTIONS} ${_csc_OPTIONS_DEBUG} -debug -prefix ${CURRENT_PACKAGES_DIR}/debug -hostbindir ${CURRENT_PACKAGES_DIR}/debug/tools/qt5 @@ -36,7 +39,7 @@ function(configure_qt) -headerdir ${CURRENT_PACKAGES_DIR}/include -I ${CURRENT_INSTALLED_DIR}/include -L ${CURRENT_INSTALLED_DIR}/debug/lib - -platform ${PLATFORM} + -platform ${_csc_PLATFORM} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg LOGNAME config-${TARGET_TRIPLET}-dbg ) @@ -45,7 +48,7 @@ function(configure_qt) message(STATUS "Configuring ${TARGET_TRIPLET}-rel") file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel) vcpkg_execute_required_process( - COMMAND "${_csc_SOURCE_PATH}/configure.bat" ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} + COMMAND "${_csc_SOURCE_PATH}/${CONFIGURE_BAT}" ${_csc_OPTIONS} ${_csc_OPTIONS_RELEASE} -release -prefix ${CURRENT_PACKAGES_DIR} -hostbindir ${CURRENT_PACKAGES_DIR}/tools/qt5 @@ -55,7 +58,7 @@ function(configure_qt) -qmldir ${CURRENT_PACKAGES_DIR}/qml -I ${CURRENT_INSTALLED_DIR}/include -L ${CURRENT_INSTALLED_DIR}/lib - -platform ${PLATFORM} + -platform ${_csc_PLATFORM} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel LOGNAME config-${TARGET_TRIPLET}-rel ) diff --git a/ports/qt5-base/install_qt.cmake b/ports/qt5-base/install_qt.cmake index 37528e4e6..482802f38 100644 --- a/ports/qt5-base/install_qt.cmake +++ b/ports/qt5-base/install_qt.cmake @@ -2,12 +2,27 @@ function(install_qt) cmake_parse_arguments(_bc "DISABLE_PARALLEL" "" "" ${ARGN}) if (_bc_DISABLE_PARALLEL) - set(JOBS "1") + set(NUMBER_OF_PROCESSORS "1") else() - set(JOBS "$ENV{NUMBER_OF_PROCESSORS}") + if(DEFINED ENV{NUMBER_OF_PROCESSORS}) + set(NUMBER_OF_PROCESSORS $ENV{NUMBER_OF_PROCESSORS}) + else() + execute_process( + COMMAND nproc + OUTPUT_VARIABLE NUMBER_OF_PROCESSORS + ) + string(REPLACE "\n" "" NUMBER_OF_PROCESSORS "${NUMBER_OF_PROCESSORS}") + string(REPLACE " " "" NUMBER_OF_PROCESSORS "${NUMBER_OF_PROCESSORS}") + endif() endif() - vcpkg_find_acquire_program(JOM) + if(CMAKE_HOST_WIN32) + vcpkg_find_acquire_program(JOM) + set(INVOKE "${JOM}" /J ${NUMBER_OF_PROCESSORS}) + else() + find_program(MAKE make) + set(INVOKE "${MAKE}" -j${NUMBER_OF_PROCESSORS}) + endif() vcpkg_find_acquire_program(PYTHON3) get_filename_component(PYTHON3_EXE_PATH ${PYTHON3} DIRECTORY) set(ENV{PATH} "${PYTHON3_EXE_PATH};$ENV{PATH}") @@ -16,12 +31,12 @@ function(install_qt) message(STATUS "Package ${TARGET_TRIPLET}-dbg") set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/bin;${_path}") vcpkg_execute_required_process( - COMMAND ${JOM} /J ${JOBS} + COMMAND ${INVOKE} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg LOGNAME build-${TARGET_TRIPLET}-dbg ) vcpkg_execute_required_process( - COMMAND ${JOM} /J ${JOBS} install + COMMAND ${INVOKE} install WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg LOGNAME package-${TARGET_TRIPLET}-dbg ) @@ -30,12 +45,12 @@ function(install_qt) message(STATUS "Package ${TARGET_TRIPLET}-rel") set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;${_path}") vcpkg_execute_required_process( - COMMAND ${JOM} /J ${JOBS} + COMMAND ${INVOKE} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel LOGNAME build-${TARGET_TRIPLET}-rel ) vcpkg_execute_required_process( - COMMAND ${JOM} /J ${JOBS} install + COMMAND ${INVOKE} install WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel LOGNAME package-${TARGET_TRIPLET}-rel ) diff --git a/ports/qt5-base/portfile.cmake b/ports/qt5-base/portfile.cmake index 9e9d7779a..39498b4a3 100644 --- a/ports/qt5-base/portfile.cmake +++ b/ports/qt5-base/portfile.cmake @@ -1,13 +1,13 @@ include(vcpkg_common_functions) string(LENGTH "${CURRENT_BUILDTREES_DIR}" BUILDTREES_PATH_LENGTH) -if(BUILDTREES_PATH_LENGTH GREATER 37) +if(BUILDTREES_PATH_LENGTH GREATER 37 AND CMAKE_HOST_WIN32) message(WARNING "Qt5'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() -if(VCPKG_LIBRARY_LINKAGE STREQUAL static) +if((NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") AND VCPKG_LIBRARY_LINKAGE STREQUAL static) message(FATAL_ERROR "Qt5 doesn't currently support static builds. Please use a dynamic triplet instead.") endif() @@ -30,58 +30,108 @@ if (EXISTS ${CURRENT_BUILDTREES_DIR}/src/${ARCHIVE_NAME}) file(RENAME ${CURRENT_BUILDTREES_DIR}/src/${ARCHIVE_NAME} ${CURRENT_BUILDTREES_DIR}/src/${SRCDIR_NAME}) endif() +# Remove vendored dependencies to ensure they are not picked up by the build +foreach(DEPENDENCY freetype zlib harfbuzzng libjpeg libpng double-conversion) + if(EXISTS ${SOURCE_PATH}/src/3rdparty/${DEPENDENCY}) + file(REMOVE_RECURSE ${SOURCE_PATH}/src/3rdparty/${DEPENDENCY}) + endif() +endforeach() + +file(REMOVE_RECURSE ${SOURCE_PATH}/include/QtZlib) + vcpkg_apply_patches( SOURCE_PATH ${SOURCE_PATH} PATCHES - "${CMAKE_CURRENT_LIST_DIR}/fix-system-pcre2.patch" +# "${CMAKE_CURRENT_LIST_DIR}/fix-system-pcre2.patch" "${CMAKE_CURRENT_LIST_DIR}/fix-system-freetype.patch" ) # This fixes issues on machines with default codepages that are not ASCII compatible, such as some CJK encodings set(ENV{_CL_} "/utf-8") -configure_qt( - SOURCE_PATH ${SOURCE_PATH} - OPTIONS - -confirm-license - -opensource - -system-zlib - -system-libjpeg - -system-libpng - -system-freetype - -system-pcre - -system-harfbuzz - -system-doubleconversion - -system-sqlite - -no-fontconfig - -sql-sqlite - -sql-psql - -nomake examples -nomake tests - -opengl desktop # other options are "-no-opengl" and "-opengl angle" - -mp - LIBJPEG_LIBS="-ljpeg" - OPTIONS_RELEASE - ZLIB_LIBS="-lzlib" - LIBPNG_LIBS="-llibpng16" - FREETYPE_LIBS="-lfreetype" - OPTIONS_DEBUG - ZLIB_LIBS="-lzlibd" - LIBPNG_LIBS="-llibpng16d" - PSQL_LIBS="-llibpqd" - FREETYPE_LIBS="-lfreetyped" +set(CORE_OPTIONS + -confirm-license + -opensource + -system-zlib + -system-libjpeg + -system-libpng + -system-freetype + -system-pcre + -system-harfbuzz + -system-doubleconversion + -no-fontconfig + -nomake examples -nomake tests ) +if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + if(VCPKG_PLATFORM_TOOLSET MATCHES "v140") + set(PLATFORM "win32-msvc2015") + elseif(VCPKG_PLATFORM_TOOLSET MATCHES "v141") + set(PLATFORM "win32-msvc2017") + endif() + configure_qt( + SOURCE_PATH ${SOURCE_PATH} + PLATFORM ${PLATFORM} + OPTIONS + ${CORE_OPTIONS} + -sql-sqlite + -sql-psql + -system-sqlite + -mp + -opengl desktop # other options are "-no-opengl", "-opengl angle", and "-opengl desktop" + LIBJPEG_LIBS="-ljpeg" + OPTIONS_RELEASE + ZLIB_LIBS="-lzlib" + LIBPNG_LIBS="-llibpng16" + FREETYPE_LIBS="-lfreetype" + OPTIONS_DEBUG + ZLIB_LIBS="-lzlibd" + LIBPNG_LIBS="-llibpng16d" + PSQL_LIBS="-llibpqd" + FREETYPE_LIBS="-lfreetyped" + ) +elseif(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + configure_qt( + SOURCE_PATH ${SOURCE_PATH} + PLATFORM "linux-g++" + OPTIONS + ${CORE_OPTIONS} + -no-sqlite + -no-opengl # other options are "-no-opengl", "-opengl angle", and "-opengl desktop" + LIBJPEG_LIBS="-ljpeg" + OPTIONS_RELEASE + "QMAKE_LIBS_PRIVATE+=${CURRENT_INSTALLED_DIR}/lib/libpng16.a" + "QMAKE_LIBS_PRIVATE+=${CURRENT_INSTALLED_DIR}/lib/libz.a" + "ZLIB_LIBS=${CURRENT_INSTALLED_DIR}/lib/libz.a" + "LIBPNG_LIBS=${CURRENT_INSTALLED_DIR}/lib/libpng16.a" + "FREETYPE_LIBS=${CURRENT_INSTALLED_DIR}/lib/libfreetype.a" + "PSQL_LIBS=${CURRENT_INSTALLED_DIR}/lib/libpq.a ${CURRENT_INSTALLED_DIR}/lib/libssl.a ${CURRENT_INSTALLED_DIR}/lib/libcrypto.a" + OPTIONS_DEBUG + "QMAKE_LIBS_PRIVATE+=${CURRENT_INSTALLED_DIR}/debug/lib/libpng16d.a" + "QMAKE_LIBS_PRIVATE+=${CURRENT_INSTALLED_DIR}/debug/lib/libz.a" + "ZLIB_LIBS=${CURRENT_INSTALLED_DIR}/debug/lib/libz.a" + "LIBPNG_LIBS=${CURRENT_INSTALLED_DIR}/debug/lib/libpng16d.a" + "FREETYPE_LIBS=${CURRENT_INSTALLED_DIR}/debug/lib/libfreetyped.a" + "PSQL_LIBS=${CURRENT_INSTALLED_DIR}/debug/lib/libpqd.a ${CURRENT_INSTALLED_DIR}/debug/lib/libssl.a ${CURRENT_INSTALLED_DIR}/debug/lib/libcrypto.a" + ) +endif() + install_qt() file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake ${CURRENT_PACKAGES_DIR}/share/cmake) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/cmake) -file(GLOB BINARY_TOOLS "${CURRENT_PACKAGES_DIR}/bin/*.exe") +file(GLOB BINARY_TOOLS "${CURRENT_PACKAGES_DIR}/bin/*") +list(FILTER BINARY_TOOLS EXCLUDE REGEX "\\.dll\$") file(INSTALL ${BINARY_TOOLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5) file(REMOVE ${BINARY_TOOLS}) -file(GLOB BINARY_TOOLS "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe") +file(GLOB BINARY_TOOLS "${CURRENT_PACKAGES_DIR}/debug/bin/*") +list(FILTER BINARY_TOOLS EXCLUDE REGEX "\\.dll\$") file(REMOVE ${BINARY_TOOLS}) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/tools") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() file(COPY ${CMAKE_CURRENT_LIST_DIR}/qt_debug.conf ${CMAKE_CURRENT_LIST_DIR}/qt_release.conf DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5) @@ -94,25 +144,27 @@ vcpkg_execute_required_process( vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT}) vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/qt5) -#--------------------------------------------------------------------------- -# qtmain(d) vs. Qt5AxServer(d) -#--------------------------------------------------------------------------- -# Qt applications have to either link to qtmain(d) or to Qt5AxServer(d), -# never both. See http://doc.qt.io/qt-5/activeqt-server.html for more info. -# -# Create manual-link folders: -file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link) -file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) -# -# Either have users explicitly link against qtmain.lib, qtmaind.lib: -file(COPY ${CURRENT_PACKAGES_DIR}/lib/qtmain.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib/manual-link) -file(COPY ${CURRENT_PACKAGES_DIR}/lib/qtmain.prl DESTINATION ${CURRENT_PACKAGES_DIR}/lib/manual-link) -file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/qtmain.lib) -file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/qtmain.prl) -file(COPY ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) -file(COPY ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.prl DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) -file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.lib) -file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.prl) +if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/qtmain.lib) + #--------------------------------------------------------------------------- + # qtmain(d) vs. Qt5AxServer(d) + #--------------------------------------------------------------------------- + # Qt applications have to either link to qtmain(d) or to Qt5AxServer(d), + # never both. See http://doc.qt.io/qt-5/activeqt-server.html for more info. + # + # Create manual-link folders: + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link) + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) + # + # Either have users explicitly link against qtmain.lib, qtmaind.lib: + file(COPY ${CURRENT_PACKAGES_DIR}/lib/qtmain.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib/manual-link) + file(COPY ${CURRENT_PACKAGES_DIR}/lib/qtmain.prl DESTINATION ${CURRENT_PACKAGES_DIR}/lib/manual-link) + file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/qtmain.lib) + file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/qtmain.prl) + file(COPY ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) + file(COPY ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.prl DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link) + file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.lib) + file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/qtmaind.prl) +endif() file(COPY ${CMAKE_CURRENT_LIST_DIR}/qtdeploy.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/plugins) file(COPY ${CMAKE_CURRENT_LIST_DIR}/qtdeploy.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/debug/plugins) |
