forked from electro/esp-irblaster
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
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})
|
|
|