ref: 761c775043d22718811297147f5bd75c6118d84e
parent: 3036b5859894be1bc4523d7e309fca5015728679
author: James Larrowe <[email protected]>
date: Sun Oct 4 09:11:32 EDT 2020
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 :|
--- a/.github/workflows/testing.yml
+++ b/.github/workflows/testing.yml
@@ -14,11 +14,11 @@
- 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:
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,18 +12,6 @@
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 @@
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 @@
-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()
--- a/Makefile
+++ b/Makefile
@@ -198,7 +198,7 @@
-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!
--- 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
*/
@@ -21,10 +21,6 @@
#define noreturn_
#define unused_
#define trap_
-#endif
-
-#ifndef DEVELOP
- #define DEVELOP 0
#endif
/* Macros for stringification */