darwin.mk raw

   1  OSX_MIN_VERSION=14.0
   2  OSX_SDK_VERSION=14.0
   3  XCODE_VERSION=26.1.1
   4  XCODE_BUILD_ID=17B100
   5  LLD_VERSION=711
   6  
   7  OSX_SDK=$(SDK_PATH)/Xcode-$(XCODE_VERSION)-$(XCODE_BUILD_ID)-extracted-SDK-with-libcxx-headers
   8  
   9  clang_prog=$(shell command -v clang)
  10  clangxx_prog=$(shell command -v clang++)
  11  
  12  darwin_AR=$(shell command -v llvm-ar)
  13  darwin_NM=$(shell command -v llvm-nm)
  14  darwin_OBJCOPY=$(shell command -v llvm-objcopy)
  15  darwin_OBJDUMP=$(shell command -v llvm-objdump)
  16  darwin_RANLIB=$(shell command -v llvm-ranlib)
  17  darwin_STRIP=$(shell command -v llvm-strip)
  18  
  19  # Flag explanations:
  20  #
  21  #     -mlinker-version
  22  #
  23  #         Ensures that modern linker features are enabled. See here for more
  24  #         details: https://github.com/bitcoin/bitcoin/pull/19407.
  25  #
  26  #     -isysroot$(OSX_SDK) -nostdlibinc
  27  #
  28  #         Disable default include paths built into the compiler as well as
  29  #         those normally included for libc and libc++. The only path that
  30  #         remains implicitly is the clang resource dir.
  31  #
  32  #     -iwithsysroot / -iframeworkwithsysroot
  33  #
  34  #         Adds the desired paths from the SDK
  35  #
  36  #     -platform_version
  37  #
  38  #         Indicate to the linker the platform, the oldest supported version,
  39  #         and the SDK used.
  40  #
  41  #     -no_adhoc_codesign
  42  #
  43  #         Disable adhoc codesigning (for now) when using LLVM tooling, to avoid
  44  #         non-determinism issues with the Identifier field.
  45  #
  46  #     -Xclang -fno-cxx-modules
  47  #
  48  #         Disable C++ modules. We don't use these, and modules cause definition issues
  49  #         in the SDK, where __has_feature(modules) is used to define USE_CLANG_TYPES,
  50  #         which is in turn used as an include guard.
  51  
  52  darwin_CC=$(clang_prog) --target=$(host) \
  53                -isysroot$(OSX_SDK) -nostdlibinc \
  54                -iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks
  55  
  56  darwin_CXX=$(clangxx_prog) --target=$(host) \
  57                 -isysroot$(OSX_SDK) -nostdlibinc \
  58                 -iwithsysroot/usr/include/c++/v1 \
  59                 -iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks
  60  
  61  darwin_CFLAGS=-mmacos-version-min=$(OSX_MIN_VERSION)
  62  darwin_CXXFLAGS=-mmacos-version-min=$(OSX_MIN_VERSION) -Xclang -fno-cxx-modules
  63  darwin_LDFLAGS=-Wl,-platform_version,macos,$(OSX_MIN_VERSION),$(OSX_SDK_VERSION)
  64  
  65  ifneq ($(build_os),darwin)
  66  darwin_CFLAGS += -mlinker-version=$(LLD_VERSION)
  67  darwin_CXXFLAGS += -mlinker-version=$(LLD_VERSION)
  68  darwin_LDFLAGS += -Wl,-no_adhoc_codesign -fuse-ld=lld
  69  endif
  70  
  71  darwin_release_CFLAGS=-O2
  72  darwin_release_CXXFLAGS=$(darwin_release_CFLAGS)
  73  
  74  darwin_debug_CFLAGS=-O1 -g
  75  darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
  76  
  77  darwin_cmake_system_name=Darwin
  78  # Darwin version, which corresponds to OSX_MIN_VERSION.
  79  # See https://en.wikipedia.org/wiki/Darwin_(operating_system)
  80  darwin_cmake_system_version=20.1
  81