CMakeLists.txt raw

   1  # Copyright (c) 2023-present The Bitcoin Core developers
   2  # Distributed under the MIT software license, see the accompanying
   3  # file COPYING or https://opensource.org/license/mit/.
   4  
   5  add_library(bitcoin_ipc STATIC EXCLUDE_FROM_ALL
   6    capnp/mining.cpp
   7    capnp/protocol.cpp
   8    interfaces.cpp
   9    process.cpp
  10  )
  11  
  12  target_capnp_sources(bitcoin_ipc ${CMAKE_CURRENT_SOURCE_DIR}
  13    capnp/common.capnp
  14    capnp/echo.capnp
  15    capnp/init.capnp
  16    capnp/mining.capnp
  17    capnp/rpc.capnp
  18  )
  19  
  20  target_link_libraries(bitcoin_ipc
  21    PRIVATE
  22      core_interface
  23      univalue
  24      Boost::headers
  25  )
  26  
  27  if(BUILD_TESTS)
  28    # bitcoin_ipc_test library target is defined here in src/ipc/CMakeLists.txt
  29    # instead of src/ipc/test/CMakeLists.txt so capnp files in src/ipc/test/ are able to
  30    # reference capnp files in src/ipc/capnp/ by relative path. The Cap'n Proto
  31    # compiler only allows importing by relative path when the importing and
  32    # imported files are underneath the same compilation source prefix, so the
  33    # source prefix must be src/ipc, not src/ipc/test/
  34    add_library(bitcoin_ipc_test STATIC EXCLUDE_FROM_ALL
  35      test/ipc_test.cpp
  36    )
  37    target_capnp_sources(bitcoin_ipc_test ${CMAKE_CURRENT_SOURCE_DIR}
  38      test/ipc_test.capnp
  39    )
  40    add_dependencies(bitcoin_ipc_test bitcoin_ipc_headers)
  41  
  42    target_link_libraries(bitcoin_ipc_test
  43      PRIVATE
  44        core_interface
  45        univalue
  46        Boost::headers
  47    )
  48  endif()
  49  
  50  if (BUILD_FUZZ_BINARY)
  51    add_library(bitcoin_ipc_fuzz STATIC EXCLUDE_FROM_ALL)
  52    target_capnp_sources(bitcoin_ipc_fuzz ${CMAKE_CURRENT_SOURCE_DIR}
  53      test/fuzz/ipc_fuzz.capnp
  54    )
  55    add_dependencies(bitcoin_ipc_fuzz bitcoin_ipc_headers)
  56  
  57    target_link_libraries(bitcoin_ipc_fuzz
  58      PRIVATE
  59        core_interface
  60        univalue
  61        Boost::headers
  62    )
  63  endif()
  64  
  65  configure_file(.clang-tidy.in .clang-tidy USE_SOURCE_PERMISSIONS COPYONLY)
  66