Skip to content

Commit 5314524

Browse files
JPMMaiaRastaban
authored andcommittedApr 30, 2019
[qt5] Fix scripts on debug/release-only builds (microsoft#6259)
* Fix qt5-base portfile qt5-release.conf was not copied in release mode * Fix vcpkg_configure_qmake.cmake in debug-only builds * Add VCPKG_BUILD_TYPE support to qt_modular_library.cmake and vcpkg_build_qmake.cmake
1 parent 516d10b commit 5314524

File tree

6 files changed

+73
-57
lines changed

6 files changed

+73
-57
lines changed
 

‎ports/qt5-base/CONTROL

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
Source: qt5-base
2-
Version: 5.12.1-5
2+
Version: 5.12.1-6
33
Description: Qt5 Application Framework Base Module. Includes Core, GUI, Widgets, Networking, SQL, Concurrent and other essential qt components.
44
Build-Depends: zlib, libjpeg-turbo, libpng, freetype, pcre2, harfbuzz, sqlite3, libpq, double-conversion, openssl

‎ports/qt5-base/portfile.cmake

+3-1
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
157157
list(FILTER BINARY_TOOLS EXCLUDE REGEX "\\.dll\$")
158158
file(INSTALL ${BINARY_TOOLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5)
159159
file(REMOVE ${BINARY_TOOLS})
160+
161+
file(COPY ${CMAKE_CURRENT_LIST_DIR}/qt_release.conf DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5)
160162
endif()
161163
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
162164
file(GLOB BINARY_TOOLS "${CURRENT_PACKAGES_DIR}/debug/bin/*")
@@ -166,7 +168,7 @@ if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
166168
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
167169
endif()
168170

169-
file(COPY ${CMAKE_CURRENT_LIST_DIR}/qt_debug.conf ${CMAKE_CURRENT_LIST_DIR}/qt_release.conf DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5)
171+
file(COPY ${CMAKE_CURRENT_LIST_DIR}/qt_debug.conf DESTINATION ${CURRENT_PACKAGES_DIR}/tools/qt5)
170172
endif()
171173

172174
vcpkg_execute_required_process(

‎ports/qt5-modularscripts/CONTROL

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
Source: qt5-modularscripts
2-
Version: 2019-03-21
2+
Version: 2019-04-30
33
Description: Vcpkg helpers to package qt5 modules

‎ports/qt5-modularscripts/qt_modular_library.cmake

+11-9
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,8 @@ function(qt_modular_build_library SOURCE_PATH)
3131
set(ENV{_CL_} "/utf-8")
3232

3333
#Store build paths
34-
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
35-
set(DEBUG_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg")
36-
endif()
37-
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
38-
set(RELEASE_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel")
39-
endif()
34+
set(DEBUG_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg")
35+
set(RELEASE_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel")
4036

4137
#Find Python and add it to the path
4238
vcpkg_find_acquire_program(PYTHON2)
@@ -114,7 +110,9 @@ function(qt_modular_build_library SOURCE_PATH)
114110

115111
#Move release and debug dlls to the correct directory
116112
if(EXISTS ${CURRENT_PACKAGES_DIR}/tools/qt5)
117-
file(RENAME ${CURRENT_PACKAGES_DIR}/tools/qt5 ${CURRENT_PACKAGES_DIR}/tools/${PORT})
113+
file(RENAME ${CURRENT_PACKAGES_DIR}/tools/qt5 ${CURRENT_PACKAGES_DIR}/tools/${PORT})
114+
endif()
115+
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/tools/qt5)
118116
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/tools/qt5 ${CURRENT_PACKAGES_DIR}/debug/tools/${PORT})
119117
endif()
120118

@@ -134,9 +132,13 @@ function(qt_modular_build_library SOURCE_PATH)
134132
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/tools)
135133
endif()
136134

137-
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/share/qt5/debug/include)
135+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
136+
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/share/qt5/debug/include)
137+
endif()
138138

139-
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
139+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
140+
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
141+
endif()
140142

141143
#Find the relevant license file and install it
142144
if(EXISTS "${SOURCE_PATH}/LICENSE.LGPLv3")

‎scripts/cmake/vcpkg_build_qmake.cmake

+56-44
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,21 @@ function(vcpkg_build_qmake)
2121
# Make sure that the linker finds the libraries used
2222
set(ENV_PATH_BACKUP "$ENV{PATH}")
2323

24-
set(DEBUG_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
25-
set(RELEASE_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
24+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
25+
set(DEBUG_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
26+
endif()
27+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
28+
set(RELEASE_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
29+
endif()
2630

2731
file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR)
2832

29-
list(APPEND _csc_RELEASE_TARGETS ${_csc_TARGETS})
30-
list(APPEND _csc_DEBUG_TARGETS ${_csc_TARGETS})
33+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
34+
list(APPEND _csc_RELEASE_TARGETS ${_csc_TARGETS})
35+
endif()
36+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
37+
list(APPEND _csc_DEBUG_TARGETS ${_csc_TARGETS})
38+
endif()
3139

3240
if(NOT _csc_BUILD_LOGNAME)
3341
set(_csc_BUILD_LOGNAME build)
@@ -47,49 +55,53 @@ function(vcpkg_build_qmake)
4755
set(ENV{_CL_} "/utf-8")
4856

4957
#First generate the makefiles so we can modify them
50-
set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib;${CURRENT_INSTALLED_DIR}/debug/bin;${CURRENT_INSTALLED_DIR}/tools/qt5;${ENV_PATH_BACKUP}")
51-
if(NOT _csc_SKIP_MAKEFILES)
52-
run_jom(qmake_all makefiles dbg)
53-
54-
#Store debug makefiles path
55-
file(GLOB_RECURSE DEBUG_MAKEFILES ${DEBUG_DIR}/*Makefile*)
56-
57-
foreach(DEBUG_MAKEFILE ${DEBUG_MAKEFILES})
58-
file(READ "${DEBUG_MAKEFILE}" _contents)
59-
string(REPLACE "zlib.lib" "zlibd.lib" _contents "${_contents}")
60-
string(REPLACE "installed\\${TARGET_TRIPLET}\\lib" "installed\\${TARGET_TRIPLET}\\debug\\lib" _contents "${_contents}")
61-
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}")
62-
string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}")
63-
string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}")
64-
string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
65-
string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
66-
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}")
67-
file(WRITE "${DEBUG_MAKEFILE}" "${_contents}")
68-
endforeach()
58+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
59+
set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/debug/lib;${CURRENT_INSTALLED_DIR}/debug/bin;${CURRENT_INSTALLED_DIR}/tools/qt5;${ENV_PATH_BACKUP}")
60+
if(NOT _csc_SKIP_MAKEFILES)
61+
run_jom(qmake_all makefiles dbg)
62+
63+
#Store debug makefiles path
64+
file(GLOB_RECURSE DEBUG_MAKEFILES ${DEBUG_DIR}/*Makefile*)
65+
66+
foreach(DEBUG_MAKEFILE ${DEBUG_MAKEFILES})
67+
file(READ "${DEBUG_MAKEFILE}" _contents)
68+
string(REPLACE "zlib.lib" "zlibd.lib" _contents "${_contents}")
69+
string(REPLACE "installed\\${TARGET_TRIPLET}\\lib" "installed\\${TARGET_TRIPLET}\\debug\\lib" _contents "${_contents}")
70+
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}")
71+
string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}")
72+
string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}")
73+
string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
74+
string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
75+
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}")
76+
file(WRITE "${DEBUG_MAKEFILE}" "${_contents}")
77+
endforeach()
78+
endif()
79+
80+
run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} dbg)
6981
endif()
7082

71-
run_jom("${_csc_DEBUG_TARGETS}" ${_csc_BUILD_LOGNAME} dbg)
72-
73-
set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib;${CURRENT_INSTALLED_DIR}/bin;${CURRENT_INSTALLED_DIR}/tools/qt5;${ENV_PATH_BACKUP}")
74-
if(NOT _csc_SKIP_MAKEFILES)
75-
run_jom(qmake_all makefiles rel)
76-
77-
#Store release makefile path
78-
file(GLOB_RECURSE RELEASE_MAKEFILES ${RELEASE_DIR}/*Makefile*)
79-
80-
foreach(RELEASE_MAKEFILE ${RELEASE_MAKEFILES})
81-
file(READ "${RELEASE_MAKEFILE}" _contents)
82-
string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib" "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib\\manual-link /LIBPATH:${NATIVE_INSTALLED_DIR}\\lib shell32.lib" _contents "${_contents}")
83-
string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}")
84-
string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}")
85-
string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
86-
string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
87-
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}")
88-
file(WRITE "${RELEASE_MAKEFILE}" "${_contents}")
89-
endforeach()
83+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
84+
set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib;${CURRENT_INSTALLED_DIR}/bin;${CURRENT_INSTALLED_DIR}/tools/qt5;${ENV_PATH_BACKUP}")
85+
if(NOT _csc_SKIP_MAKEFILES)
86+
run_jom(qmake_all makefiles rel)
87+
88+
#Store release makefile path
89+
file(GLOB_RECURSE RELEASE_MAKEFILES ${RELEASE_DIR}/*Makefile*)
90+
91+
foreach(RELEASE_MAKEFILE ${RELEASE_MAKEFILES})
92+
file(READ "${RELEASE_MAKEFILE}" _contents)
93+
string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib" "/LIBPATH:${NATIVE_INSTALLED_DIR}\\lib\\manual-link /LIBPATH:${NATIVE_INSTALLED_DIR}\\lib shell32.lib" _contents "${_contents}")
94+
string(REPLACE "tools\\qt5\\qmlcachegen.exe" "tools\\qt5-declarative\\qmlcachegen.exe" _contents "${_contents}")
95+
string(REPLACE "tools/qt5/qmlcachegen" "tools/qt5-declarative/qmlcachegen" _contents "${_contents}")
96+
string(REPLACE "debug\\lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
97+
string(REPLACE "lib\\Qt5Bootstrap.lib" "tools\\qt5\\Qt5Bootstrap.lib" _contents "${_contents}")
98+
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}")
99+
file(WRITE "${RELEASE_MAKEFILE}" "${_contents}")
100+
endforeach()
101+
endif()
102+
103+
run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} rel)
90104
endif()
91-
92-
run_jom("${_csc_RELEASE_TARGETS}" ${_csc_BUILD_LOGNAME} rel)
93105

94106
# Restore the original value of ENV{PATH}
95107
set(ENV{PATH} "${ENV_PATH_BACKUP}")

‎scripts/cmake/vcpkg_configure_qmake.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function(vcpkg_configure_qmake)
4343
message(STATUS "Configuring ${TARGET_TRIPLET}-rel done")
4444
endif()
4545

46-
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
46+
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
4747
configure_file(${CURRENT_INSTALLED_DIR}/tools/qt5/qt_debug.conf ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/qt.conf)
4848

4949
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")

0 commit comments

Comments
 (0)
Please sign in to comment.