diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,8 +12,8 @@ # If ccache is available, then use it. find_program(CCACHE ccache) if(CCACHE) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) endif(CCACHE) # Add the magic taret check and check-all diff --git a/cmake/modules/BrewHelper.cmake b/cmake/modules/BrewHelper.cmake new file mode 100644 --- /dev/null +++ b/cmake/modules/BrewHelper.cmake @@ -0,0 +1,21 @@ +# Copyright (c) 2018 The Bitcoin developers + +find_program(BREW brew) + +function(find_brew_prefix VAR NAME) + if(NOT BREW) + return() + endif() + + if(DEFINED ${VAR}) + return() + endif() + + execute_process( + COMMAND ${BREW} --prefix ${NAME} + OUTPUT_VARIABLE PREFIX + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + set(${VAR} ${PREFIX} PARENT_SCOPE) +endfunction() diff --git a/cmake/modules/FindBerkeleyDB.cmake b/cmake/modules/FindBerkeleyDB.cmake --- a/cmake/modules/FindBerkeleyDB.cmake +++ b/cmake/modules/FindBerkeleyDB.cmake @@ -5,11 +5,30 @@ # BDBXX_INCLUDE_DIR - the Berkeley DB include directory for C++ # BDBXX_LIBRARY - Library needed to use Berkeley DB C++ API -find_path(BDB_INCLUDE_DIR NAMES db.h) -find_library(BDB_LIBRARY NAMES db libdb) +include(BrewHelper) +find_brew_prefix(BREW_HINT berkeley-db) -find_path(BDBXX_INCLUDE_DIR NAMES db_cxx.h) -find_library(BDBXX_LIBRARY NAMES db_cxx libdb_cxx) +find_path(BDB_INCLUDE_DIR + NAMES + db.h + HINTS ${BREW_HINT} +) +find_library(BDB_LIBRARY + NAMES + db libdb + HINTS ${BREW_HINT} +) + +find_path(BDBXX_INCLUDE_DIR + NAMES + db_cxx.h + HINTS ${BREW_HINT} +) +find_library(BDBXX_LIBRARY + NAMES + db_cxx libdb_cxx + HINTS ${BREW_HINT} +) MESSAGE(STATUS "BerkeleyDB libs: " ${BDB_LIBRARY} " " ${BDBXX_LIBRARY}) diff --git a/src/config/CMakeLists.txt b/src/config/CMakeLists.txt --- a/src/config/CMakeLists.txt +++ b/src/config/CMakeLists.txt @@ -110,6 +110,8 @@ check_symbol_exists(strnlen "string.h" HAVE_DECL_STRNLEN) # OpenSSL functionality +include(BrewHelper) +find_brew_prefix(OPENSSL_ROOT_DIR openssl) find_package(OpenSSL REQUIRED) set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_CRYPTO_INCLUDES}) set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY}) diff --git a/src/crypto/CMakeLists.txt b/src/crypto/CMakeLists.txt --- a/src/crypto/CMakeLists.txt +++ b/src/crypto/CMakeLists.txt @@ -32,5 +32,7 @@ endif() # Dependencies +include(BrewHelper) +find_brew_prefix(OPENSSL_ROOT_DIR openssl) find_package(OpenSSL REQUIRED) target_link_libraries(crypto ${OPENSSL_CRYPTO_LIBRARY}) diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -5,7 +5,9 @@ # This ensure that AUTOMOC doesn't run on generated files. cmake_policy(SET CMP0071 OLD) -find_package(Qt5 COMPONENTS Widgets Network REQUIRED) +include(BrewHelper) +find_brew_prefix(QT5_PREFIX qt5) +find_package(Qt5 COMPONENTS Widgets Network REQUIRED HINTS "${QT5_PREFIX}") # Localisation add_subdirectory(locale) @@ -112,6 +114,8 @@ ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/forms ${Protobuf_INCLUDE_DIRS} + PRIVATE + ${OPENSSL_INCLUDE_DIR} ) target_link_libraries(bitcoin-qt-base @@ -161,6 +165,9 @@ target_link_libraries(bitcoin-qt-base wallet) # Dependencies + # Support Brew OpenSSL on MacOS X + include(BrewHelper) + find_brew_prefix(OPENSSL_ROOT_DIR openssl) find_package(OpenSSL REQUIRED) target_link_libraries(bitcoin-qt-base ${OPENSSL_CRYPTO_LIBRARY}) endif() diff --git a/src/qt/locale/CMakeLists.txt b/src/qt/locale/CMakeLists.txt --- a/src/qt/locale/CMakeLists.txt +++ b/src/qt/locale/CMakeLists.txt @@ -2,7 +2,10 @@ project(bitcoin-qt-locale) -find_package(Qt5LinguistTools) +include(BrewHelper) +find_brew_prefix(QT5_PREFIX qt5) + +find_package(Qt5LinguistTools HINTS "${QT5_PREFIX}") qt5_add_translation(BITCOIN_QM_FILES bitcoin_af.ts