# Tests ========================================================================

if(BUILD_TESTING)
  include(CTest)

  if(EXTERNAL_CAPNP)
    # Setup CAPNP_GENERATE_CPP for compiling test schemas
    find_package(CapnProto CONFIG QUIET)
    if(NOT CapnProto_FOUND)
      # No working installation of Cap'n Proto found, so fall back to searching the environment.
      #
      # We search for the external capnp compiler binaries via $CAPNP, $CAPNPC_CXX, and
      # find_program(). find_program() will use various paths in its search, among them
      # ${CMAKE_PREFIX_PATH}/bin and $PATH.

      if(NOT CAPNP_EXECUTABLE)
        if(DEFINED ENV{CAPNP})
          set(CAPNP_EXECUTABLE "$ENV{CAPNP}")
        else()
          find_program(CAPNP_EXECUTABLE capnp)
        endif()
      endif()

      if(NOT CAPNPC_CXX_EXECUTABLE)
        if(DEFINED ENV{CAPNPC_CXX})
          set(CAPNPC_CXX_EXECUTABLE "$ENV{CAPNPC_CXX}")
        else()
          # Also search in the same directory that `capnp` was found in
          get_filename_component(capnp_dir "${CAPNP_EXECUTABLE}" DIRECTORY)
          find_program(CAPNPC_CXX_EXECUTABLE capnpc-c++ HINTS "${capnp_dir}")
        endif()
      endif()
    endif()

    set(CAPNP_INCLUDE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
    #TODO(someday) It would be nice to use targets instead of variables in CAPNP_GENERATE_CPP macro
  endif()

  # Sadly, we can't use the 'test' target, as that's coopted by ctest
  add_custom_target(check "${CMAKE_CTEST_COMMAND}" -V)
endif()  # BUILD_TESTING

# kj ===========================================================================

add_subdirectory(kj)

# capnp ========================================================================

add_subdirectory(capnp)