Skip to content

Commit

Permalink
[qt5-base, qt5-imageformat] fix issues on osx (#9705)
Browse files Browse the repository at this point in the history
* [qt5-imageformats] freeglut is not a dependency on osx

* [qt5-base] fontconfig can require iconv on linux and osx

* include the jasper fix to get CI coverage?

* trying to get ci coverage for qt on osx

* Revert "trying to get ci coverage for qt on osx"

This reverts commit 8b9b188.

* apply the correct ci hack

* fix wrapper to include macosx debug suffix

* update baseline

* first try to fix the Qt5 cmake configs at the root.

* fix missing backslash

* fix plugin patch

* fix qt config patch

* remove 90% of fixcmake.py

* update baseline

* experimental removal of fixcmake.py and dll copying into tools/qt5/bin

* fix experimental dll copying.

* fix static windows builds

* fix static builds

* fix plugin copy

* add quotes around configuration to make it work

* remove dll debug messages

* note about the cmake fix

* revert fontconfig changes on linux. Make qt.conf relative and not absolute

* make qt.conf relative

* trying to fix ogre osx ci regression

* fix silly path error

* Revert "trying to fix ogre osx ci regression"

This reverts commit 708d825.

* add ogre:x64-osx=fail to CI baseline

* retry on osx

* fix configure error. since in qt5-base everything is in the package directory and not in the installed

* revert change to ci.baseline

* update ci baseline

* bump control

* update baseline

* ws change to osg-qt

* reset ci baseline to upstream/master

* update baseline

* fix osg-qt?

* skip ms-angle on osx and linux since the normal angle port should be used!

* update ci baseline

* try adding fontconfig manually

* update ci baseline to remove osg-qt for the time being

* remove manual library.
  • Loading branch information
Neumann-A authored Apr 10, 2020
1 parent 0edffcf commit 941d546
Show file tree
Hide file tree
Showing 13 changed files with 180 additions and 137 deletions.
4 changes: 2 additions & 2 deletions ports/osg-qt/CONTROL
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Source: osg-qt
Version: Qt4
Description: osgQt - Qt project for making use of OpenSceneGraph(OSG)
Version: Qt4-1
Description: osgQt - Qt project for making use of OpenSceneGraph(OSG)
Build-Depends: osg, protobuf, qt5-base
11 changes: 7 additions & 4 deletions ports/osg-qt/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
include(vcpkg_common_functions)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO openscenegraph/osgQt
REF Qt4
SHA512 426a4ba88f680978d24817248b99c68cafa4517144e6e3d2480612870c4a224bb955539cacb438274d4ee1c93c36d94f8437d142070b2ecde2b81517bf357e71
HEAD_REF master
PATCHES
PATCHES
OsgMacroUtils.patch
)

if(VCPKG_TARGET_IS_OSX)
string(APPEND VCPKG_CXX_FLAGS " -stdlib=libc++")
string(APPEND VCPKG_C_FLAGS "") # both must be set
endif()

vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
Expand All @@ -22,5 +25,5 @@ vcpkg_install_cmake()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)

# Handle License
file(COPY ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/osg-qt)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/osg-qt/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/osg-qt/copyright)
file(COPY ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright)
2 changes: 1 addition & 1 deletion ports/pango/CONTROL
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ Source: pango
Version: 1.40.11-6
Homepage: https://ftp.gnome.org/pub/GNOME/sources/pango/
Description: Text and font handling library.
Build-Depends: glib, gettext, cairo, fontconfig, freetype, harfbuzz[glib] (!(windows&static))
Build-Depends: glib, gettext, cairo, fontconfig, freetype, harfbuzz[glib] (!(windows&static)&!osx)
19 changes: 19 additions & 0 deletions ports/qt5-base/cmake/qt_build_submodule.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,25 @@ function(qt_build_submodule SOURCE_PATH)
endforeach()
if(EXISTS "${CURRENT_PACKAGES_DIR}/tools/qt5/bin")
file(COPY "${CURRENT_PACKAGES_DIR}/tools/qt5/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")

