From d4056381daf1a491b6fb1d0f85b325e6b8290a78 Mon Sep 17 00:00:00 2001 From: Macbook Date: Thu, 3 Oct 2024 20:13:38 +0700 Subject: [PATCH] update cmake client folder --- client/CMakeLists.txt | 42 +++++++++++++++---------------- client/macos/scripts/clangwrap.sh | 14 +++++++++++ client/macos/scripts/openvpn.sh | 29 +++++++++++++++++++++ 3 files changed, 64 insertions(+), 21 deletions(-) create mode 100755 client/macos/scripts/clangwrap.sh create mode 100755 client/macos/scripts/openvpn.sh diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 70f17354..da5248ce 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -3,8 +3,7 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR) set(PROJECT AmneziaVPN) project(${PROJECT}) -set(IOS 1) -#set(APPLE 1) +set(MACOX 1) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER "Autogen") @@ -26,11 +25,11 @@ execute_process( add_definitions(-DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}") -if(IOS OR APPLE) +if(IOS OR MACOX) set(PACKAGES ${PACKAGES} Multimedia) endif() -if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID)) +if(WIN32 OR (MACOX AND NOT IOS) OR (LINUX AND NOT ANDROID)) set(PACKAGES ${PACKAGES} Widgets) endif() @@ -43,18 +42,18 @@ set(LIBS ${LIBS} Qt6::Core5Compat Qt6::Concurrent ) -if(IOS OR APPLE) +if(IOS OR MACOX) set(LIBS ${LIBS} Qt6::Multimedia) endif() -if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID)) +if(WIN32 OR (MACOX AND NOT IOS) OR (LINUX AND NOT ANDROID)) set(LIBS ${LIBS} Qt6::Widgets) endif() qt_standard_project_setup() qt_add_executable(${PROJECT} MANUAL_FINALIZATION) -if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID)) +if(WIN32 OR (MACOX AND NOT IOS) OR (LINUX AND NOT ANDROID)) qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_interface.rep) qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_process_interface.rep) endif() @@ -90,15 +89,16 @@ configure_file(${CMAKE_CURRENT_LIST_DIR}/translations/translations.qrc.in ${CMAK qt6_add_resources(QRC ${I18NQRC} ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc) # -- i18n end -if(IOS OR APPLE) - message("Client >> Cmake build OpenVPN: iOS or OSX build") +if(IOS) + message("Client >> Cmake build OpenVPN: iOS") execute_process(COMMAND bash ${CMAKE_CURRENT_LIST_DIR}/ios/scripts/openvpn.sh args WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) endif() -# if(APPLE) -# execute_process(COMMAND bash ${CMAKE_CURRENT_LIST_DIR}/macos/scripts/openvpn.sh args -# WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) +if(MACOX) + message("Client >> Cmake build OpenVPN: OSX build") + execute_process(COMMAND bash ${CMAKE_CURRENT_LIST_DIR}/macos/scripts/openvpn.sh args + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) set(IS_CI ${CI}) if(IS_CI) @@ -158,7 +158,7 @@ include_directories(mozilla) include_directories(mozilla/shared) include_directories(mozilla/models) -if(NOT IOS OR NOT APPLE) +if(NOT IOS OR NOT MACOX) set(HEADERS ${HEADERS} ${CMAKE_CURRENT_LIST_DIR}/platforms/ios/QRCodeReaderBase.h ) @@ -207,7 +207,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_compile_definitions(${PROJECT} PRIVATE "MZ_DEBUG") endif() -if(NOT IOS OR NOT APPLE) +if(NOT IOS OR NOT MACOX) set(SOURCES ${SOURCES} ${CMAKE_CURRENT_LIST_DIR}/platforms/ios/QRCodeReaderBase.cpp ) @@ -287,7 +287,7 @@ if(WIN32) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") endif() -if(APPLE) +if(MACOX) cmake_policy(SET CMP0099 OLD) cmake_policy(SET CMP0114 NEW) @@ -315,7 +315,7 @@ if(LINUX AND NOT ANDROID) link_directories(${CMAKE_CURRENT_LIST_DIR}/platforms/linux) endif() -# if(WIN32 OR (APPLE AND NOT IOS) OR (LINUX AND NOT ANDROID)) +# if(WIN32 OR (MACOX AND NOT IOS) OR (LINUX AND NOT ANDROID)) if(WIN32 OR (LINUX AND NOT ANDROID)) message("Client desktop build") add_compile_definitions(AMNEZIA_DESKTOP) @@ -353,9 +353,9 @@ if(IOS) # only for iOS or OSX message("Client >> Cmake: iOS build") include(cmake/ios.cmake) #include(cmake/ios-arch-fixup.cmake) -elseif(APPLE AND NOT IOS) # all version +elseif(MACOX AND NOT IOS) # all version message("Client >> Cmake: OSX build") - include(cmake/apple.cmake) + include(cmake/MACOX.cmake) # include(cmake/osxtools.cmake) # include(cmake/macos.cmake) endif() @@ -372,11 +372,11 @@ if(WIN32) endif() elseif(LINUX) set(DEPLOY_PLATFORM_PATH "linux/client") -# elseif(APPLE AND NOT IOS) +# elseif(MACOX AND NOT IOS) # set(DEPLOY_PLATFORM_PATH "macos") endif() -if(NOT IOS AND NOT ANDROID AND NOT APPLE) +if(NOT IOS AND NOT ANDROID AND NOT MACOX) add_custom_command( TARGET ${PROJECT} POST_BUILD COMMAND ${CMAKE_COMMAND} -E $,copy_directory,true> @@ -412,7 +412,7 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD # Nếu ở chế độ Release, ký mã gói ứng dụng if(CMAKE_BUILD_TYPE STREQUAL "Release") - SET(SIGN_CMD codesign --deep --force --sign 'Apple Distribution: Privacy Technologies OU \(X7UJ388FXK\)' --timestamp --options runtime $) + SET(SIGN_CMD codesign --deep --force --sign 'MACOX Distribution: Privacy Technologies OU \(X7UJ388FXK\)' --timestamp --options runtime $) message("Manual signing bundle...") message(${SIGN_CMD}) diff --git a/client/macos/scripts/clangwrap.sh b/client/macos/scripts/clangwrap.sh new file mode 100755 index 00000000..763187e3 --- /dev/null +++ b/client/macos/scripts/clangwrap.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# go/clangwrap.sh + +SDK_PATH=`xcrun --sdk $SDK --show-sdk-path` +CLANG=`xcrun --sdk $SDK --find clang` + +if [ "$GOARCH" == "amd64" ]; then + CARCH="x86_64" +elif [ "$GOARCH" == "arm64" ]; then + CARCH="arm64" +fi + +exec $CLANG -arch $CARCH -isysroot $SDK_PATH -mios-version-min=10.0 "$@" diff --git a/client/macos/scripts/openvpn.sh b/client/macos/scripts/openvpn.sh new file mode 100755 index 00000000..ce8f6054 --- /dev/null +++ b/client/macos/scripts/openvpn.sh @@ -0,0 +1,29 @@ +XCODEBUILD="/usr/bin/xcodebuild" +WORKINGDIR=`pwd` +PATCH="/usr/bin/patch" + +# Copy the Project.xcconfig settings to amnezia.xcconfig +cat $WORKINGDIR/3rd/OpenVPNAdapter/Configuration/Project.xcconfig > $WORKINGDIR/3rd/OpenVPNAdapter/Configuration/amnezia.xcconfig + +# Append macOS-specific build directory configurations to amnezia.xcconfig +cat << EOF >> $WORKINGDIR/3rd/OpenVPNAdapter/Configuration/amnezia.xcconfig +PROJECT_TEMP_DIR = $WORKINGDIR/3rd/OpenVPNAdapter/build/OpenVPNAdapter.build +CONFIGURATION_BUILD_DIR = $WORKINGDIR/3rd/OpenVPNAdapter/build/Release-macos +BUILT_PRODUCTS_DIR = $WORKINGDIR/3rd/OpenVPNAdapter/build/Release-macos +EOF + +# Fetch the current macOS SDK version dynamically +MACOSX_SDK=macosx15.0 +cd 3rd/OpenVPNAdapter + +# Build for macOS using the correct SDK and destination +if $XCODEBUILD -scheme OpenVPNAdapter -configuration Release -xcconfig Configuration/amnezia.xcconfig -sdk $MACOSX_SDK -destination 'generic/platform=macOS' -project OpenVPNAdapter.xcodeproj ; then + echo "OpenVPNAdapter built successfully for macOS" +else + echo "OpenVPNAdapter macOS build failed ..." +fi + +# Remove CodeSignature if needed for macOS +rm -rf ./build/Release-macos/OpenVPNAdapter.framework/Versions/A/_CodeSignature + +cd ../../