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. if (CMAKE_C_COMPILER_ID STREQUAL "GNU") add_compile_options(-Wall -Wextra -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 -pedantic -fanalyzer -fstack-check) elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang") add_compile_options(-Weverything -Wno-padded -Wno-disabled-macro-expansion -pedantic) endif() if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) endif() if ( BUILD_IRCV3 ) message("IRCv3 capabilities are going to be built.") add_compile_definitions(UIRC_IRCV3) 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}) if ( BUILD_TESTS ) message("Tests are going to be built.") enable_testing() add_subdirectory(tests) endif()