mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-02 19:28:59 +08:00
210 lines
8.2 KiB
CMake
210 lines
8.2 KiB
CMake
include(${CMAKE_TRIPLET_FILE})
|
|
include(vcpkg_common_functions)
|
|
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/qt-5.7.1)
|
|
set(OUTPUT_PATH ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET})
|
|
set(ENV{QTDIR} ${OUTPUT_PATH}/qtbase)
|
|
set(ENV{PATH} "${OUTPUT_PATH}/qtbase/bin;$ENV{PATH}")
|
|
|
|
find_program(NMAKE nmake)
|
|
vcpkg_find_acquire_program(JOM)
|
|
vcpkg_find_acquire_program(PERL)
|
|
vcpkg_find_acquire_program(PYTHON3)
|
|
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
|
|
get_filename_component(PYTHON3_EXE_PATH ${PYTHON3} DIRECTORY)
|
|
get_filename_component(JOM_EXE_PATH ${JOM} DIRECTORY)
|
|
set(ENV{PATH} "${JOM_EXE_PATH};${PYTHON3_EXE_PATH};${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH};${PERL_EXE_PATH}")
|
|
set(ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include;$ENV{INCLUDE}")
|
|
set(ENV{LIB} "${CURRENT_INSTALLED_DIR}/lib;$ENV{LIB}")
|
|
vcpkg_download_distfile(ARCHIVE_FILE
|
|
URLS "http://download.qt.io/official_releases/qt/5.7/5.7.1/single/qt-everywhere-opensource-src-5.7.1.7z"
|
|
FILENAME "qt-5.7.1.7z"
|
|
SHA512 3ffcf490a1c0107a05113aebbf70015c50d05fbb35439273c243133ddb146d51aacae15ecd6411d563cc8cfe103df896394c365a69bc48fc86c3bce6a1af3107
|
|
)
|
|
vcpkg_extract_source_archive(${ARCHIVE_FILE})
|
|
if (EXISTS ${CURRENT_BUILDTREES_DIR}/src/qt-everywhere-opensource-src-5.7.1)
|
|
file(RENAME ${CURRENT_BUILDTREES_DIR}/src/qt-everywhere-opensource-src-5.7.1 ${CURRENT_BUILDTREES_DIR}/src/qt-5.7.1)
|
|
endif()
|
|
|
|
if(EXISTS ${OUTPUT_PATH})
|
|
file(REMOVE_RECURSE ${OUTPUT_PATH})
|
|
if(EXISTS ${OUTPUT_PATH})
|
|
message(FATAL_ERROR "Could not clean output directory.")
|
|
endif()
|
|
endif()
|
|
file(MAKE_DIRECTORY ${OUTPUT_PATH})
|
|
if(DEFINED VCPKG_CRT_LINKAGE AND VCPKG_CRT_LINKAGE STREQUAL static)
|
|
list(APPEND QT_RUNTIME_LINKAGE "-static")
|
|
list(APPEND QT_RUNTIME_LINKAGE "-static-runtime")
|
|
vcpkg_apply_patches(
|
|
SOURCE_PATH ${SOURCE_PATH}
|
|
PATCHES "${CMAKE_CURRENT_LIST_DIR}/set-static-qmakespec.patch"
|
|
QUIET
|
|
)
|
|
else()
|
|
vcpkg_apply_patches(
|
|
SOURCE_PATH ${SOURCE_PATH}
|
|
PATCHES "${CMAKE_CURRENT_LIST_DIR}/set-shared-qmakespec.patch"
|
|
QUIET
|
|
)
|
|
endif()
|
|
|
|
message(STATUS "Configuring ${TARGET_TRIPLET}")
|
|
vcpkg_execute_required_process(
|
|
COMMAND "${SOURCE_PATH}/configure.bat"
|
|
-confirm-license -opensource -platform win32-msvc2015
|
|
-debug-and-release -force-debug-info ${QT_RUNTIME_LINKAGE}
|
|
-qt-zlib
|
|
-no-libjpeg
|
|
-no-libpng
|
|
-no-freetype
|
|
-qt-pcre
|
|
-no-harfbuzz
|
|
-no-angle
|
|
-no-inotify
|
|
-no-mtdev
|
|
-no-evdev
|
|
-system-doubleconversion
|
|
-no-iconv
|
|
-system-sqlite
|
|
-opengl desktop # other options are "-no-opengl" and "-opengl angle"
|
|
-mp
|
|
-nomake examples -nomake tests -no-compile-examples
|
|
-skip webengine -skip declarative
|
|
-qt-sql-sqlite -qt-sql-psql
|
|
-prefix ${CURRENT_PACKAGES_DIR}
|
|
-bindir ${CURRENT_PACKAGES_DIR}/bin
|
|
-hostbindir ${CURRENT_PACKAGES_DIR}/tools/qt5
|
|
-archdatadir ${CURRENT_PACKAGES_DIR}/share/qt5
|
|
-datadir ${CURRENT_PACKAGES_DIR}/share/qt5
|
|
-plugindir ${CURRENT_PACKAGES_DIR}/plugins
|
|
WORKING_DIRECTORY ${OUTPUT_PATH}
|
|
LOGNAME configure-${TARGET_TRIPLET}
|
|
)
|
|
message(STATUS "Configure ${TARGET_TRIPLET} done")
|
|
|
|
message(STATUS "Building ${TARGET_TRIPLET}")
|
|
# Multiple executions are required due to https://bugreports.qt.io/browse/QTBUG-53393
|
|
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
|
|
set(COUNT 1)
|
|
else()
|
|
set(COUNT 3)
|
|
endif()
|
|
vcpkg_execute_required_process_repeat(
|
|
COUNT ${COUNT}
|
|
COMMAND ${JOM}
|
|
WORKING_DIRECTORY ${OUTPUT_PATH}
|
|
LOGNAME build-${TARGET_TRIPLET}
|
|
)
|
|
message(STATUS "Build ${TARGET_TRIPLET} done")
|
|
|
|
message(STATUS "Installing ${TARGET_TRIPLET}")
|
|
vcpkg_execute_required_process(
|
|
COMMAND ${JOM} -j1 install
|
|
WORKING_DIRECTORY ${OUTPUT_PATH}
|
|
LOGNAME install-${TARGET_TRIPLET}
|
|
)
|
|
message(STATUS "Install ${TARGET_TRIPLET} done")
|
|
|
|
message(STATUS "Packaging ${TARGET_TRIPLET}")
|
|
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug)
|
|
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib)
|
|
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin)
|
|
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake ${CURRENT_PACKAGES_DIR}/share/cmake)
|
|
|
|
if(DEFINED VCPKG_CRT_LINKAGE AND VCPKG_CRT_LINKAGE STREQUAL dynamic)
|
|
file(INSTALL ${CURRENT_PACKAGES_DIR}/bin
|
|
DESTINATION ${CURRENT_PACKAGES_DIR}/debug
|
|
FILES_MATCHING PATTERN "*d.dll"
|
|
)
|
|
file(INSTALL ${CURRENT_PACKAGES_DIR}/bin
|
|
DESTINATION ${CURRENT_PACKAGES_DIR}/debug
|
|
FILES_MATCHING PATTERN "*d.pdb"
|
|
)
|
|
file(GLOB DEBUG_BIN_FILES "${CURRENT_PACKAGES_DIR}/bin/*d.dll")
|
|
file(REMOVE ${DEBUG_BIN_FILES})
|
|
file(GLOB DEBUG_BIN_FILES "${CURRENT_PACKAGES_DIR}/bin/*d.pdb")
|
|
file(REMOVE ${DEBUG_BIN_FILES})
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/bin/Qt5Gamepad.dll)
|
|
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/bin/Qt5Gamepad.dll ${CURRENT_PACKAGES_DIR}/bin/Qt5Gamepad.dll)
|
|
endif()
|
|
endif()
|
|
|
|
file(INSTALL ${CURRENT_PACKAGES_DIR}/lib
|
|
DESTINATION ${CURRENT_PACKAGES_DIR}/debug
|
|
FILES_MATCHING PATTERN "*d.lib"
|
|
)
|
|
file(INSTALL ${CURRENT_PACKAGES_DIR}/lib
|
|
DESTINATION ${CURRENT_PACKAGES_DIR}/debug
|
|
FILES_MATCHING PATTERN "*d.prl"
|
|
)
|
|
file(INSTALL ${CURRENT_PACKAGES_DIR}/lib
|
|
DESTINATION ${CURRENT_PACKAGES_DIR}/debug
|
|
FILES_MATCHING PATTERN "*d.pdb"
|
|
)
|
|
file(GLOB DEBUG_LIB_FILES "${CURRENT_PACKAGES_DIR}/lib/*d.lib")
|
|
file(REMOVE ${DEBUG_LIB_FILES})
|
|
file(GLOB DEBUG_LIB_FILES "${CURRENT_PACKAGES_DIR}/lib/*d.prl")
|
|
file(REMOVE ${DEBUG_LIB_FILES})
|
|
file(GLOB DEBUG_LIB_FILES "${CURRENT_PACKAGES_DIR}/lib/*d.pdb")
|
|
if(DEBUG_LIB_FILES)
|
|
file(REMOVE ${DEBUG_LIB_FILES})
|
|
endif()
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/Qt5Gamepad.lib)
|
|
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/Qt5Gamepad.lib ${CURRENT_PACKAGES_DIR}/lib/Qt5Gamepad.lib)
|
|
endif()
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/Qt5Gamepad.prl)
|
|
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/Qt5Gamepad.prl ${CURRENT_PACKAGES_DIR}/lib/Qt5Gamepad.prl)
|
|
endif()
|
|
file(GLOB BINARY_TOOLS "${CURRENT_PACKAGES_DIR}/bin/*.exe")
|
|
file(INSTALL ${BINARY_TOOLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5)
|
|
file(REMOVE ${BINARY_TOOLS})
|
|
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/plugins")
|
|
file(GLOB_RECURSE DEBUG_PLUGINS
|
|
"${CURRENT_PACKAGES_DIR}/plugins/*d.dll"
|
|
"${CURRENT_PACKAGES_DIR}/plugins/*d.pdb"
|
|
)
|
|
foreach(file ${DEBUG_PLUGINS})
|
|
get_filename_component(file_n ${file} NAME)
|
|
file(RELATIVE_PATH file_rel "${CURRENT_PACKAGES_DIR}/plugins" ${file})
|
|
get_filename_component(rel_dir ${file_rel} DIRECTORY)
|
|
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/plugins/${rel_dir}")
|
|
file(RENAME ${file} "${CURRENT_PACKAGES_DIR}/debug/plugins/${rel_dir}/${file_n}")
|
|
endforeach()
|
|
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/plugins/gamepads/xinputgamepad.dll)
|
|
file(RENAME
|
|
${CURRENT_PACKAGES_DIR}/debug/plugins/gamepads/xinputgamepad.dll
|
|
${CURRENT_PACKAGES_DIR}/plugins/gamepads/xinputgamepad.dll)
|
|
endif()
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/plugins/gamepads/xinputgamepad.pdb)
|
|
file(RENAME
|
|
${CURRENT_PACKAGES_DIR}/debug/plugins/gamepads/xinputgamepad.pdb
|
|
${CURRENT_PACKAGES_DIR}/plugins/gamepads/xinputgamepad.pdb)
|
|
endif()
|
|
|
|
if(NOT EXISTS ${CURRENT_PACKAGES_DIR}/lib/Qt5Bootstrap.lib AND EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/Qt5Bootstrapd.lib)
|
|
# QT bug: https://bugreports.qt.io/browse/QTBUG-55499
|
|
# The release copy of Qt5Bootstrap.lib is not created when using -debug-and-release
|
|
# Comments from Oswald Buddenhagen indicate this is an internal library, so simply removing the mismatch should be safe.
|
|
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/lib/Qt5Bootstrapd.lib)
|
|
endif()
|
|
|
|
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/qt5)
|
|
|
|
vcpkg_execute_required_process(
|
|
COMMAND ${PYTHON3} ${CMAKE_CURRENT_LIST_DIR}/fixcmake.py
|
|
WORKING_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/cmake
|
|
LOGNAME fix-cmake
|
|
)
|
|
|
|
file(INSTALL ${SOURCE_PATH}/LICENSE.LGPLv3 DESTINATION ${CURRENT_PACKAGES_DIR}/share/qt5 RENAME copyright)
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/plugins)
|
|
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/qtdeploy.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/plugins)
|
|
endif()
|
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/plugins)
|
|
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/qtdeploy.ps1 DESTINATION ${CURRENT_PACKAGES_DIR}/debug/plugins)
|
|
endif()
|
|
|
|
vcpkg_copy_pdbs()
|
|
|