Commit 16b14a2c authored by Branislav Katreniak's avatar Branislav Katreniak

cmake: don't use find_package(CapnProto) if EXTERNAL_CAPNP is not set

Using installed capnp tools during instead of built capnp tools
easily leads to bad results.
parent 71f1fa97
...@@ -6,37 +6,40 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}") ...@@ -6,37 +6,40 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
if(BUILD_TESTING) if(BUILD_TESTING)
include(CTest) include(CTest)
# Setup CAPNP_GENERATE_CPP for compiling test schemas if (EXTERNAL_CAPNP)
find_package(CapnProto CONFIG QUIET) # Setup CAPNP_GENERATE_CPP for compiling test schemas
if (NOT CapnProto_FOUND) find_package(CapnProto CONFIG QUIET)
# Try and find the executables from an autotools-based installation if (NOT CapnProto_FOUND)
# Setup paths to the schema compiler for generating ${test_capnp_files} # Try and find the executables from an autotools-based installation
if(NOT EXTERNAL_CAPNP AND NOT CAPNP_LITE) # Setup paths to the schema compiler for generating ${test_capnp_files}
set(CAPNP_EXECUTABLE $<TARGET_FILE:capnp_tool>) if(NOT EXTERNAL_CAPNP AND NOT CAPNP_LITE)
set(CAPNPC_CXX_EXECUTABLE $<TARGET_FILE:capnpc_cpp>) set(CAPNP_EXECUTABLE $<TARGET_FILE:capnp_tool>)
else() set(CAPNPC_CXX_EXECUTABLE $<TARGET_FILE:capnpc_cpp>)
# Allow paths to tools to be set with either environment variables or find_program() else()
if (NOT CAPNP_EXECUTABLE) # Allow paths to tools to be set with either environment variables or find_program()
if (DEFINED ENV{CAPNP}) if (NOT CAPNP_EXECUTABLE)
set(CAPNP_EXECUTABLE "$ENV{CAPNP}") if (DEFINED ENV{CAPNP})
else() set(CAPNP_EXECUTABLE "$ENV{CAPNP}")
find_program(CAPNP_EXECUTABLE capnp) else()
find_program(CAPNP_EXECUTABLE capnp)
endif()
endif() endif()
endif()
if(NOT CAPNPC_CXX_EXECUTABLE) if(NOT CAPNPC_CXX_EXECUTABLE)
if (DEFINED ENV{CAPNPC_CXX}) if (DEFINED ENV{CAPNPC_CXX})
set(CAPNPC_CXX_EXECUTABLE "$ENV{CAPNPC_CXX}") set(CAPNPC_CXX_EXECUTABLE "$ENV{CAPNPC_CXX}")
else() else()
# Also search in the same directory that `capnp` was found in # Also search in the same directory that `capnp` was found in
get_filename_component(capnp_dir "${CAPNP_EXECUTABLE}" DIRECTORY) get_filename_component(capnp_dir "${CAPNP_EXECUTABLE}" DIRECTORY)
find_program(CAPNPC_CXX_EXECUTABLE capnpc-c++ HINTS "${capnp_dir}") find_program(CAPNPC_CXX_EXECUTABLE capnpc-c++ HINTS "${capnp_dir}")
endif()
endif() endif()
endif() endif()
endif() endif()
endif()
set(CAPNP_INCLUDE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") 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 # Sadly, we can't use the 'test' target, as that's coopted by ctest
add_custom_target(check "${CMAKE_CTEST_COMMAND}" -V) add_custom_target(check "${CMAKE_CTEST_COMMAND}" -V)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment