113 lines
4.0 KiB
CMake
113 lines
4.0 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 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/pico_artwork.cmake)
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/theme.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
|
|
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/screen.cpp
|
|
src/vamp_pico/touch.cpp
|
|
src/vamp_protocol/page_control.cpp
|
|
src/vamp_protocol/gesture.cpp
|
|
)
|
|
vamp_add_pico_artwork(product_vamp_pico2w)
|
|
vamp_add_theme(product_vamp_pico2w)
|
|
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)
|