summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt62
1 files changed, 57 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1c788ce..3d274bd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,20 +4,72 @@ project("relabsd")
include(FindPkgConfig)
-add_subdirectory(src)
-
# ${SRC_FILES} is recursively defined in the subdirectories.
-# Each subdirectory only adds the source files that are present at its level.
-
+# Each subdirectory adds only the source files that are present at its level.
+add_subdirectory(src)
add_executable(relabsd ${SRC_FILES})
+# Language parameters.
+enable_language(C)
+target_compile_features(relabsd PUBLIC c_variadic_macros)
+
+# We require libevdev.
pkg_search_module(LIBEVDEV REQUIRED libevdev)
include_directories(${LIBEVDEV_INCLUDE_DIRS})
target_link_libraries(relabsd ${LIBEVDEV_LIBRARIES})
-target_compile_features(relabsd PUBLIC c_variadic_macros)
+# Be loud about dubious code.
if (CMAKE_COMPILER_IS_GNUCC)
message(STATUS "CMake is using GNUCC. Verbose flags are activated.")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wextra")
endif (CMAKE_COMPILER_IS_GNUCC)
+# Highest debug level is defined here to be able to access it in CMake.
+set(RELABSD_HIGHEST_DEBUG_LEVEL 100)
+target_compile_definitions(
+ relabsd
+ PUBLIC
+ "-DRELABSD_HIGHEST_DEBUG_LVL=${RELABSD_HIGHEST_DEBUG_LEVEL}"
+)
+message(
+ STATUS
+ "[CONST] Highest debug level set to ${RELABSD_HIGHEST_DEBUG_LEVEL}."
+)
+
+set(
+ RELABSD_DEBUG_LEVEL
+ "0"
+ CACHE
+ INTEGER
+ "Debug verbosity level[0-${RELABSD_HIGHEST_DEBUG_LEVEL}]."
+)
+target_compile_definitions(
+ relabsd
+ PUBLIC
+ "-DRELABSD_DEBUG_LVL=${RELABSD_DEBUG_LEVEL}"
+)
+message(STATUS "[OPTION] Debug level set to ${RELABSD_DEBUG_LEVEL}.")
+
+option(
+ RELABSD_ENABLE_ERROR_LOCATION
+ "Debug/error messages contain source file and line information."
+ OFF
+)
+if (RELABSD_ENABLE_ERROR_LOCATION)
+ target_compile_definitions(relabsd PUBLIC RELABSD_ENABLE_ERROR_LOCATION)
+ message(STATUS "[OPTION] Debug/error messages display source file and line.")
+else ()
+ message(
+ STATUS
+ "[OPTION] Debug/error messages do not display source file and line."
+ )
+endif (RELABSD_ENABLE_ERROR_LOCATION)
+
+
+option(RELABSD_REAL_FUZZ "Fuzz is relative to the real device's events." ON)
+if (RELABSD_REAL_FUZZ)
+ target_compile_definitions(relabsd PUBLIC RELABSD_REAL_FUZZ)
+ message(STATUS "[OPTION] Fuzz is relative to the real device's events.")
+else ()
+ message(STATUS "[OPTION] Fuzz is relative to the emulated device's events.")
+endif (RELABSD_REAL_FUZZ)