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)