summaryrefslogtreecommitdiffstats
path: root/Source/cmake/OptionsQt.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmake/OptionsQt.cmake')
-rw-r--r--Source/cmake/OptionsQt.cmake115
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}")