diff options
Diffstat (limited to 'Source/cmake/OptionsQt.cmake')
-rw-r--r-- | Source/cmake/OptionsQt.cmake | 115 |
1 files changed, 70 insertions, 45 deletions
diff --git a/Source/cmake/OptionsQt.cmake b/Source/cmake/OptionsQt.cmake index 5b0212fa0..68d95e1e5 100644 --- a/Source/cmake/OptionsQt.cmake +++ b/Source/cmake/OptionsQt.cmake @@ -5,35 +5,27 @@ include(ECMQueryQmake) set(ECM_MODULE_DIR ${CMAKE_MODULE_PATH}) include(KDEInstallDirs) -macro(macro_process_qtbase_prl_file qt_target_component) - if (TARGET ${qt_target_component}) - get_target_property(_lib_name ${qt_target_component} NAME) - string(REGEX REPLACE "::" "" _lib_name ${_lib_name}) - get_target_property(_lib_location ${qt_target_component} LOCATION) - get_target_property(_prl_file_location ${qt_target_component} LOCATION) - string(REGEX REPLACE "^(.+/lib${_lib_name}).+$" "\\1.prl" _prl_file_location ${_prl_file_location}) - get_target_property(_link_libs ${qt_target_component} INTERFACE_LINK_LIBRARIES) - if (_link_libs) - set(_list_sep ";") - else () - set(_list_sep "") - endif () - if (EXISTS ${_prl_file_location}) - file(STRINGS ${_prl_file_location} prl_strings REGEX "QMAKE_PRL_LIBS") - string(REGEX REPLACE "QMAKE_PRL_LIBS *= *([^\\n]*)" "\\1" static_depends ${prl_strings}) - string(STRIP ${static_depends} static_depends) - set_target_properties(${qt_target_component} PROPERTIES - "INTERFACE_LINK_LIBRARIES" "${_link_libs}${_list_sep}${static_depends}" - "IMPORTED_LOCATION" "${_lib_location}" - ) - string(REPLACE " " ";" static_depends ${static_depends}) - set(${_lib_name}_STATIC_LIB_DEPENDENCIES "${static_depends}") - endif () +if (CONANBUILDINFO_PATH) + include(${CONANBUILDINFO_PATH}) + conan_basic_setup() +endif () + +set(STATIC_DEPENDENCIES_CMAKE_FILE "${CMAKE_BINARY_DIR}/QtStaticDependencies.cmake") +if (EXISTS ${STATIC_DEPENDENCIES_CMAKE_FILE}) + file(REMOVE ${STATIC_DEPENDENCIES_CMAKE_FILE}) +endif () + +macro(CONVERT_PRL_LIBS_TO_CMAKE _qt_component) + if (TARGET Qt5::${_qt_component}) + get_target_property(_lib_location Qt5::${_qt_component} LOCATION) + execute_process(COMMAND ${PERL_EXECUTABLE} ${TOOLS_DIR}/qt/convert-prl-libs-to-cmake.pl + ${_lib_location} ${_qt_component} ${STATIC_DEPENDENCIES_CMAKE_FILE} + ) endif () endmacro() macro(QT_ADD_EXTRA_WEBKIT_TARGET_EXPORT target) - if (QT_STATIC_BUILD) + if (QT_STATIC_BUILD OR SHARED_CORE) install(TARGETS ${target} EXPORT WebKitTargets DESTINATION "${LIB_INSTALL_DIR}") endif () @@ -51,6 +43,10 @@ add_definitions(-DBUILDING_QT__=1) WEBKIT_OPTION_BEGIN() +if (APPLE) + option(MACOS_FORCE_SYSTEM_XML_LIBRARIES "Use system installation of libxml2 and libxslt on macOS" ON) +endif () + if (WIN32 OR APPLE) set(USE_LIBHYPHEN_DEFAULT OFF) set(USE_GSTREAMER_DEFAULT OFF) @@ -235,21 +231,40 @@ if (WIN32) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") endif () -find_package(LibXml2 2.8.0 REQUIRED) -find_package(JPEG REQUIRED) -find_package(PNG REQUIRED) if (DEFINED ENV{SQLITE3SRCDIR}) - set(SQLITE_SOURCE_FILE $ENV{SQLITE3SRCDIR}/sqlite3.c) + get_filename_component(SQLITE_INCLUDE_DIR $ENV{SQLITE3SRCDIR} ABSOLUTE) + set(SQLITE_SOURCE_FILE ${SQLITE_INCLUDE_DIR}/sqlite3.c) if (NOT EXISTS ${SQLITE_SOURCE_FILE}) message(FATAL_ERROR "${SQLITE_SOURCE_FILE} not found.") endif () - set(SQLITE_INCLUDE_DIR $ENV{SQLITE3SRCDIR}) + add_library(qtsqlite STATIC ${SQLITE_SOURCE_FILE}) + target_compile_definitions(qtsqlite PUBLIC -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE) + set(SQLITE_LIBRARIES qtsqlite) + set(SQLITE_FOUND 1) else () find_package(Sqlite REQUIRED) endif () -find_package(ZLIB REQUIRED) + find_package(Threads REQUIRED) +if (NOT QT_BUNDLED_JPEG) + find_package(JPEG REQUIRED) +else () + set(JPEG_FOUND 1) +endif () + +if (NOT QT_BUNDLED_PNG) + find_package(PNG REQUIRED) +else () + set(PNG_FOUND 1) +endif () + +if (NOT QT_BUNDLED_ZLIB) + find_package(ZLIB REQUIRED) +else () + set(ZLIB_FOUND 1) +endif () + if (NOT APPLE) find_package(ICU REQUIRED) else () @@ -269,8 +284,18 @@ else () endif () endif () -if (ENABLE_XSLT) - find_package(LibXslt 1.1.7 REQUIRED) +if (MACOS_FORCE_SYSTEM_XML_LIBRARIES) + set(LIBXML2_INCLUDE_DIR "/usr/include/libxml2") + set(LIBXML2_LIBRARIES xml2) + if (ENABLE_XSLT) + set(LIBXSLT_INCLUDE_DIR "/usr/include/libxslt") + set(LIBXSLT_LIBRARIES xslt) + endif () +else () + find_package(LibXml2 2.8.0 REQUIRED) + if (ENABLE_XSLT) + find_package(LibXslt 1.1.7 REQUIRED) + endif () endif () find_package(Fontconfig) @@ -318,10 +343,7 @@ endif () find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS ${QT_REQUIRED_COMPONENTS}) if (QT_STATIC_BUILD) foreach (qt_module ${QT_REQUIRED_COMPONENTS}) - macro_process_qtbase_prl_file(Qt5::${qt_module}) - list(APPEND STATIC_LIB_DEPENDENCIES - ${Qt5${qt_module}_STATIC_LIB_DEPENDENCIES} - ) + CONVERT_PRL_LIBS_TO_CMAKE(${qt_module}) endforeach () # HACK: We must explicitly add LIB path of the Qt installation # to correctly find qtpcre @@ -331,14 +353,15 @@ endif () foreach (qt_module ${QT_OPTIONAL_COMPONENTS}) find_package("Qt5${qt_module}" ${REQUIRED_QT_VERSION} PATHS ${_qt5_install_prefix} NO_DEFAULT_PATH) if (QT_STATIC_BUILD) - macro_process_qtbase_prl_file(Qt5::${qt_module}) - list(APPEND STATIC_LIB_DEPENDENCIES - ${Qt5${qt_module}_STATIC_LIB_DEPENDENCIES} - ) + CONVERT_PRL_LIBS_TO_CMAKE(${qt_module}) endif () endforeach () if (QT_STATIC_BUILD) + if (NOT EXISTS ${STATIC_DEPENDENCIES_CMAKE_FILE}) + message(FATAL_ERROR "Unable to find ${STATIC_DEPENDENCIES_CMAKE_FILE}") + endif () + include(${STATIC_DEPENDENCIES_CMAKE_FILE}) list(REMOVE_DUPLICATES STATIC_LIB_DEPENDENCIES) endif () @@ -363,10 +386,12 @@ set(CMAKE_AUTOMOC ON) # From OptionsEfl.cmake # Optimize binary size for release builds by removing dead sections on unix/gcc. -if (COMPILER_IS_GCC_OR_CLANG AND UNIX AND NOT APPLE) - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections -fdata-sections") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections -fno-rtti") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--gc-sections") +if (COMPILER_IS_GCC_OR_CLANG AND UNIX) + if (NOT APPLE) + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections -fdata-sections") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections -fno-rtti") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--gc-sections") + endif () if (NOT SHARED_CORE) set(CMAKE_C_FLAGS "-fvisibility=hidden ${CMAKE_C_FLAGS}") |