From 761c775043d22718811297147f5bd75c6118d84e Mon Sep 17 00:00:00 2001 From: James Larrowe Date: Sun, 4 Oct 2020 13:11:32 -0400 Subject: [PATCH] Modularize CMake build configuration Build type no longer defaults to Release (!) have separate options for extra warning flags and sanitizers toss DEVELOP macro Fix sanitizers with CMake while I'm at it :| --- .github/workflows/testing.yml | 4 ++-- CMakeLists.txt | 40 +++++++++++++---------------------- Makefile | 2 +- include/helpers.h | 6 +----- 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index e98944c9..1fea2686 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -14,11 +14,11 @@ jobs: - os: ubuntu-18.04 cc: gcc target: develop - cmakevars: -DDEVELOP=ON + cmakevars: -DSANITIZERS=ON -DMORE_WARNINGS=ON -DCMAKE_BUILD_TYPE=Debug - os: ubuntu-20.04 cc: gcc target: develop - cmakevars: -DDEVELOP=ON + cmakevars: -DSANITIZERS=ON -DMORE_WARNINGS=ON -DCMAKE_BUILD_TYPE=Debug fail-fast: false runs-on: ${{ matrix.os }} steps: diff --git a/CMakeLists.txt b/CMakeLists.txt index 4106b98a..fc0de9bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,18 +12,6 @@ cmake_policy(VERSION 3.0) project(rgbds LANGUAGES C) -option(DEVELOP "build in development mode" OFF) - -set(DEFAULT_BUILD_TYPE "Release") -set(DEVELOP_BUILD_TYPE "Debug") -if(NOT CMAKE_BUILD_TYPE) - if(DEVELOP) - set(CMAKE_BUILD_TYPE "${DEVELOP_BUILD_TYPE}") - else() - set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}") - endif() -endif() - # get real path of source and binary directories get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH) get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH) @@ -37,16 +25,26 @@ endif() include_directories("${PROJECT_SOURCE_DIR}/include") -if(DEVELOP) - add_definitions(-DDEVELOP) -endif() +option(SANITIZERS "Build with sanitizers enabled" OFF) +option(MORE_WARNINGS "Turn on more warnings" OFF) if(MSVC) add_compile_options(/W1 /MP) add_definitions(/D_CRT_SECURE_NO_WARNINGS) else() - if(DEVELOP) - add_compile_options(-Werror -Wall -Wextra -pedantic -Wno-type-limits + add_compile_options(-Wall -pedantic) + if(SANITIZERS) + set(SAN_FLAGS -fsanitize=shift -fsanitize=integer-divide-by-zero + -fsanitize=unreachable -fsanitize=vla-bound + -fsanitize=signed-integer-overflow -fsanitize=bounds + -fsanitize=object-size -fsanitize=bool -fsanitize=enum + -fsanitize=alignment -fsanitize=null) + add_compile_options(${SAN_FLAGS}) + link_libraries(${SAN_FLAGS}) + endif() + + if(MORE_WARNINGS) + add_compile_options(-Werror -Wextra -Wno-type-limits -Wno-sign-compare -Wformat -Wformat-security -Wformat-overflow=2 -Wformat-truncation=1 -Wformat-y2k -Wswitch-enum -Wunused -Wuninitialized -Wunknown-pragmas -Wstrict-overflow=5 @@ -54,14 +52,6 @@ else() -Wfloat-equal -Wshadow -Wcast-qual -Wcast-align -Wlogical-op -Wnested-externs -Wno-aggressive-loop-optimizations -Winline -Wundef -Wstrict-prototypes -Wold-style-definition) - - link_libraries(-fsanitize=shift -fsanitize=integer-divide-by-zero - -fsanitize=unreachable -fsanitize=vla-bound - -fsanitize=signed-integer-overflow -fsanitize=bounds - -fsanitize=object-size -fsanitize=bool -fsanitize=enum - -fsanitize=alignment -fsanitize=null) - else() - add_compile_options(-Wall -pedantic) endif() endif() diff --git a/Makefile b/Makefile index fe1cf548..ee66e399 100644 --- a/Makefile +++ b/Makefile @@ -198,7 +198,7 @@ develop: -fsanitize=unreachable -fsanitize=vla-bound \ -fsanitize=signed-integer-overflow -fsanitize=bounds \ -fsanitize=object-size -fsanitize=bool -fsanitize=enum \ - -fsanitize=alignment -fsanitize=null -DDEVELOP" CFLAGS="-ggdb3 -O0" + -fsanitize=alignment -fsanitize=null" CFLAGS="-ggdb3 -O0" # Targets for the project maintainer to easily create Windows exes. # This is not for Windows users! diff --git a/include/helpers.h b/include/helpers.h index f76a1db8..f3cf99b8 100644 --- a/include/helpers.h +++ b/include/helpers.h @@ -1,7 +1,7 @@ /* * This file is part of RGBDS. * - * Copyright (c) 2014-2018, RGBDS contributors. + * Copyright (c) 2014-2020, RGBDS contributors. * * SPDX-License-Identifier: MIT */ @@ -23,10 +23,6 @@ #define trap_ #endif -#ifndef DEVELOP - #define DEVELOP 0 -#endif - /* Macros for stringification */ #define STR(x) #x #define EXPAND_AND_STR(x) STR(x)