diff --git a/cmake/pico.cmake b/cmake/pico.cmake index 9c4d831..b363715 100644 --- a/cmake/pico.cmake +++ b/cmake/pico.cmake @@ -38,12 +38,39 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) pico_sdk_init() set(VAMP_MODULUS_INCLUDE_DIR "" CACHE PATH "Path to the Modulus public include directory") -if(NOT VAMP_MODULUS_INCLUDE_DIR) - set(VAMP_MODULUS_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../modulus/include") +set(VAMP_RESOLVED_MODULUS_INCLUDE_DIR "${VAMP_MODULUS_INCLUDE_DIR}") +if(NOT VAMP_RESOLVED_MODULUS_INCLUDE_DIR) + set(VAMP_MODULUS_CONAN_CACHE_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}/build/build_common/conan_cache" + ) + if(DEFINED ENV{CONAN_HOME} AND NOT "$ENV{CONAN_HOME}" STREQUAL "") + get_filename_component(VAMP_MODULUS_CONAN_HOME "$ENV{CONAN_HOME}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + list(PREPEND VAMP_MODULUS_CONAN_CACHE_DIRS "${VAMP_MODULUS_CONAN_HOME}") + endif() + foreach(cache_dir IN LISTS VAMP_MODULUS_CONAN_CACHE_DIRS) + file(GLOB VAMP_MODULUS_CONAN_INCLUDE_CANDIDATES CONFIGURE_DEPENDS + "${cache_dir}/p/*/p/include" + "${cache_dir}/p/*/es/include" + ) + list(APPEND VAMP_MODULUS_INCLUDE_CANDIDATES ${VAMP_MODULUS_CONAN_INCLUDE_CANDIDATES}) + endforeach() + set(VAMP_MODULUS_INCLUDE_CANDIDATES + ${VAMP_MODULUS_INCLUDE_CANDIDATES} + "${CMAKE_CURRENT_SOURCE_DIR}/../modulus/include" + ) + list(REMOVE_DUPLICATES VAMP_MODULUS_INCLUDE_CANDIDATES) + foreach(candidate IN LISTS VAMP_MODULUS_INCLUDE_CANDIDATES) + if(EXISTS "${candidate}/modulus/types.hpp") + set(VAMP_RESOLVED_MODULUS_INCLUDE_DIR "${candidate}") + break() + endif() + endforeach() endif() -get_filename_component(VAMP_MODULUS_INCLUDE_DIR "${VAMP_MODULUS_INCLUDE_DIR}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") -if(NOT EXISTS "${VAMP_MODULUS_INCLUDE_DIR}/modulus/types.hpp") - message(FATAL_ERROR "VAMP_MODULUS_INCLUDE_DIR must contain modulus/types.hpp: ${VAMP_MODULUS_INCLUDE_DIR}") +if(VAMP_RESOLVED_MODULUS_INCLUDE_DIR) + get_filename_component(VAMP_RESOLVED_MODULUS_INCLUDE_DIR "${VAMP_RESOLVED_MODULUS_INCLUDE_DIR}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +endif() +if(NOT EXISTS "${VAMP_RESOLVED_MODULUS_INCLUDE_DIR}/modulus/types.hpp") + message(FATAL_ERROR "VAMP_MODULUS_INCLUDE_DIR must contain modulus/types.hpp: ${VAMP_RESOLVED_MODULUS_INCLUDE_DIR}") endif() add_executable(product-vamp-pico2w @@ -57,7 +84,7 @@ add_executable(product-vamp-pico2w ) target_include_directories(product-vamp-pico2w PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include - ${VAMP_MODULUS_INCLUDE_DIR} + ${VAMP_RESOLVED_MODULUS_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_pico/capi ) target_compile_definitions(product-vamp-pico2w PRIVATE