|
|
|
@@ -8,7 +8,8 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
|
|
|
|
|
|
find_package(modulus CONFIG REQUIRED COMPONENTS boost_json openssl raylib)
|
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/build_python.cmake)
|
|
|
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/theme.cmake)
|
|
|
|
|
find_package(ligo CONFIG REQUIRED)
|
|
|
|
|
find_package(noto CONFIG REQUIRED)
|
|
|
|
|
find_package(luma CONFIG REQUIRED)
|
|
|
|
@@ -51,12 +52,13 @@ set(VAMP_STYLE_SOURCES
|
|
|
|
|
src/vamp_style.cpp
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_library(vamp-style STATIC ${VAMP_STYLE_SOURCES})
|
|
|
|
|
target_include_directories(vamp-style PUBLIC
|
|
|
|
|
add_library(vamp_style STATIC ${VAMP_STYLE_SOURCES})
|
|
|
|
|
vamp_add_theme(vamp_style)
|
|
|
|
|
target_include_directories(vamp_style PUBLIC
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
|
|
)
|
|
|
|
|
target_compile_features(vamp-style PUBLIC cxx_std_17)
|
|
|
|
|
target_link_libraries(vamp-style PUBLIC
|
|
|
|
|
target_compile_features(vamp_style PUBLIC cxx_std_17)
|
|
|
|
|
target_link_libraries(vamp_style PUBLIC
|
|
|
|
|
modulus::modulus
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@@ -65,12 +67,12 @@ set(VAMP_PROTOCOL_SOURCES
|
|
|
|
|
src/vamp_protocol/page_control.cpp
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_library(vamp-protocol STATIC ${VAMP_PROTOCOL_SOURCES})
|
|
|
|
|
target_include_directories(vamp-protocol PUBLIC
|
|
|
|
|
add_library(vamp_protocol STATIC ${VAMP_PROTOCOL_SOURCES})
|
|
|
|
|
target_include_directories(vamp_protocol PUBLIC
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
|
|
)
|
|
|
|
|
target_compile_features(vamp-protocol PUBLIC cxx_std_17)
|
|
|
|
|
target_link_libraries(vamp-protocol PUBLIC
|
|
|
|
|
target_compile_features(vamp_protocol PUBLIC cxx_std_17)
|
|
|
|
|
target_link_libraries(vamp_protocol PUBLIC
|
|
|
|
|
modulus::modulus
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
@@ -97,18 +99,18 @@ set(VAMP_CORE_SOURCES
|
|
|
|
|
src/vamp_zero/ui.cpp
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_library(vamp-zero-core STATIC ${VAMP_CORE_SOURCES})
|
|
|
|
|
target_include_directories(vamp-zero-core PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated)
|
|
|
|
|
target_include_directories(vamp-zero-core PUBLIC
|
|
|
|
|
add_library(vamp_zero_core STATIC ${VAMP_CORE_SOURCES})
|
|
|
|
|
target_include_directories(vamp_zero_core PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated)
|
|
|
|
|
target_include_directories(vamp_zero_core PUBLIC
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
|
|
)
|
|
|
|
|
target_compile_features(vamp-zero-core PUBLIC cxx_std_23)
|
|
|
|
|
target_compile_definitions(vamp-zero-core PUBLIC
|
|
|
|
|
target_compile_features(vamp_zero_core PUBLIC cxx_std_23)
|
|
|
|
|
target_compile_definitions(vamp_zero_core PUBLIC
|
|
|
|
|
VAMP_GIT_SHA="${VAMP_GIT_SHA}"
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(vamp-zero-core PUBLIC
|
|
|
|
|
vamp-style
|
|
|
|
|
vamp-protocol
|
|
|
|
|
target_link_libraries(vamp_zero_core PUBLIC
|
|
|
|
|
vamp_style
|
|
|
|
|
vamp_protocol
|
|
|
|
|
modulus::modulus
|
|
|
|
|
modulus::boost_json
|
|
|
|
|
modulus::openssl
|
|
|
|
@@ -120,9 +122,9 @@ target_link_libraries(vamp-zero-core PUBLIC
|
|
|
|
|
PRIVATE modulus::raylib
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_executable(vamp-zero src/vamp_zero/main.cpp)
|
|
|
|
|
target_compile_features(vamp-zero PRIVATE cxx_std_23)
|
|
|
|
|
target_link_libraries(vamp-zero PRIVATE vamp-zero-core)
|
|
|
|
|
add_executable(vamp_zero src/vamp_zero/main.cpp)
|
|
|
|
|
target_compile_features(vamp_zero PRIVATE cxx_std_23)
|
|
|
|
|
target_link_libraries(vamp_zero PRIVATE vamp_zero_core)
|
|
|
|
|
|
|
|
|
|
if(BUILD_TESTING)
|
|
|
|
|
add_subdirectory(tests)
|
|
|
|
@@ -137,26 +139,29 @@ file(GLOB_RECURSE VAMP_GENERATOR_INPUTS CONFIGURE_DEPENDS
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/data/expected/*.json
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/*.py
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/**/*.py
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/requirements.txt
|
|
|
|
|
${VAMP_SHARED_PYTHON_INPUTS}
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/palette.json
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/theme.py
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/build_python.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/theme.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/package/assets/fonts/*
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/package/assets/fonts/**/*
|
|
|
|
|
)
|
|
|
|
|
set(VAMP_GENERATED_ASSETS_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated-assets)
|
|
|
|
|
set(VAMP_GENERATED_ASSETS_STAMP ${CMAKE_CURRENT_BINARY_DIR}/generated-assets.stamp)
|
|
|
|
|
set(VAMP_GENERATED_ASSETS_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated_assets)
|
|
|
|
|
set(VAMP_GENERATED_ASSETS_STAMP ${CMAKE_CURRENT_BINARY_DIR}/generated_assets.stamp)
|
|
|
|
|
set(VAMP_ENGRAVING_JOBS 2 CACHE STRING "Maximum parallel Python engraving workers (1-16)")
|
|
|
|
|
set(VAMP_ENGRAVING_CACHE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/build_common/engraving-cache" CACHE PATH "Shared build-only page cache; empty disables caching")
|
|
|
|
|
set(VAMP_ENGRAVING_CACHE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/build_common/engraving_cache" CACHE PATH "Shared build-only page cache; empty disables caching")
|
|
|
|
|
set(VAMP_ENGRAVING_CACHE_ARGS)
|
|
|
|
|
if(VAMP_ENGRAVING_CACHE_DIR)
|
|
|
|
|
list(APPEND VAMP_ENGRAVING_CACHE_ARGS --engraving-cache "${VAMP_ENGRAVING_CACHE_DIR}")
|
|
|
|
|
endif()
|
|
|
|
|
string(JOIN "\n" VAMP_GENERATOR_INPUT_MANIFEST ${VAMP_GENERATOR_INPUTS})
|
|
|
|
|
file(CONFIGURE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated-assets.inputs
|
|
|
|
|
file(CONFIGURE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated_assets.inputs
|
|
|
|
|
CONTENT "@VAMP_GENERATOR_INPUT_MANIFEST@\n" @ONLY)
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${VAMP_GENERATED_ASSETS_STAMP}
|
|
|
|
|
BYPRODUCTS ${VAMP_GENERATED_ASSETS_DIR}/catalog.db
|
|
|
|
|
COMMAND ${Python3_EXECUTABLE}
|
|
|
|
|
-u
|
|
|
|
|
COMMAND ${VAMP_PYTHON_COMMAND}
|
|
|
|
|
-m generator
|
|
|
|
|
--data-dir ${CMAKE_CURRENT_SOURCE_DIR}/data
|
|
|
|
|
--output-dir ${VAMP_GENERATED_ASSETS_DIR}
|
|
|
|
@@ -167,30 +172,30 @@ add_custom_command(
|
|
|
|
|
${VAMP_ENGRAVING_CACHE_ARGS}
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E touch ${VAMP_GENERATED_ASSETS_STAMP}
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
DEPENDS ${VAMP_GENERATOR_INPUTS} ${CMAKE_CURRENT_BINARY_DIR}/generated-assets.inputs
|
|
|
|
|
DEPENDS ${VAMP_GENERATOR_INPUTS} ${CMAKE_CURRENT_BINARY_DIR}/generated_assets.inputs
|
|
|
|
|
USES_TERMINAL
|
|
|
|
|
VERBATIM
|
|
|
|
|
)
|
|
|
|
|
add_custom_target(vamp-generated-assets ALL DEPENDS ${VAMP_GENERATED_ASSETS_STAMP})
|
|
|
|
|
add_custom_target(vamp_generated_assets ALL DEPENDS ${VAMP_GENERATED_ASSETS_STAMP})
|
|
|
|
|
if(BUILD_TESTING)
|
|
|
|
|
add_dependencies(product-vamp-test vamp-generated-assets)
|
|
|
|
|
add_dependencies(product_vamp_test vamp_generated_assets)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
install(TARGETS vamp-zero
|
|
|
|
|
install(TARGETS vamp_zero
|
|
|
|
|
RUNTIME DESTINATION zero/bin
|
|
|
|
|
)
|
|
|
|
|
install(FILES package/config/vamp.example.json DESTINATION zero/config)
|
|
|
|
|
install(DIRECTORY ${VAMP_GENERATED_ASSETS_DIR}/ DESTINATION zero/share/product-vamp
|
|
|
|
|
install(DIRECTORY ${VAMP_GENERATED_ASSETS_DIR}/ DESTINATION zero/share/product_vamp
|
|
|
|
|
PATTERN "*.json" EXCLUDE PATTERN "analysis" EXCLUDE)
|
|
|
|
|
install(PROGRAMS
|
|
|
|
|
package/zero/install-zero.sh
|
|
|
|
|
package/zero/start-ap.sh
|
|
|
|
|
package/zero/start-zero.sh
|
|
|
|
|
package/zero/install_zero.sh
|
|
|
|
|
package/zero/start_ap.sh
|
|
|
|
|
package/zero/start_zero.sh
|
|
|
|
|
DESTINATION zero
|
|
|
|
|
)
|
|
|
|
|
install(FILES
|
|
|
|
|
package/zero/product-vamp-ap.service
|
|
|
|
|
package/zero/product-vamp-zero.service
|
|
|
|
|
package/zero/product_vamp_ap.service
|
|
|
|
|
package/zero/product_vamp_zero.service
|
|
|
|
|
DESTINATION zero/systemd
|
|
|
|
|
)
|
|
|
|
|
install(FILES package/pico/wiring.md DESTINATION pico)
|
|
|
|
@@ -203,23 +208,23 @@ endif()
|
|
|
|
|
if(VAMP_BUILD_ZERO_IMAGE)
|
|
|
|
|
find_program(DOCKER_EXECUTABLE docker REQUIRED)
|
|
|
|
|
|
|
|
|
|
set(VAMP_ZERO_IMAGE_CONTEXT ${CMAKE_CURRENT_BINARY_DIR}/zero-image-context)
|
|
|
|
|
set(VAMP_ZERO_IMAGE_TAR ${CMAKE_CURRENT_BINARY_DIR}/product-vamp-zero-linux-arm64.docker.tar)
|
|
|
|
|
set(VAMP_ZERO_IMAGE_CONTEXT ${CMAKE_CURRENT_BINARY_DIR}/zero_image_context)
|
|
|
|
|
set(VAMP_ZERO_IMAGE_TAR ${CMAKE_CURRENT_BINARY_DIR}/product_vamp_zero_linux_arm64.docker.tar)
|
|
|
|
|
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${VAMP_ZERO_IMAGE_TAR}
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E rm -rf ${VAMP_ZERO_IMAGE_CONTEXT}
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/bin
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vamp-zero> ${VAMP_ZERO_IMAGE_CONTEXT}/usr/bin/vamp-zero
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product_vamp
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vamp_zero> ${VAMP_ZERO_IMAGE_CONTEXT}/usr/bin/vamp_zero
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy package/zero/Dockerfile ${VAMP_ZERO_IMAGE_CONTEXT}/Dockerfile
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DSOURCE=${VAMP_GENERATED_ASSETS_DIR} -DDESTINATION=${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp -P cmake/runtime_assets.cmake
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp/config
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy package/config/vamp.example.json ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product-vamp/config/vamp.example.json
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DSOURCE=${VAMP_GENERATED_ASSETS_DIR} -DDESTINATION=${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product_vamp -P cmake/runtime_assets.cmake
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product_vamp/config
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy package/config/vamp.example.json ${VAMP_ZERO_IMAGE_CONTEXT}/usr/share/product_vamp/config/vamp.example.json
|
|
|
|
|
COMMAND ${BASH_EXECUTABLE} package/scripts/build_zero_image.sh ${VAMP_ZERO_IMAGE_CONTEXT} ${VAMP_ZERO_IMAGE_TAR} ${VAMP_ZERO_IMAGE_TAG}
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
DEPENDS
|
|
|
|
|
vamp-zero
|
|
|
|
|
vamp_zero
|
|
|
|
|
package/scripts/build_zero_image.sh
|
|
|
|
|
package/zero/Dockerfile
|
|
|
|
|
package/config/vamp.example.json
|
|
|
|
@@ -227,19 +232,23 @@ if(VAMP_BUILD_ZERO_IMAGE)
|
|
|
|
|
${VAMP_GENERATED_ASSETS_STAMP}
|
|
|
|
|
VERBATIM
|
|
|
|
|
)
|
|
|
|
|
add_custom_target(vamp-zero-image ALL DEPENDS ${VAMP_ZERO_IMAGE_TAR})
|
|
|
|
|
add_custom_target(vamp_zero_image ALL DEPENDS ${VAMP_ZERO_IMAGE_TAR})
|
|
|
|
|
install(FILES ${VAMP_ZERO_IMAGE_TAR} DESTINATION zero)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(VAMP_BUILD_PICO_FIRMWARE)
|
|
|
|
|
set(VAMP_PICO_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/pico-build)
|
|
|
|
|
set(VAMP_PICO_UF2 ${CMAKE_CURRENT_BINARY_DIR}/product-vamp-pico2w.uf2)
|
|
|
|
|
set(VAMP_PICO_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/pico_build)
|
|
|
|
|
set(VAMP_PICO_UF2 ${CMAKE_CURRENT_BINARY_DIR}/product_vamp_pico2w.uf2)
|
|
|
|
|
file(GLOB VAMP_PICO_SOURCES CONFIGURE_DEPENDS
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/pico.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/pico_artwork.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/pico_artwork.py
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/requirements.txt
|
|
|
|
|
${VAMP_SHARED_PYTHON_INPUTS}
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/palette.json
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generator/theme.py
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/build_python.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/theme.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/package/assets/fonts/petaluma/PetalumaScript.otf
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/vamp_options.cmake
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp
|
|
|
|
@@ -265,12 +274,15 @@ if(VAMP_BUILD_PICO_FIRMWARE)
|
|
|
|
|
"${VAMP_ZERO_HOST}"
|
|
|
|
|
"${VAMP_ZERO_PORT}"
|
|
|
|
|
"${modulus_INCLUDE_DIR}"
|
|
|
|
|
"${Python3_EXECUTABLE}"
|
|
|
|
|
"${MODULUS_PYTHON_RUNNER}"
|
|
|
|
|
"${MODULUS_PYTHON_ROOT}"
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
DEPENDS
|
|
|
|
|
package/scripts/build_pico_firmware.sh
|
|
|
|
|
${VAMP_PICO_SOURCES}
|
|
|
|
|
VERBATIM
|
|
|
|
|
)
|
|
|
|
|
add_custom_target(vamp-pico-firmware ALL DEPENDS ${VAMP_PICO_UF2})
|
|
|
|
|
add_custom_target(vamp_pico_firmware ALL DEPENDS ${VAMP_PICO_UF2})
|
|
|
|
|
install(FILES ${VAMP_PICO_UF2} DESTINATION pico)
|
|
|
|
|
endif()
|
|
|
|
|