diff --git a/CMakeLists.txt b/CMakeLists.txt index d41da3cae..d6a4ccdc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,7 @@ endif() set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}") if( APPLE ) + set(LINPHONEAPP_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build: comma-separated list of values in [arm64, x86_64]") set(LINPHONESDK_BUILD_TYPE "Default")#Using Mac will remove all SDK targets. set(ENABLE_FAT_BINARY "ON") # Disable XCFrameworks as it is not supported. @@ -68,13 +69,8 @@ if( APPLE ) if( NOT CMAKE_OSX_DEPLOYMENT_TARGET) set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")#Qt: 'path' is unavailable: introduced in macOS 10.15 endif() - if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64")# TODO: add universal build - set(LINPHONESDK_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build for: comma-separated list of values in [x86_64]") - else() - set(LINPHONESDK_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build for: comma-separated list of values in [x86_64]") - endif() + set(LINPHONESDK_MACOS_ARCHS ${LINPHONEAPP_MACOS_ARCHS}) set(CMAKE_OSX_ARCHITECTURES ${LINPHONESDK_MACOS_ARCHS} CACHE STRING "") - set(CMAKE_SYSTEM_PROCESSOR "x86_64") elseif(WIN32) set(LINPHONESDK_BUILD_TYPE "Default") else() diff --git a/README.md b/README.md index 1ef018654..de4056112 100644 --- a/README.md +++ b/README.md @@ -163,9 +163,9 @@ Before you install packages with Brew, you may have to change directories permis 6. Download [Qt](https://www.qt.io/download), install a Qt5 version and set Qt5_DIR and PATH variables. -7. Qt5 is not available for arm64. If you are building on a arm64 system, you have to select the x86_64 processor on the generation stage of cmake : +7. The default architecture is x86_64 because Qt 5.15.2 is not available for arm64. LINPHONEAPP_MACOS_ARCHS can be used to change it. - -DCMAKE_APPLE_SILICON_PROCESSOR=x86_64 + -DLINPHONEAPP_MACOS_ARCHS=arm64 8. Build as usual (General Steps). diff --git a/cmake/TasksMacos.cmake b/cmake/TasksMacos.cmake index e966ffdce..b41d8f663 100644 --- a/cmake/TasksMacos.cmake +++ b/cmake/TasksMacos.cmake @@ -20,11 +20,16 @@ # ############################################################################ -set(LINPHONEAPP_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build: comma-separated list of values in [arm64, x86_64]") option(ENABLE_FAT_BINARY "Enable fat binary generation using lipo." ON) -set(_MACOS_ARCHS ${LINPHONEAPP_MACOS_ARCHS}) #linphone_sdk_convert_comma_separated_list_to_cmake_list("${LINPHONESDK_MACOS_ARCHS}" _MACOS_ARCHS) +macro(linphone_app_convert_comma_separated_list_to_cmake_list INPUT OUTPUT) + string(REPLACE " " "" ${OUTPUT} "${INPUT}") + string(REPLACE "," ";" ${OUTPUT} "${${OUTPUT}}") +endmacro() +linphone_app_convert_comma_separated_list_to_cmake_list("${LINPHONEAPP_MACOS_ARCHS}" _MACOS_ARCHS) + + set(LINPHONEAPP_NAME "linphone-app") set(LINPHONEAPP_PLATFORM "macos") @@ -49,7 +54,7 @@ foreach(_MACOS_ARCH IN LISTS _MACOS_ARCHS) set(_MACOS_ARCH_INSTALL_DIR "${_MACOS_INSTALL_DIR}-${_MACOS_ARCH}") # build/OUTPUT/linphone-app/macos-x86_64 add_custom_target(${_TARGET_NAME} ALL - COMMAND ${CMAKE_COMMAND} -B ${_MACOS_ARCH_BINARY_DIR} -DMONO_ARCH=${_MACOS_ARCH} ${USER_ARGS} ${OPTION_LIST} ${_MACOS_CMAKE_ARGS} -DLINPHONEAPP_INSTALL_PREFIX=${_MACOS_ARCH_INSTALL_DIR} -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/toolchains/toolchain-mac-x86_64.cmake -DLINPHONEAPP_BUILD_TYPE="Normal" + COMMAND ${CMAKE_COMMAND} -B ${_MACOS_ARCH_BINARY_DIR} -DMONO_ARCH=${_MACOS_ARCH} ${USER_ARGS} ${OPTION_LIST} ${_MACOS_CMAKE_ARGS} -DLINPHONEAPP_INSTALL_PREFIX=${_MACOS_ARCH_INSTALL_DIR} -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/toolchains/toolchain-mac-${_MACOS_ARCH}.cmake -DLINPHONEAPP_BUILD_TYPE="Normal" COMMAND ${CMAKE_COMMAND} --build ${_MACOS_ARCH_BINARY_DIR} --target install ${_CMAKE_BUILD_ARGS} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMENT "Building Linphone APP for MacOS ${_MACOS_ARCH}" diff --git a/cmake/toolchains/toolchain-mac-arm64.cmake b/cmake/toolchains/toolchain-mac-arm64.cmake index 213974cc1..2431abb4b 100644 --- a/cmake/toolchains/toolchain-mac-arm64.cmake +++ b/cmake/toolchains/toolchain-mac-arm64.cmake @@ -16,7 +16,6 @@ # along with this program. If not, see . # ################################################################################ -message(FATAL_ERROR A) set(CMAKE_SYSTEM_PROCESSOR "arm64") set(CMAKE_OSX_ARCHITECTURES "arm64") set(CLANG_TARGET "arm64-apple-macos")