shithub: rgbds

Download patch

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