aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarath Kannan <barathsotd@gmail.com>2017-12-03 19:19:08 +1100
committerBarath Kannan <barathsotd@gmail.com>2017-12-03 19:19:08 +1100
commitc6a82f27f197b1129eddb561eb14d26f67b4cd36 (patch)
tree08264072868874e31460427fbf49ee6260a3c5c5
parent768acf196685e6662b50fa87396d496d374ace61 (diff)
downloadvcpkg-c6a82f27f197b1129eddb561eb14d26f67b4cd36.tar.gz
vcpkg-c6a82f27f197b1129eddb561eb14d26f67b4cd36.zip
put qtmain in manual link directory, resolve resultant build issues with qtdeclarative
-rw-r--r--ports/qt5base/fixcmake.py11
-rw-r--r--ports/qt5base/portfile.cmake20
-rw-r--r--ports/qt5modularscripts/qt_modular_library.cmake21
3 files changed, 45 insertions, 7 deletions
diff --git a/ports/qt5base/fixcmake.py b/ports/qt5base/fixcmake.py
index 923e600bc..bcfb12ac5 100644
--- a/ports/qt5base/fixcmake.py
+++ b/ports/qt5base/fixcmake.py
@@ -42,6 +42,17 @@ for f in files:
builder += " else()"
builder += "\n " + line.replace("/plugins/", "/debug/plugins/")
builder += " endif()\n"
+ elif "_install_prefix}/lib/qtmaind.lib" in line:
+ # qtmaind.lib has been moved to manual-link:
+ builder += line.replace("/lib/", "/debug/lib/manual-link/")
+ elif "_install_prefix}/lib/qtmain.lib" in line:
+ # qtmain(d).lib has been moved to manual-link:
+ builder += line.replace("/lib/", "/lib/manual-link/")
+ builder += " set(imported_location_debug \"${_qt5Core_install_prefix}/debug/lib/manual-link/qtmaind.lib\")\n"
+ builder += "\n"
+ builder += " set_target_properties(Qt5::WinMain PROPERTIES\n"
+ builder += " IMPORTED_LOCATION_DEBUG ${imported_location_debug}\n"
+ builder += " )\n"
elif dllpattern.search(line) != None:
builder += line.replace("/bin/", "/debug/bin/")
elif libpattern.search(line) != None:
diff --git a/ports/qt5base/portfile.cmake b/ports/qt5base/portfile.cmake
index c5ec1ea9d..02122f9cc 100644
--- a/ports/qt5base/portfile.cmake
+++ b/ports/qt5base/portfile.cmake
@@ -91,4 +91,24 @@ 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)
+
file(INSTALL ${SOURCE_PATH}/LICENSE.LGPLv3 DESTINATION ${CURRENT_PACKAGES_DIR}/share/qt5base RENAME copyright)
diff --git a/ports/qt5modularscripts/qt_modular_library.cmake b/ports/qt5modularscripts/qt_modular_library.cmake
index 6fa4c20c8..518f226bb 100644
--- a/ports/qt5modularscripts/qt_modular_library.cmake
+++ b/ports/qt5modularscripts/qt_modular_library.cmake
@@ -41,6 +41,12 @@ function(qt_modular_library NAME HASH)
get_filename_component(PYTHON3_EXE_PATH ${PYTHON3} DIRECTORY)
set(ENV{PATH} "${PYTHON3_EXE_PATH};$ENV{PATH}")
+ file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR)
+ file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}" NATIVE_PACKAGES_DIR)
+
+ string(SUBSTRING "${NATIVE_INSTALLED_DIR}" 2 -1 INSTALLED_DIR_WITHOUT_DRIVE)
+ string(SUBSTRING "${NATIVE_PACKAGES_DIR}" 2 -1 PACKAGES_DIR_WITHOUT_DRIVE)
+
#Configure debug
vcpkg_configure_qmake_debug(
SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/${SRCDIR_NAME}
@@ -56,6 +62,7 @@ function(qt_modular_library NAME HASH)
file(READ "${DEBUG_MAKEFILE}" _contents)
string(REPLACE "zlib.lib" "zlibd.lib" _contents "${_contents}")
string(REPLACE "vcpkg\\installed\\${TARGET_TRIPLET}\\lib" "vcpkg\\installed\\${TARGET_TRIPLET}\\debug\\lib" _contents "${_contents}")
+ string(REPLACE "/LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib qtmaind.lib" "shell32.lib /LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib\\manual-link qtmaind.lib /LIBPATH:${NATIVE_INSTALLED_DIR}\\debug\\lib" _contents "${_contents}")
file(WRITE "${DEBUG_MAKEFILE}" "${_contents}")
endforeach()
@@ -73,6 +80,12 @@ function(qt_modular_library NAME HASH)
#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 qtmain.lib" "shell32.lib /LIBPATH:${NATIVE_INSTALLED_DIR}\\lib\\manual-link qtmain.lib /LIBPATH:${NATIVE_INSTALLED_DIR}\\lib" _contents "${_contents}")
+ file(WRITE "${RELEASE_MAKEFILE}" "${_contents}")
+ endforeach()
+
#Build release
vcpkg_build_qmake_release()
@@ -84,13 +97,7 @@ function(qt_modular_library NAME HASH)
LOGNAME fix-cmake
)
endif()
-
- file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR)
- file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}" NATIVE_PACKAGES_DIR)
-
- string(SUBSTRING "${NATIVE_INSTALLED_DIR}" 2 -1 INSTALLED_DIR_WITHOUT_DRIVE)
- string(SUBSTRING "${NATIVE_PACKAGES_DIR}" 2 -1 PACKAGES_DIR_WITHOUT_DRIVE)
-
+
#Set the correct install directory to packages
foreach(MAKEFILE ${RELEASE_MAKEFILES} ${DEBUG_MAKEFILES})
vcpkg_replace_string(${MAKEFILE} "(INSTALL_ROOT)${INSTALLED_DIR_WITHOUT_DRIVE}" "(INSTALL_ROOT)${PACKAGES_DIR_WITHOUT_DRIVE}")