From 94b5fb160969c86cbd3e13ab39f1b9a756dc286c Mon Sep 17 00:00:00 2001 From: EnactorDev Date: Thu, 1 Aug 2024 08:31:57 +0100 Subject: [PATCH] Mac OS ARM and x86 platform support and code sign is added --- native/CMakeLists.txt | 37 ++++++++- pom.xml | 186 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 217 insertions(+), 6 deletions(-) diff --git a/native/CMakeLists.txt b/native/CMakeLists.txt index 257bd60a..ad2b9c17 100644 --- a/native/CMakeLists.txt +++ b/native/CMakeLists.txt @@ -283,6 +283,28 @@ if(OS_MAC) # Avoid CMP0042 policy errors. set(CMAKE_MACOSX_RPATH 1) + + if(NOT DEFINED PROJECT_ARCH) + message(STATUS "PROJECT_ARCH not defined. Detecting machine architecture.") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") + set(PROJECT_ARCH arm64) + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64") + set(PROJECT_ARCH x86_64) + else() + message(FATAL_ERROR "Unsupported machine architecture: ${CMAKE_SYSTEM_PROCESSOR}. Please specify the target architecture using -DPROJECT_ARCH=") + endif() + endif() + + message(STATUS "Building for architecture: ${PROJECT_ARCH}") + + if(PROJECT_ARCH STREQUAL "x86_64") + set(CMAKE_OSX_ARCHITECTURES x86_64) + elseif(PROJECT_ARCH STREQUAL "arm64") + set(CMAKE_OSX_ARCHITECTURES arm64) + else() + message(FATAL_ERROR "Unsupported architecture: ${PROJECT_ARCH}") + endif() + # Avoid CMP0068 policy errors. if(POLICY CMP0068) cmake_policy(SET CMP0068 NEW) @@ -370,7 +392,20 @@ if(OS_MAC) MACOSX_BUNDLE_INFO_PLIST ${_helper_info_plist} OUTPUT_NAME ${_helper_output_name} ) - + set_target_properties(${JCEF_TARGET} PROPERTIES + # XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${ENACTOR_CODE_SIGN_IDENTITY} + XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${ENACTOR_DEVELOPMENT_TEAM} + # XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "YES" + # XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep" + ) + set_target_properties(${JCEF_HELPER_TARGET} PROPERTIES + # XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${ENACTOR_CODE_SIGN_IDENTITY} + XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${ENACTOR_DEVELOPMENT_TEAM} + # XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "YES" + # XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep" + ) if(USE_SANDBOX) target_link_libraries(${_helper_target} cef_sandbox_lib) endif() diff --git a/pom.xml b/pom.xml index d1c052ba..7ee6a8b1 100644 --- a/pom.xml +++ b/pom.xml @@ -722,12 +722,12 @@ - - generate-mac + generate-mac-amd64 mac + x86_64 @@ -753,11 +753,14 @@ + - + + + @@ -839,7 +842,7 @@ - chromium-binaries-mac + chromium-binaries-${distribution.arch} assemble-mac-os.xml @@ -876,7 +879,7 @@ deploy-file - ${basedir}/target/chromium-binaries-mac.zip + ${basedir}/target/chromium-binaries-${distribution.arch}.zip ${repository.id} ${repository.url} com.enactor.chromium @@ -890,6 +893,179 @@ + + generate-mac-arm64 + + + mac + arm64 + + + + macosx64 + macos-arm64 + + + + + com.googlecode.cmake-maven-project + cmake-maven-plugin + + + cmake-generate-mac + + generate + + + ${basedir} + ${basedir}/jcef_build + Xcode + mac-x86_64 + + + + + + + + + + + + + + + cmake-compile-mac + + compile + + + Release + ${basedir}/jcef_build + mac-x86_64 + + + + + + + + maven-antrun-plugin + + + package + package + + run + + + + + + + + + + + + + + maven-install-plugin + + + deploy-jcef + install + + install-file + + + ${basedir}/jcef_build/native/Release/jcef.jar/ + com.enactor.core + jcef + ${project.version} + jar + + + + deploy-jcef-test + install + + install-file + + + ${basedir}/jcef_build/native/Release/jcef-tests.jar/ + com.enactor.core + jcef-tests + ${project.version} + jar + + + + + + maven-assembly-plugin + + + package + + single + + + + + chromium-binaries-${distribution.arch} + + assemble-mac-os.xml + + false + + + + org.apache.maven.plugins + maven-deploy-plugin + + ${skip.deploy} + + + + deploy-jcef + deploy + + deploy-file + + + ${basedir}/jcef_build/native/Release/jcef.jar + ${repository.id} + ${repository.url} + com.enactor.core + jcef + ${project.version} + jar + + + + deploy-native-binaries + deploy + + deploy-file + + + ${basedir}/target/chromium-binaries-${distribution.arch}.zip + ${repository.id} + ${repository.url} + com.enactor.chromium + mac-binaries + ${project.version} + zip + + + + + + + + +