diff --git a/.gitignore b/.gitignore index f53fd04af..79a4f896d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ *.gcno *.gcda *.gcov +/compile_flags.txt CMakeCache.txt CMakeFiles/ cmake_install.cmake diff --git a/Makefile b/Makefile index 6f70ab8db..315b0703e 100644 --- a/Makefile +++ b/Makefile @@ -33,11 +33,13 @@ WARNFLAGS := -Wall -pedantic -Wno-unknown-warning-option \ # Overridable CXXFLAGS CXXFLAGS ?= -O3 -flto -DNDEBUG # Non-overridable CXXFLAGS -REALCXXFLAGS := ${CXXFLAGS} ${WARNFLAGS} -std=c++20 -I include -fno-exceptions -fno-rtti +REQUIREDCXXFLAGS := -std=c++20 -I include -fno-exceptions -fno-rtti +REALCXXFLAGS := ${CXXFLAGS} ${WARNFLAGS} ${REQUIREDCXXFLAGS} # Overridable LDFLAGS LDFLAGS ?= # Non-overridable LDFLAGS -REALLDFLAGS := ${LDFLAGS} ${WARNFLAGS} -DBUILD_VERSION_STRING=\"${VERSION_STRING}\" +REQUIREDLDFLAGS := -DBUILD_VERSION_STRING=\"${VERSION_STRING}\" +REALLDFLAGS := ${LDFLAGS} ${WARNFLAGS} ${REQUIREDLDFLAGS} # Wrapper around bison that passes flags depending on what the version supports BISON := src/bison.sh @@ -250,8 +252,10 @@ format: # Target used in development to check code with clang-tidy. # Requires Bison-generated header files to exist. -tidy: src/asm/parser.hpp src/link/script.hpp +tidy: src/asm/parser.hpp src/link/script.hpp compile_flags.txt $Qclang-tidy -p . $$(git ls-files '*.[hc]pp') +compile_flags.txt: + $Qprintf '%s\n' ${REQUIREDCXXFLAGS} ${REQUIREDLDFLAGS} >$@ # Target used in development to remove unused `#include` headers. iwyu: diff --git a/compile_flags.txt b/compile_flags.txt deleted file mode 100644 index 6b8032ce8..000000000 --- a/compile_flags.txt +++ /dev/null @@ -1,6 +0,0 @@ --std=c++20 --I -include --fno-exceptions --fno-rtti --fno-caret-diagnostics diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index e8c75d262..0adf52229 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -65,7 +65,6 @@ rgbds/ ├── .clang-tidy ├── CMakeLists.txt ├── CMakePresets.json -├── compile_flags.txt ├── Dockerfile └── Makefile ``` @@ -129,8 +128,6 @@ rgbds/ Defines how to build RGBDS with CMake. - **`CMakePresets.json`:** Defines some [presets](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html) useful for working with our CMake. -- **`compile_flags.txt`:** - Compiler flags for `clang-tidy`. - **`Dockerfile`:** Defines how to build RGBDS with Docker (which we do in CI to provide a [container image](https://github.com/gbdev/rgbds/pkgs/container/rgbds)). - **`Makefile`:**