Files
product-vamp/cmake/pico.cmake
T
khodowany d7919f148d
ci / checks (push) Successful in 38m56s
Cleanup
2026-09-08 08:53:41 -05:00

107 lines
3.8 KiB
CMake

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()
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
src/vamp_style/font.cpp
src/vamp_pico/display.cpp
src/vamp_pico/http_client.cpp
src/vamp_pico/main.cpp
src/vamp_pico/remote_display.cpp
src/vamp_pico/touch.cpp
src/vamp_protocol/page_control.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)