diff --git a/cmake/platforms/OSX.cmake b/cmake/platforms/OSX.cmake new file mode 100644 --- /dev/null +++ b/cmake/platforms/OSX.cmake @@ -0,0 +1,42 @@ +# Copyright (c) 2017 The Bitcoin developers + +set(CMAKE_SYSTEM_NAME Darwin) +set(TOOLCHAIN_PREFIX x86_64-apple-darwin11) + +# On OSX, we use clang by default. +set(CMAKE_C_COMPILER clang) +set(CMAKE_CXX_COMPILER clang++) +# set(CMAKE_CXX_EXTENSIONS OFF) + +# On OSX we use various stuff from Apple's SDK. +set(OSX_SDK_PATH "${CMAKE_CURRENT_SOURCE_DIR}/depends/SDKs/MacOSX10.11.sdk") + +# target environment on the build host system +# set 1st to dir with the cross compiler's C/C++ headers/libs +set(CMAKE_FIND_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/depends/${TOOLCHAIN_PREFIX};${OSX_SDK_PATH}") + +# We also may have built dependancies for the native plateform. +set(CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/depends/${TOOLCHAIN_PREFIX}/native") + +# modify default behavior of FIND_XXX() commands to +# search for headers/libs in the target environment and +# search for programs in the build host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# Sysroot clang +set(OSX_EXTRA_FLAGS + " -target ${TOOLCHAIN_PREFIX}" + " -mmacosx-version-min=10.8" + " --sysroot ${OSX_SDK_PATH}" + " -mlinker-version=253.9" +) + +string(APPEND CMAKE_C_FLAGS ${OSX_EXTRA_FLAGS}) +string(APPEND CMAKE_CXX_FLAGS ${OSX_EXTRA_FLAGS} " -stdlib=libc++") + +# Ensure we use an OSX specific version of ar, ranlib and nm. +find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}-ar) +find_program(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}-ranlib) +find_program(CMAKE_NM ${TOOLCHAIN_PREFIX}-nm) diff --git a/depends/packages/native_cctools.mk b/depends/packages/native_cctools.mk --- a/depends/packages/native_cctools.mk +++ b/depends/packages/native_cctools.mk @@ -21,7 +21,7 @@ echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \ echo "$($(package)_clang_sha256_hash) $($(package)_source_dir)/$($(package)_clang_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \ $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \ - mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \ + mkdir -p toolchain/bin && \ tar --strip-components=1 -C toolchain -xf $($(package)_source_dir)/$($(package)_clang_file_name) && \ rm -f toolchain/lib/libc++abi.so* && \ echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \ diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -122,6 +122,10 @@ ${Protobuf_LIBRARIES} ) +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set_property(TARGET bitcoin-qt-base PROPERTY AUTOMOC_MOC_OPTIONS "-DQ_OS_MAC") +endif() + # Wallet if(BUILD_BITCOIN_WALLET) target_sources(bitcoin-qt-base diff --git a/src/secp256k1/CMakeLists.txt b/src/secp256k1/CMakeLists.txt --- a/src/secp256k1/CMakeLists.txt +++ b/src/secp256k1/CMakeLists.txt @@ -9,7 +9,7 @@ -Wshadow -Wno-unused-function -Wno-nonnull - -Wno-nonnull-compare + -Wno-overlength-strings ) add_c_compiler_flag(