set(CURRENT_INSTALLED_DIR_BACKUP "${CURRENT_INSTALLED_DIR}")
set(CURRENT_INSTALLED_DIR "./../../.." ) # Making the qt.conf relative and not absolute
configure_file(${CURRENT_INSTALLED_DIR_BACKUP}/tools/qt5/qt_release.conf ${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/qt.conf) # This makes the tools at least useable for release
set(CURRENT_INSTALLED_DIR "${CURRENT_INSTALLED_DIR_BACKUP}")

vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin")
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(GLOB_RECURSE DLL_DEPS_AVAIL "${CURRENT_INSTALLED_DIR}/tools/qt5/bin/*.dll")
string(REPLACE "${CURRENT_INSTALLED_DIR}/tools/qt5/bin/" "" DLL_DEPS_AVAIL "${DLL_DEPS_AVAIL}")
file(GLOB_RECURSE DLL_DEPS_NEEDED "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/*.dll")
string(REPLACE "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/" "" DLL_DEPS_NEEDED "${DLL_DEPS_NEEDED}")
if(DLL_DEPS_AVAIL AND DLL_DEPS_NEEDED)
list(REMOVE_ITEM DLL_DEPS_NEEDED ${DLL_DEPS_AVAIL})
endif()
foreach(dll_dep ${DLL_DEPS_NEEDED})
string(REGEX REPLACE "[^/]+$" "" dll_subpath "${dll_dep}")
file(COPY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/${dll_dep}" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/qt5/bin/${dll_subpath}")
endforeach()
endif()
endif()
endfunction()
30 changes: 9 additions & 21 deletions ports/qt5-base/cmake/qt_fix_cmake.cmake
Original file line number Diff line number Diff line change
@@ -1,25 +1,14 @@
function(qt_fix_cmake PACKAGE_DIR_TO_FIX PORT_TO_FIX)
set(BACKUP_PATH "$ENV{PATH}")
#Find Python and add it to the path
vcpkg_find_acquire_program(PYTHON2)
get_filename_component(PYTHON2_EXE_PATH ${PYTHON2} DIRECTORY)
vcpkg_add_to_path("${PYTHON2_EXE_PATH}")

#Fix the cmake files if they exist
if(EXISTS ${PACKAGE_DIR_TO_FIX}/lib/cmake)
vcpkg_execute_required_process(
COMMAND ${PYTHON2} ${CURRENT_INSTALLED_DIR}/share/qt5/fixcmake.py ${PORT_TO_FIX}
WORKING_DIRECTORY ${PACKAGE_DIR_TO_FIX}/lib/cmake
LOGNAME fix-cmake
)
endif()
if(EXISTS ${PACKAGE_DIR_TO_FIX}/share/cmake)
vcpkg_execute_required_process(
COMMAND ${PYTHON2} ${CURRENT_INSTALLED_DIR}/share/qt5/fixcmake.py ${PORT_TO_FIX}
WORKING_DIRECTORY ${PACKAGE_DIR_TO_FIX}/share/cmake
LOGNAME fix-cmake
)
endif()
file(GLOB_RECURSE cmakefiles ${PACKAGE_DIR_TO_FIX}/share/cmake/*.cmake ${PACKAGE_DIR_TO_FIX}/lib/cmake/*.cmake)
foreach(cmakefile ${cmakefiles})
file(READ "${cmakefile}" _contents)
if(_contents MATCHES "_install_prefix}/tools/qt5/bin/([a-z0-9]+)") # there are only about 3 to 5 cmake files which require the fix in ports: qt5-tools qt5-xmlpattern at5-activeqt qt5-quick
string(REGEX REPLACE "_install_prefix}/tools/qt5/bin/([a-z0-9]+)" "_install_prefix}/tools/${PORT_TO_FIX}/bin/\\1" _contents "${_contents}")
file(WRITE "${cmakefile}" "${_contents}")
endif()
endforeach()

#Install cmake files
if(EXISTS ${PACKAGE_DIR_TO_FIX}/lib/cmake)
file(MAKE_DIRECTORY ${PACKAGE_DIR_TO_FIX}/share)
Expand All @@ -29,5 +18,4 @@ function(qt_fix_cmake PACKAGE_DIR_TO_FIX PORT_TO_FIX)
if(EXISTS ${PACKAGE_DIR_TO_FIX}/debug/lib/cmake)
file(REMOVE_RECURSE ${PACKAGE_DIR_TO_FIX}/debug/lib/cmake)
endif()
set(ENV{PATH} "${BACKUP_PATH}")
endfunction()
88 changes: 0 additions & 88 deletions ports/qt5-base/fixcmake.py

This file was deleted.

78 changes: 78 additions & 0 deletions ports/qt5-base/patches/Qt5BasicConfig.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
index c72989288..a88234dca 100644
--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
@@ -53,7 +53,11 @@ macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATI
set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})

!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ if(\"${Configuration}\" STREQUAL \"DEBUG\")
+ set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ else()
+ set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
+ endif()
!!ELSE
set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\")
!!ENDIF
@@ -69,8 +73,12 @@ macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATI
)

!!IF !isEmpty(CMAKE_WINDOWS_BUILD)
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
- set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ if(\"${Configuration}\" STREQUAL \"DEBUG\")
+ set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ else()
+ set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
+ endif()
!!ELSE
set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\")
!!ENDIF
@@ -270,9 +278,8 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD

!!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD)
-!!IF isEmpty(CMAKE_DEBUG_TYPE)
!!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD)
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+ if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE
if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
@@ -281,20 +288,19 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
!!ELSE // CMAKE_STATIC_WINDOWS_BUILD
if (EXISTS
!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE)
- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
+ \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
!!ELSE
\"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\"
!!ENDIF
AND EXISTS
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
+ \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
!!ELSE
\"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
!!ENDIF
_populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" )
!!ENDIF // CMAKE_STATIC_WINDOWS_BUILD
endif()
-!!ENDIF // CMAKE_DEBUG_TYPE
!!ENDIF // CMAKE_FIND_OTHER_LIBRARY_BUILD

!!ENDIF // CMAKE_RELEASE_TYPE
@@ -347,7 +353,12 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})

!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE)
+ if(\"${Configuration}\" STREQUAL \"DEBUG\")
+ set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
+ else()
set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
+ endif()
+
!!ELSE
set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\")
!!ENDIF
22 changes: 22 additions & 0 deletions ports/qt5-base/patches/Qt5PluginTarget.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
diff --git a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in
index 5baf0fdb1..185abfffd 100644
--- a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in
@@ -1,11 +1,11 @@

add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED)

-!!IF !isEmpty(CMAKE_RELEASE_TYPE)
-_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\")
-!!ENDIF
-!!IF !isEmpty(CMAKE_DEBUG_TYPE)
-_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\")
-!!ENDIF
+if(EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}$${CMAKE_PLUGIN_LOCATION_RELEASE}\")
+ _populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\")
+endif()
+if(EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/debug/$${CMAKE_PLUGIN_DIR}$${CMAKE_PLUGIN_LOCATION_DEBUG}\")
+ _populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\")
+endif()

list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME)
Loading

0 comments on commit 941d546

Please sign in to comment.