open-story-teller/software/CMakeLists.txt
2023-04-18 16:20:41 +02:00

133 lines
5.1 KiB
CMake

# ==================================================================================================
# OPEN STORY TELLER MAIN CMAKE BUILD FILE
# (see README.md for invokable options)
# Default target: TBD ?
# ==================================================================================================
cmake_minimum_required(VERSION 3.12)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(PROJECT_NAME open-story-teller)
# ==================================================================================================
# BUILD TYPE
# ==================================================================================================
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)
# ==================================================================================================
# OST COMMON FILES
# ==================================================================================================
set(OST_SRCS
src/main.c
src/sdcard.c
src/debug.c
src/picture.c
src/filesystem.c
src/ost_tasker.c
src/ff/ff.c
src/ff/ffsystem.c
src/ff/ff_stubs.c
)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/library
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/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()