cmake: make pip_feature_flag take DESCRIPTION and DEFAULT, describe all feature flags
This commit is contained in:
+27
-19
@@ -69,9 +69,14 @@ option(INTROSPECTION "Build with introspection" OFF)
|
||||
option(TESTS "Build tests" OFF)
|
||||
option(TESTS_RUN "Run tests before install step" OFF)
|
||||
option(COVERAGE "Build project with coverage info" OFF)
|
||||
function(pip_feature_flag NAME)
|
||||
# pip_feature_flag(NAME DESCRIPTION DEFAULT [DEPENDENCY...])
|
||||
# DEFAULT is ON/OFF, DEPENDENCY is a name of another feature flag this one requires.
|
||||
function(pip_feature_flag NAME DESCRIPTION DEFAULT)
|
||||
if(NOT DEFAULT MATCHES "^(ON|OFF|TRUE|FALSE)$")
|
||||
message(FATAL_ERROR "pip_feature_flag: invalid default '${DEFAULT}' for ${NAME}")
|
||||
endif()
|
||||
set(_deps ${ARGN})
|
||||
option(${NAME} "Feature flag" ON)
|
||||
option(${NAME} "${DESCRIPTION}" ${DEFAULT})
|
||||
list(APPEND PIP_FEATURE_FLAGS "${NAME}")
|
||||
set(PIP_FEATURE_FLAGS "${PIP_FEATURE_FLAGS}" PARENT_SCOPE)
|
||||
set(PIP_FEATURE_DEPS_${NAME} "${_deps}" PARENT_SCOPE)
|
||||
@@ -96,23 +101,23 @@ macro(pip_resolve_feature_flags)
|
||||
endmacro()
|
||||
|
||||
# Base flags (no dependencies)
|
||||
pip_feature_flag(PIP_HAS_FILESYSTEM)
|
||||
pip_feature_flag(PIP_HAS_THREADS)
|
||||
pip_feature_flag(PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_HAS_FFT)
|
||||
pip_feature_flag(PIP_HAS_SERIAL)
|
||||
pip_feature_flag(PIP_BUILD_IO_UTILS)
|
||||
pip_feature_flag(PIP_HAS_FILESYSTEM "Filesystem support" ON)
|
||||
pip_feature_flag(PIP_HAS_THREADS "Threads (std::thread) support" ON)
|
||||
pip_feature_flag(PIP_HAS_SOCKET "Sockets support" ON)
|
||||
pip_feature_flag(PIP_HAS_FFT "FFT support" ON)
|
||||
pip_feature_flag(PIP_HAS_SERIAL "Serial port (libusb) support" ON)
|
||||
pip_feature_flag(PIP_BUILD_IO_UTILS "Build io_utils module" ON)
|
||||
# Dependent flags
|
||||
pip_feature_flag(PIP_HAS_DYNLIB PIP_HAS_FILESYSTEM)
|
||||
pip_feature_flag(PIP_HAS_PROCESS PIP_HAS_THREADS)
|
||||
pip_feature_flag(INTROSPECTION PIP_HAS_THREADS PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_BUILD_CONSOLE PIP_HAS_THREADS)
|
||||
pip_feature_flag(PIP_BUILD_FFTW PIP_HAS_FFT)
|
||||
pip_feature_flag(PIP_BUILD_HTTP_CLIENT PIP_HAS_THREADS)
|
||||
pip_feature_flag(PIP_BUILD_HTTP_SERVER PIP_HAS_THREADS PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_BUILD_MQTT_CLIENT PIP_HAS_THREADS PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_BUILD_CLIENT_SERVER PIP_HAS_THREADS PIP_HAS_SOCKET PIP_BUILD_IO_UTILS)
|
||||
pip_feature_flag(PIP_BUILD_CLOUD PIP_HAS_THREADS PIP_HAS_SOCKET PIP_BUILD_IO_UTILS)
|
||||
pip_feature_flag(PIP_HAS_DYNLIB "Dynamic library loading (dlopen) support" ON PIP_HAS_FILESYSTEM)
|
||||
pip_feature_flag(PIP_HAS_PROCESS "Process spawning support" ON PIP_HAS_THREADS)
|
||||
pip_feature_flag(INTROSPECTION "Build with introspection (slower runtime)" OFF PIP_HAS_THREADS PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_BUILD_CONSOLE "Build console module" ON PIP_HAS_THREADS)
|
||||
pip_feature_flag(PIP_BUILD_FFTW "Build fftw module" ON PIP_HAS_FFT)
|
||||
pip_feature_flag(PIP_BUILD_HTTP_CLIENT "Build http_client module" ON PIP_HAS_THREADS)
|
||||
pip_feature_flag(PIP_BUILD_HTTP_SERVER "Build http_server module" ON PIP_HAS_THREADS PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_BUILD_MQTT_CLIENT "Build mqtt_client module" ON PIP_HAS_THREADS PIP_HAS_SOCKET)
|
||||
pip_feature_flag(PIP_BUILD_CLIENT_SERVER "Build client_server module" ON PIP_HAS_THREADS PIP_HAS_SOCKET PIP_BUILD_IO_UTILS)
|
||||
pip_feature_flag(PIP_BUILD_CLOUD "Build cloud module" ON PIP_HAS_THREADS PIP_HAS_SOCKET PIP_BUILD_IO_UTILS)
|
||||
option(PIP_FFTW_F "Support fftw module for float" ON)
|
||||
option(PIP_FFTW_L "Support fftw module for long double" ON)
|
||||
option(PIP_FFTW_Q "Support fftw module for quad double" OFF)
|
||||
@@ -145,7 +150,10 @@ set(PIP_SRC_MODULES "console;crypt;compress;usb;fftw;opencl;io_utils;client_serv
|
||||
foreach(_m ${PIP_SRC_MODULES})
|
||||
set(PIP_MSG_${_m} "no")
|
||||
string(TOUPPER "${_m}" _mu)
|
||||
option(PIP_BUILD_${_mu} "Build \"${_m}\" module" ON)
|
||||
list(FIND PIP_FEATURE_FLAGS "PIP_BUILD_${_mu}" _ff_idx)
|
||||
if(_ff_idx EQUAL -1)
|
||||
option(PIP_BUILD_${_mu} "Build \"${_m}\" module" ON)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
macro(pip_module NAME LIBS LABEL INCLUDES SOURCES MSG)
|
||||
|
||||
Reference in New Issue
Block a user