102 lines
2.2 KiB
Python
102 lines
2.2 KiB
Python
# 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})
|
|
"""
|