summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2021-02-26 16:11:08 +0100
committerMichal Klocek <michal.klocek@qt.io>2021-05-22 14:10:17 +0200
commit6d6037be24bcbff5efada34ed39331c7c8b28f3b (patch)
tree40febb3d86fa4742dcc2cebc9da80b1263456ba5 /src
parent68de090b1fce66f36743d31f384398af8c140a1d (diff)
Add mac builds to cmake
We need to pass -F or -iframework to gn as a compiler flag, however cmake keeps this parameter as include dir and adds internally "-iframework QtFoo.framework/.." for the compiler call. This internal handling can not be accessed with the genex. Add the manual conversion. Task-number: QTBUG-91760 Change-Id: Id12831432ccb0516be52f79bd5f6cfcbe7e87d9c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/core/CMakeLists.txt71
-rw-r--r--src/core/web_engine_library_info.cpp2
-rw-r--r--src/gn/CMakeLists.txt2
-rw-r--r--src/process/CMakeLists.txt27
4 files changed, 84 insertions, 18 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index ff38398d8..dc478ca05 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -11,7 +11,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${WEBENGINE_ROOT_SOURCE_DIR}/cmake")
set(buildDir "${CMAKE_CURRENT_BINARY_DIR}")
include(${WEBENGINE_ROOT_SOURCE_DIR}/cmake/Functions.cmake)
-
assertRunAsTopLevelBuild(TRUE)
add_subdirectory(api)
@@ -48,6 +47,7 @@ foreach(config ${configs})
add_gn_target(${buildGn} SOURCES DEFINES CXX_COMPILE_OPTIONS C_COMPILE_OPTIONS INCLUDES)
resolve_target_includes(gnIncludes WebEngineCore)
+ get_forward_declaration_macro(forwardDeclarationMacro)
extend_gn_target(${buildGn}
INCLUDES
@@ -58,6 +58,7 @@ foreach(config ${configs})
QTWEBENGINECORE_VERSION_STR=\\\\\"${QT_REPO_MODULE_VERSION}\\\\\"
QTWEBENGINEPROCESS_NAME=\\\\\"${qtWebEngineProcessName}\\\\\"
BUILDING_CHROMIUM
+ ${forwardDeclarationMacro}
SOURCES
accessibility_activation_observer.cpp accessibility_activation_observer.h
accessibility_tree_formatter_qt.cpp
@@ -462,6 +463,22 @@ foreach(config ${configs})
)
endif()
+ if(MACOS)
+ get_darwin_sdk_version(macSdkVersion)
+ get_filename_component(clangBasePath ${CMAKE_OBJCXX_COMPILER} DIRECTORY)
+ get_filename_component(clangBasePath ${clangBasePath} DIRECTORY)
+ list(APPEND gnArgArg
+ use_sysroot=false
+ use_system_xcode=true
+ clang_base_path="${clangBasePath}"
+ clang_use_chrome_plugins=false
+ mac_deployment_target="${CMAKE_OSX_DEPLOYMENT_TARGET}"
+ mac_sdk_min="${macSdkVersion}"
+ use_external_popup_menu=false
+ angle_enable_vulkan=false
+ )
+ endif()
+
list(JOIN gnArgArg " " gnArgArg)
list(APPEND gnArg "--args=${gnArgArg}")
@@ -559,28 +576,56 @@ endforeach()
get_filename_component(icuFiles ${buildDir}/${config}/icudtl.dat REALPATH)
-install(FILES ${localeFiles}
+if(QT_FEATURE_framework)
+ set(allResourceFiles ${localeFiles} ${resourceFiles} ${icuFiles})
+ target_sources(WebEngineCore PRIVATE ${icuFiles} ${resourceFiles} ${localeFiles})
+
+ set_source_files_properties(${localeFiles}
+ TARGET_DIRECTORY WebEngineCore
+ PROPERTIES MACOSX_PACKAGE_LOCATION Resources/qtwebengine_locales
+ GENERATED TRUE
+ )
+ set_source_files_properties(${resourceFiles}
+ TARGET_DIRECTORY WebEngineCore
+ PROPERTIES MACOSX_PACKAGE_LOCATION Resources
+ GENERATED TRUE
+ )
+ set_source_files_properties(${icuFiles}
+ TARGET_DIRECTORY WebEngineCore
+ PROPERTIES MACOSX_PACKAGE_LOCATION Resources
+ GENERATED TRUE
+ )
+ add_custom_command(OUTPUT ${localeFiles} ${resourceFiles} ${icuFiles}
+ DEPENDS QtWebEngineCore.stamp
+ )
+ add_custom_target(generate_resources_${config}
+ DEPENDS ${localeFiles} ${resourcesFiles} ${icuFiles}
+ )
+else()
+ install(FILES ${localeFiles}
DESTINATION translations/qtwebengine_locales
CONFIGURATIONS ${config}
-)
-install(FILES ${resourceFiles}
+ )
+ install(FILES ${resourceFiles}
DESTINATION resources
CONFIGURATIONS ${config}
-)
-install(FILES ${icuFiles}
+ )
+ install(FILES ${icuFiles}
DESTINATION resources
CONFIGURATIONS ${config}
-)
+ )
# install (again) for superbuild
-install(FILES ${localeFiles}
+ install(FILES ${localeFiles}
DESTINATION ${WEBENGINE_ROOT_BUILD_DIR}/translations/qtwebengine_locales
CONFIGURATIONS ${config}
-)
-install(FILES ${resourceFiles}
+ )
+ install(FILES ${resourceFiles}
DESTINATION ${WEBENGINE_ROOT_BUILD_DIR}/resources
CONFIGURATIONS ${config}
-)
-install(FILES ${icuFiles}
+ )
+ install(FILES ${icuFiles}
DESTINATION ${WEBENGINE_ROOT_BUILD_DIR}/resources
CONFIGURATIONS ${config}
-)
+ )
+endif()
+
diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp
index 407bd50bc..6eb90f2e6 100644
--- a/src/core/web_engine_library_info.cpp
+++ b/src/core/web_engine_library_info.cpp
@@ -80,7 +80,7 @@ QString fallbackDir() {
#if defined(OS_MAC) && defined(QT_MAC_FRAMEWORK_BUILD)
static inline CFBundleRef frameworkBundle()
{
- return CFBundleGetBundleWithIdentifier(CFSTR("org.qt-project.Qt.QtWebEngineCore"));
+ return CFBundleGetBundleWithIdentifier(CFSTR("org.qt-project.QtWebEngineCore"));
}
static QString getPath(CFBundleRef frameworkBundle)
diff --git a/src/gn/CMakeLists.txt b/src/gn/CMakeLists.txt
index bad9ffb08..7a419ec67 100644
--- a/src/gn/CMakeLists.txt
+++ b/src/gn/CMakeLists.txt
@@ -25,6 +25,8 @@ add_custom_command(
--cc ${CMAKE_C_COMPILER}
--cxx ${CMAKE_CXX_COMPILER}
--ld ${CMAKE_CXX_COMPILER}
+ $<$<PLATFORM_ID:Darwin>:--isysroot>
+ $<$<PLATFORM_ID:Darwin>:${CMAKE_OSX_SYSROOT}>
COMMAND Ninja::ninja -C ${GN_BINARY_DIR}/$<CONFIG> ${GN_EXECUTABLE}
VERBATIM
USES_TERMINAL
diff --git a/src/process/CMakeLists.txt b/src/process/CMakeLists.txt
index 742fecf0c..7f1b40b90 100644
--- a/src/process/CMakeLists.txt
+++ b/src/process/CMakeLists.txt
@@ -6,6 +6,7 @@ include(${WEBENGINE_ROOT_SOURCE_DIR}/cmake/Functions.cmake)
find_package(Qt6 COMPONENTS Gui)
get_target_property(qtWebEngineProcessName WebEngineCore QTWEBENGINEPROCESS_NAME)
+get_target_property(isFramework WebEngineCore FRAMEWORK)
qt_internal_add_executable(${qtWebEngineProcessName} SOURCES main.cpp)
@@ -21,9 +22,27 @@ target_link_libraries(${qtWebEngineProcessName}
target_include_directories(${qtWebEngineProcessName} PRIVATE ../core)
get_install_config(config)
-install(TARGETS ${qtWebEngineProcessName}
- RUNTIME DESTINATION "${INSTALL_LIBEXECDIR}"
- CONFIGURATIONS ${config}
-)
+if(isFramework)
+ set_target_properties(${qtWebEngineProcessName} PROPERTIES MACOSX_BUNDLE TRUE)
+ target_sources(${qtWebEngineProcessName} PRIVATE QtWebEngineProcess.entitlements)
+ set_source_files_properties(QtWebEngineProcess.entitlements PROPERTIES
+ MACOSX_PACKAGE_LOCATION Resources
+ )
+ add_custom_command(TARGET ${qtWebEngineProcessName} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory
+ "$<TARGET_BUNDLE_DIR:WebEngineCore>/Versions/A/Helpers/${qtWebEngineProcessName}.app"
+ COMMAND ${CMAKE_COMMAND} -E create_symlink "Versions/Current/Helpers"
+ "$<TARGET_BUNDLE_DIR:WebEngineCore>/Helpers"
+ )
+ install(TARGETS ${qtWebEngineProcessName}
+ BUNDLE DESTINATION ./lib/QtWebEngineCore.framework/Versions/A/Helpers
+ COMPONENT Runtime
+ )
+else()
+ install(TARGETS ${qtWebEngineProcessName}
+ RUNTIME DESTINATION "${INSTALL_LIBEXECDIR}"
+ CONFIGURATIONS ${config}
+ )
+endif()
make_install_only(${qtWebEngineProcessName})