# ================================================================================================== # 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()