shithub: rgbds

Download patch

ref: fdfc02ab963ed2ccdcae08cb3ad7231bf9b40bda
parent: fc7f042ad6ee4b5af83cf7908e5621a184864ea0
parent: 761c775043d22718811297147f5bd75c6118d84e
author: Eldred Habert <[email protected]>
date: Sun Oct 4 15:45:20 EDT 2020

Merge pull request #583 from JL2210/cmake-build-type

Modularize CMake build configuration

--- 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 */