aboutsummaryrefslogtreecommitdiff
path: root/ports/qt5-base
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-03-23 10:01:07 -0700
committerRobert Schumacher <roschuma@microsoft.com>2018-03-24 09:26:27 -0700
commitb14c1ba9088bd5b2ec88ebead50677cc6cc1a576 (patch)
treed964dc1f9b65685860018447ccbbe1325cd66d48 /ports/qt5-base
parent7029daa36df7040e420b3722f345b6923ce93ef0 (diff)
downloadvcpkg-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.cmake33
-rw-r--r--ports/qt5-base/install_qt.cmake29
-rw-r--r--ports/qt5-base/portfile.cmake158
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)