cmake_minimum_required(VERSION 3.16) project(microirc LANGUAGES C) # NOTE: Do these seem too annoying? Try writing good code then. # Code that triggers these warnings will not be accepted unless it has a good reason to trigger them. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -Werror -Wformat-overflow=2 -Wformat-security -Winit-self -Wstrict-overflow=2 -Wstringop-overflow=2 -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wtrampolines -Wfloat-equal -Wshadow -Wunsafe-loop-optimizations -Wparentheses -fanalyzer -fstack-protector") if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) endif() if ( BUILD_IRCV3 ) add_definitions(-DUIRC_IRCV3) endif() if ( BUILD_TESTS ) enable_testing() add_subdirectory(tests) endif() set(build_FILES src/assemblers.c src/misc.c src/tokenizers.c src/validators.c ) if ( BUILD_HELPERS ) message("Helper functions are going to be built.") set(build_FILES ${build_FILES} src/helpers.c src/taghelpers.c) endif() add_library(uirc SHARED ${build_FILES}) set_property(TARGET uirc PROPERTY C_STANDARD 99) install(DIRECTORY "${CMAKE_SOURCE_DIR}/include/" DESTINATION "include/uirc" FILES_MATCHING PATTERN "*.h" ) install(TARGETS uirc DESTINATION ${CMAKE_INSTALL_BINDIR})