diff options
Diffstat (limited to 'Meta')
-rw-r--r-- | Meta/CMake/common_compile_options.cmake | 12 | ||||
-rw-r--r-- | Meta/CMake/lagom_compile_options.cmake | 14 | ||||
-rw-r--r-- | Meta/CMake/serenity_compile_options.cmake | 48 | ||||
-rw-r--r-- | Meta/Lagom/CMakeLists.txt | 17 |
4 files changed, 75 insertions, 16 deletions
diff --git a/Meta/CMake/common_compile_options.cmake b/Meta/CMake/common_compile_options.cmake new file mode 100644 index 0000000000..073daa0bcb --- /dev/null +++ b/Meta/CMake/common_compile_options.cmake @@ -0,0 +1,12 @@ +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +add_compile_options(-Wall) +add_compile_options(-Wextra) + +if (NOT CMAKE_HOST_SYSTEM_NAME MATCHES SerenityOS) + # FIXME: Something makes this go crazy and flag unused variables that aren't flagged as such when building with the toolchain. + # Disable -Werror for now. + add_compile_options(-Werror) +endif() diff --git a/Meta/CMake/lagom_compile_options.cmake b/Meta/CMake/lagom_compile_options.cmake new file mode 100644 index 0000000000..08121f5629 --- /dev/null +++ b/Meta/CMake/lagom_compile_options.cmake @@ -0,0 +1,14 @@ +include(${CMAKE_CURRENT_LIST_DIR}/common_compile_options.cmake) + +add_compile_options(-Wno-implicit-const-int-float-conversion) +add_compile_options(-Wno-literal-suffix) +add_compile_options(-Wno-maybe-uninitialized) +add_compile_options(-Wno-unknown-warning-option) +add_compile_options(-fsigned-char) +add_compile_options(-fno-exceptions) +add_compile_options(-fdiagnostics-color=always) +add_compile_options(-fPIC -g) +add_compile_options(-O2) +if (NOT ENABLE_FUZZERS) + add_compile_options(-fno-semantic-interposition) +endif() diff --git a/Meta/CMake/serenity_compile_options.cmake b/Meta/CMake/serenity_compile_options.cmake new file mode 100644 index 0000000000..bf7650cf1a --- /dev/null +++ b/Meta/CMake/serenity_compile_options.cmake @@ -0,0 +1,48 @@ +include(${CMAKE_CURRENT_LIST_DIR}/common_compile_options.cmake) + +# The following warnings are sorted by the "base" name (the part excluding the initial Wno or W). +add_compile_options(-Wno-address-of-packed-member) +add_compile_options(-Wcast-qual) +add_compile_options(-Wdeprecated-copy) +add_compile_options(-Wduplicated-cond) +add_compile_options(-Wformat=2) +add_compile_options(-Wimplicit-fallthrough) +add_compile_options(-Wlogical-op) +add_compile_options(-Wmisleading-indentation) +add_compile_options(-Wmissing-declarations) +add_compile_options(-Wnon-virtual-dtor) +add_compile_options(-Wsuggest-override) +add_compile_options(-Wno-unknown-warning-option) +add_compile_options(-Wundef) +add_compile_options(-Wunused) +add_compile_options(-Wno-unused-command-line-argument) +add_compile_options(-Wwrite-strings) + +add_compile_options(-fdiagnostics-color=always) +add_compile_options(-fno-delete-null-pointer-checks) +add_compile_options(-ffile-prefix-map=${SerenityOS_SOURCE_DIR}=.) +add_compile_options(-fno-exceptions) +add_compile_options(-fno-semantic-interposition) +add_compile_options(-fsized-deallocation) +add_compile_options(-fstack-clash-protection) +add_compile_options(-fstack-protector-strong) +add_compile_options(-g1) + +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options(-Wno-literal-suffix) + add_compile_options(-Wno-maybe-uninitialized) + # Only ignore expansion-to-defined for g++, clang's implementation doesn't complain about function-like macros + add_compile_options(-Wno-expansion-to-defined) + add_compile_options(-Wcast-align) + add_compile_options(-Wdouble-promotion) +elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang$") + add_compile_options(-Wno-user-defined-literals) + add_compile_options(-Wno-atomic-alignment) + add_compile_options(-Wno-implicit-const-int-float-conversion) + add_compile_options(-Wno-unused-const-variable) + add_compile_options(-Wno-unused-private-field) + add_compile_options(-fconstexpr-steps=16777216) + + # Clang doesn't add compiler_rt to the search path when compiling with -nostdlib. + link_directories(${TOOLCHAIN_ROOT}/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/${SERENITY_ARCH}-pc-serenity/) +endif() diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index 76b632a163..94ee50a227 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -60,22 +60,7 @@ if (ENABLE_FUZZERS_LIBFUZZER OR ENABLE_FUZZERS_OSSFUZZ) endif() include(wasm_spec_tests) - -add_compile_options(-fsigned-char) -add_compile_options(-Wno-unknown-warning-option -Wno-literal-suffix -Wno-implicit-const-int-float-conversion) -add_compile_options(-O2) -add_compile_options(-Wall -Wextra -Werror) -add_compile_options(-fPIC -g) -add_compile_options(-Wno-maybe-uninitialized) -add_compile_options(-fno-exceptions) -add_compile_options(-fdiagnostics-color=always) -if (NOT ENABLE_FUZZERS) - add_compile_options(-fno-semantic-interposition) -endif() - -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) +include(lagom_compile_options) include(GNUInstallDirs) # make sure to include before we mess w/RPATH |