# build/config.py from pathlib import Path import os SRC_DIR = Path("src") TEST_DIR = Path("tests") OBJ_DIR = Path("obj") BIN_DIR = Path("bin") TARGET = BIN_DIR / "sls" TEST_TARGET = BIN_DIR / "sls_tests" PICO_SDK_PATH = Path(os.environ.get("PICO_SDK_PATH", Path.home() / "pico/pico-sdk")) PICO_BUILD_DIR = Path("build_pico") PICO_TOOLCHAIN_PATH = Path("pico_arm_gcc_toolchain.cmake") COMMON_FLAGS = ["-std=c99", "-Wall", "-Wextra", "-Werror", "-Iinclude", "-g"] TEST_FLAGS = ["-std=c99", "-Wall", "-Wextra", "-Wno-unused-function", "-Werror", "-Iinclude", "-g", "-O0"] MACOS_FLAGS = ["-std=c99", "-Wall", "-Wextra", "-Werror", "-Iinclude", "-g", "-mmacosx-version-min=10.13"] MSVC_FLAGS = ["/std:c11", "/Zi", "/Iinclude"] MSVC_TEST_FLAGS = MSVC_FLAGS + [] PICO_TOOLCHAIN_TEMPLATE = """set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus) set(CMAKE_C_COMPILER arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER arm-none-eabi-g++) set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) set(CMAKE_C_FLAGS_INIT "-mcpu=cortex-m0plus -mthumb") set(CMAKE_CXX_FLAGS_INIT "-mcpu=cortex-m0plus -mthumb") set(CMAKE_ASM_FLAGS_INIT "-mcpu=cortex-m0plus -mthumb") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) """ RP2040_CMAKE_TEMPLATE = """cmake_minimum_required(VERSION 3.13) set(PICO_SDK_PATH "{pico_sdk_path}") include({pico_sdk_path}/external/pico_sdk_import.cmake) project({project_name} C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) pico_sdk_init() add_executable({project_name} {source_files} ) set_target_properties({project_name} PROPERTIES OUTPUT_NAME "{project_name}.elf" SUFFIX "" ) target_include_directories({project_name} PRIVATE ${{CMAKE_CURRENT_LIST_DIR}}/include ) target_compile_definitions({project_name} PRIVATE PICO_BUILD=1 GIT_COMMIT_HASH="{git_hash}" ) target_link_libraries({project_name} pico_stdlib hardware_uart hardware_gpio ) pico_enable_stdio_usb({project_name} 1) pico_enable_stdio_uart({project_name} 1) pico_add_extra_outputs({project_name}) """