mirror of
https://github.com/arabine/open-story-teller.git
synced 2025-12-06 17:09:06 +01:00
156 lines
5.8 KiB
CMake
156 lines
5.8 KiB
CMake
# ==================================================================================================
|
|
# OPEN STORY TELLER MAIN CMAKE BUILD FILE
|
|
# (see README.md for invokable options)
|
|
# Default target: TBD ?
|
|
# ==================================================================================================
|
|
|
|
cmake_minimum_required(VERSION 3.13)
|
|
|
|
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
|
set(CMAKE_COLOR_MAKEFILE ON)
|
|
set(PROJECT_NAME open-story-teller)
|
|
|
|
# ==================================================================================================
|
|
# DEFAULT VARIABLES OPTIONS
|
|
# ==================================================================================================
|
|
if(NOT OST_BUNDLE)
|
|
set(OST_BUNDLE "RASPI_PICO")
|
|
endif()
|
|
|
|
if(NOT PICO_SDK_PATH)
|
|
set(PICO_SDK_PATH "../pico-sdk")
|
|
endif()
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
endif()
|
|
|
|
# ==================================================================================================
|
|
# OST COMMON FILES
|
|
# ==================================================================================================
|
|
set(OST_SRCS
|
|
system/main.c
|
|
system/sdcard.c
|
|
system/ff_diskio_sdcard.c
|
|
system/debug.c
|
|
system/picture.c
|
|
system/filesystem.c
|
|
system/ost_tasker.c
|
|
system/ff/ff.c
|
|
system/ff/ffsystem.c
|
|
system/ff/ff_stubs.c
|
|
)
|
|
include_directories(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/library
|
|
${CMAKE_CURRENT_SOURCE_DIR}/system
|
|
${CMAKE_CURRENT_SOURCE_DIR}/system/ff
|
|
)
|
|
|
|
# ==================================================================================================
|
|
# BUNDLE LONGAN NANO
|
|
# ==================================================================================================
|
|
if(${OST_BUNDLE} STREQUAL "LONGAN_NANO")
|
|
message("============= TARGET: LONGAN NANO =============")
|
|
|
|
add_definitions(-DOST_USE_FF_LIBRARY)
|
|
|
|
# ------ CPU
|
|
SET(CPU_TARGET_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cpu/gigadevice-gd32vf103)
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cpu/gigadevice-gd32vf103/include.cmake)
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpu/gigadevice-gd32vf103)
|
|
|
|
# ------ PLATFORM
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/platform/sipeed-longan-nano)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/platform/sipeed-longan-nano)
|
|
|
|
# ------ MIDDLEWARE
|
|
target_sources(${PROJECT_NAME} PRIVATE library/ili9341.c)
|
|
|
|
# link with gcc for software library such as float calculation (__udivdi3 ...)
|
|
add_library(BUNDLE_LIBRARIES INTERFACE)
|
|
target_link_libraries(BUNDLE_LIBRARIES INTERFACE "-Wl,--start-group"
|
|
gcc m c gigadevice-gd32vf103 sipeed-longan-nano
|
|
"-Wl,--end-group")
|
|
|
|
# ==================================================================================================
|
|
# BUNDLE MKR ZERO
|
|
# ==================================================================================================
|
|
elseif(${OST_BUNDLE} STREQUAL "MKR_ZERO")
|
|
message("============= TARGET: MKR ZERO =============")
|
|
|
|
add_definitions(-DOST_USE_FF_LIBRARY)
|
|
|
|
# ------ CPU
|
|
SET(CPU_TARGET_DIR ${CMAKE_CURRENT_SOURCE_DIR}/cpu/atmel-samd21)
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cpu/atmel-samd21/include.cmake)
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cpu/atmel-samd21)
|
|
|
|
# ------ PLATFORM
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/platform/arduino-mkr-zero)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/platform/arduino-mkr-zero)
|
|
|
|
# ------ MIDDLEWARE
|
|
target_sources(${PROJECT_NAME} PRIVATE library/st7789.c)
|
|
|
|
add_library(BUNDLE_LIBRARIES INTERFACE)
|
|
target_link_libraries(BUNDLE_LIBRARIES INTERFACE "-Wl,--start-group"
|
|
gcc m c stdc++ atmel-samd21 arduino-mkr-zero "-Wl,--end-group")
|
|
|
|
project(${PROJECT_NAME} LANGUAGES CXX C ASM)
|
|
|
|
# target_link_directories(BUNDLE_LIBRARIES INTERFACE ${CMAKE_SOURCE_DIR}/libs/CMSIS/CMSIS/Lib/GCC)
|
|
|
|
# ==================================================================================================
|
|
# BUNDLE RASPBERRY PICO
|
|
# ==================================================================================================
|
|
elseif(${OST_BUNDLE} STREQUAL "RASPI_PICO")
|
|
message("============= TARGET: RASPBERRY PICO =============")
|
|
|
|
add_definitions(-DOST_USE_FF_LIBRARY)
|
|
|
|
# initialize the SDK based on PICO_SDK_PATH
|
|
# note: this must happen before project()
|
|
include(${CMAKE_CURRENT_SOURCE_DIR}/platform/raspberry-pico-w/pico_sdk_import.cmake)
|
|
|
|
# add_library(BUNDLE_LIBRARIES INTERFACE)
|
|
# target_link_libraries(BUNDLE_LIBRARIES INTERFACE )
|
|
project(${PROJECT_NAME} LANGUAGES CXX C ASM)
|
|
|
|
# initialize the Raspberry Pi Pico SDK
|
|
# after project!
|
|
pico_sdk_init()
|
|
|
|
# ------ PLATFORM
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/platform/raspberry-pico-w)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/platform/raspberry-pico-w)
|
|
|
|
# ------ MIDDLEWARE
|
|
set(MIDDLEWARE_SRCS library/st7789.c)
|
|
|
|
add_executable(${PROJECT_NAME} ${OST_SRCS} ${MIDDLEWARE_SRCS})
|
|
|
|
# ------ Link
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC "-Wl,--start-group"
|
|
gcc m c stdc++ raspberry-pico-w pico_stdlib hardware_spi hardware_dma "-Wl,--end-group")
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
|
|
|
|
pico_add_extra_outputs(${PROJECT_NAME})
|
|
else()
|
|
message("============= DEFAULT TARGET: LINUX CONSOLE ============= ")
|
|
endif()
|
|
|
|
# ==================================================================================================
|
|
# CUSTOM TARGETS
|
|
# ==================================================================================================
|
|
add_custom_target(RaspberryPico
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-DOST_BUNDLE=RASPI_PICO
|
|
-DPICO_SDK_PATH=../pico-sdk
|
|
-DPICO_BOARD=pico_w
|
|
-DCMAKE_BUILD_TYPE=Debug
|
|
-B "${CMAKE_CURRENT_BINARY_DIR}/RaspberryPico"
|
|
-S "${CMAKE_SOURCE_DIR}"
|
|
COMMAND ${CMAKE_COMMAND} --build "${CMAKE_CURRENT_BINARY_DIR}/RaspberryPico"
|
|
)
|