You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

73 lines
2.3 KiB

cmake_minimum_required(VERSION 3.13)
project(lib-console)
add_subdirectory("lib/argtable3")
file(GLOB CONSOLE_SOURCES "src/*.c")
# Console config options
# Line buffer length
set(CONSOLE_LINE_BUF_LEN "255" CACHE STRING "Line buffer length (max command size)")
# Max number of CLI args
set(CONSOLE_MAX_NUM_ARGS "64" CACHE STRING "Max number of arguments for a command")
# Prompt buffer length
set(CONSOLE_PROMPT_MAX_LEN "32" CACHE STRING "Max prompt string length")
# CLI history length
set(CONSOLE_HISTORY_LEN "32" CACHE STRING "Console history length")
option(CONSOLE_FILE_SUPPORT "Support filesystem operations (history save/load)" ON)
option(CONSOLE_USE_FILE_IO_STREAMS "Use FILE* based console I/O" ON)
option(CONSOLE_USE_TERMIOS "Use unistd/termios to set nonblocking mode & implement bytes available check" ON)
option(CONSOLE_USE_MEMSTREAM "Allow using open_memstream() to generate command hints and report argtable errors" ON)
if(CONSOLE_USE_TERMIOS AND NOT CONSOLE_USE_FILE_IO_STREAMS)
message( FATAL_ERROR "Can't use TERMIOS without FILE_IO_STREAMS" )
endif()
option(CONSOLE_USE_FREERTOS "Use FreeRTOS" ON)
option(CONSOLE_USE_PTHREADS "Use pthreads" OFF)
# Default timeout for CSP commands
set(CONSOLE_CSP_DEF_TIMEOUT_MS "3000" CACHE STRING "Default timeout for CSP commands (milliseconds)")
option(CONSOLE_TESTING_ALLOC_FUNCS "Test the internal console_malloc etc. functions on startup (with asserts)" OFF)
configure_file(
"include/console/config.h.in"
"include/console/config.h"
)
add_library(console ${CONSOLE_SOURCES})
# Enable extra warnings
#set_target_properties(console PROPERTIES COMPILE_FLAGS "-Wall -Wextra" )
target_include_directories(console
PUBLIC "include" "${CMAKE_CURRENT_BINARY_DIR}/include" # this is where the generated config header is placed
PRIVATE "src"
)
# Link libraries
set(LIBRARIES argtable3)
if(ESP_PLATFORM)
set(CONSOLE_USE_FREERTOS ON)
set(CONSOLE_USE_PTHREADS OFF)
# special hack for ESP-IDF is needed to allow implementing extern prototypes in main
set(LIBRARIES ${LIBRARIES} idf::main)
endif()
if(NOT CONSOLE_USE_FREERTOS AND NOT CONSOLE_USE_PTHREADS)
message( FATAL_ERROR "Required either FreeRTOS or PTHREADS!" )
endif()
if(CONSOLE_USE_PTHREADS)
set(LIBRARIES ${LIBRARIES} pthread)
endif()
target_link_libraries(console ${LIBRARIES})