Pārlūkot izejas kodu

cmake: Fix build architectures and deployment target not set to defaults

CMake seems to set either `CMAKE_OSX_ARCHITECTURES` and
`CMAKE_OSX_DEPLOYMENT_TARGET` implicitly to empty cache variables when
not defined explicitly on the commandline or via a GUI.

Setting a default thus requires the `FORCE` flag to overwrite these
empty defaults with our desired results. The branches ensure that user-
provided non-empty values are not overwritten as well.
PatTheMav 3 gadi atpakaļ
vecāks
revīzija
d940f21457
1 mainītis faili ar 26 papildinājumiem un 10 dzēšanām
  1. 26 10
      cmake/Modules/ObsDefaults_macOS.cmake

+ 26 - 10
cmake/Modules/ObsDefaults_macOS.cmake

@@ -14,17 +14,30 @@ if(POLICY CMP0025)
 endif()
 endif()
 
 
 # Build options
 # Build options
-set(CMAKE_OSX_ARCHITECTURES
-    "x86_64"
-    CACHE STRING "OBS build architecture for macOS - x86_64 required at least")
+if(NOT DEFINED CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL "")
+  set(CMAKE_OSX_ARCHITECTURES
+      "${CMAKE_HOST_SYSTEM_PROCESSOR}"
+      CACHE STRING
+            "OBS build architecture for macOS - x86_64 required at least" FORCE)
+endif()
 set_property(CACHE CMAKE_OSX_ARCHITECTURES PROPERTY STRINGS x86_64 arm64
 set_property(CACHE CMAKE_OSX_ARCHITECTURES PROPERTY STRINGS x86_64 arm64
                                                     "x86_64;arm64")
                                                     "x86_64;arm64")
 
 
-set(CMAKE_OSX_DEPLOYMENT_TARGET
-    "10.13"
-    CACHE STRING "OBS deployment target for macOS - 10.13+ required")
+if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET OR CMAKE_OSX_DEPLOYMENT_TARGET
+                                              STREQUAL "")
+  if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ".*arm64.*")
+    set(_MACOS_DEPLOYMENT_TARGET "11.0")
+  else()
+    set(_MACOS_DEPLOYMENT_TARGET "10.13")
+  endif()
+
+  set(CMAKE_OSX_DEPLOYMENT_TARGET
+      "${_MACOS_DEPLOYMENT_TARGET}"
+      CACHE STRING "OBS deployment target for macOS - 10.13+ required" FORCE)
+  unset(_MACOS_DEPLOYMENT_TARGET)
+endif()
 set_property(CACHE CMAKE_OSX_DEPLOYMENT_TARGET PROPERTY STRINGS 10.13 10.14
 set_property(CACHE CMAKE_OSX_DEPLOYMENT_TARGET PROPERTY STRINGS 10.13 10.14
-                                                        10.15 11 12)
+                                                        10.15 11.0 12.0)
 
 
 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
   set(CMAKE_INSTALL_PREFIX
   set(CMAKE_INSTALL_PREFIX
@@ -57,9 +70,12 @@ endif()
 
 
 macro(setup_obs_project)
 macro(setup_obs_project)
   # Set code signing options
   # Set code signing options
-  set(OBS_BUNDLE_CODESIGN_IDENTITY
-      "-"
-      CACHE STRING "OBS code signing identity for macOS")
+  if(NOT DEFINED OBS_BUNDLE_CODESIGN_IDENTITY OR OBS_BUNDLE_CODESIGN_IDENTITY
+                                                 STREQUAL "")
+    set(OBS_BUNDLE_CODESIGN_IDENTITY
+        "-"
+        CACHE STRING "OBS code signing identity for macOS")
+  endif()
   set(OBS_CODESIGN_ENTITLEMENTS
   set(OBS_CODESIGN_ENTITLEMENTS
       "${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist"
       "${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist"
       CACHE INTERNAL "Path to codesign entitlements plist")
       CACHE INTERNAL "Path to codesign entitlements plist")