set(PICO_BOARD pico2_w CACHE STRING "Pico board") if(DEFINED ENV{PICO_SDK_PATH} AND NOT PICO_SDK_PATH) set(PICO_SDK_PATH $ENV{PICO_SDK_PATH}) endif() set(PICO_SDK_FETCH_FROM_GIT OFF CACHE BOOL "Fetch Raspberry Pi Pico SDK from git") set(PICO_SDK_FETCH_FROM_GIT_TAG "${VAMP_PICO_SDK_VERSION}" CACHE STRING "Pico SDK git tag to fetch") if(NOT PICO_SDK_PATH AND PICO_SDK_FETCH_FROM_GIT) include(FetchContent) FetchContent_Declare( pico_sdk GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk.git GIT_TAG ${PICO_SDK_FETCH_FROM_GIT_TAG} ) FetchContent_Populate(pico_sdk) set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR}) endif() if(NOT PICO_SDK_PATH) message(FATAL_ERROR "PICO_SDK_PATH is not set and PICO_SDK_FETCH_FROM_GIT is OFF") endif() get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") if(NOT EXISTS ${PICO_SDK_PATH}/pico_sdk_init.cmake) message(FATAL_ERROR "PICO_SDK_PATH does not contain pico_sdk_init.cmake: ${PICO_SDK_PATH}") endif() include(${PICO_SDK_PATH}/pico_sdk_init.cmake) project(product-vamp-pico VERSION ${VAMP_PROJECT_VERSION} LANGUAGES C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) pico_sdk_init() include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/font.cmake) set(VAMP_MODULUS_INCLUDE_DIR "" CACHE PATH "Path to the Modulus public include directory") 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() 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 src/vamp_style.cpp ${VAMP_FONT_SOURCE} src/vamp_pico/display.cpp src/vamp_pico/http_client.cpp src/vamp_pico/input.cpp src/vamp_pico/main.cpp src/vamp_pico/remote_display.cpp src/vamp_pico/touch.cpp src/vamp_protocol/page_control.cpp src/vamp_protocol/gesture.cpp ) target_include_directories(product-vamp-pico2w PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${VAMP_RESOLVED_MODULUS_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include/vamp_pico/capi ) target_compile_definitions(product-vamp-pico2w PRIVATE VAMP_PICO_WIFI_SSID="${VAMP_PICO_WIFI_SSID}" VAMP_PICO_WIFI_PASSPHRASE="${VAMP_PICO_WIFI_PASSPHRASE}" VAMP_ZERO_HOST="${VAMP_ZERO_HOST}" VAMP_ZERO_PORT=${VAMP_ZERO_PORT} ) target_link_libraries(product-vamp-pico2w PRIVATE pico_stdlib hardware_i2c hardware_spi pico_cyw43_arch_lwip_threadsafe_background ) pico_enable_stdio_usb(product-vamp-pico2w 1) pico_enable_stdio_uart(product-vamp-pico2w 0) pico_add_extra_outputs(product-vamp-pico2w)