From d0ca05498fcceff45a4800f86c89ceca6d805a51 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Sat, 19 Oct 2019 18:05:11 +0200 Subject: [PATCH] cmake: Blacklist more compiler warning flags --- mesonbuild/cmake/interpreter.py | 3 ++- test cases/cmake/13 system includes/main.cpp | 10 ++++++++++ test cases/cmake/13 system includes/meson.build | 14 ++++++++++++++ .../subprojects/cmMod/CMakeLists.txt | 15 +++++++++++++++ .../subprojects/cmMod/cmMod.cpp | 12 ++++++++++++ .../subprojects/cmMod/cmMod.hpp | 13 +++++++++++++ .../subprojects/cmMod/sysInc/triggerWarn.hpp | 14 ++++++++++++++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 test cases/cmake/13 system includes/main.cpp create mode 100644 test cases/cmake/13 system includes/meson.build create mode 100644 test cases/cmake/13 system includes/subprojects/cmMod/CMakeLists.txt create mode 100644 test cases/cmake/13 system includes/subprojects/cmMod/cmMod.cpp create mode 100644 test cases/cmake/13 system includes/subprojects/cmMod/cmMod.hpp create mode 100644 test cases/cmake/13 system includes/subprojects/cmMod/sysInc/triggerWarn.hpp diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index f746f1ae5..92df462cc 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -82,7 +82,8 @@ target_type_requires_trace = ['INTERFACE_LIBRARY'] skip_targets = ['UTILITY'] blacklist_compiler_flags = [ - '/W1', '/W2', '/W3', '/W4', '/Wall', + '-Wall', '-Wextra', '-Weverything', '-Werror', '-Wpedantic', '-pedantic', '-w', + '/W1', '/W2', '/W3', '/W4', '/Wall', '/WX', '/w', '/O1', '/O2', '/Ob', '/Od', '/Og', '/Oi', '/Os', '/Ot', '/Ox', '/Oy', '/Ob0', '/RTC1', '/RTCc', '/RTCs', '/RTCu', '/Z7', '/Zi', '/ZI', diff --git a/test cases/cmake/13 system includes/main.cpp b/test cases/cmake/13 system includes/main.cpp new file mode 100644 index 000000000..315c0f7dc --- /dev/null +++ b/test cases/cmake/13 system includes/main.cpp @@ -0,0 +1,10 @@ +#include +#include + +using namespace std; + +int main() { + cmModClass obj("Hello"); + cout << obj.getStr() << endl; + return 0; +} diff --git a/test cases/cmake/13 system includes/meson.build b/test cases/cmake/13 system includes/meson.build new file mode 100644 index 000000000..db25a423a --- /dev/null +++ b/test cases/cmake/13 system includes/meson.build @@ -0,0 +1,14 @@ +project( + 'meson_cmake_system_include_bug', ['c', 'cpp'], + default_options: [ + 'warning_level=3', + #'werror=true', # TODO implement system includes + ], +) + +cm = import('cmake') +sub_pro = cm.subproject('cmMod') +sub_dep = sub_pro.dependency('cmModLib') + +exe1 = executable('main1', ['main.cpp'], dependencies: [sub_dep]) +test('test1', exe1) diff --git a/test cases/cmake/13 system includes/subprojects/cmMod/CMakeLists.txt b/test cases/cmake/13 system includes/subprojects/cmMod/CMakeLists.txt new file mode 100644 index 000000000..a6b0ba40c --- /dev/null +++ b/test cases/cmake/13 system includes/subprojects/cmMod/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.5) + +project(cmMod) +set (CMAKE_CXX_STANDARD 14) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +add_definitions("-DDO_NOTHING_JUST_A_FLAG=1") + +add_library(cmModLib SHARED cmMod.cpp) +include(GenerateExportHeader) +generate_export_header(cmModLib) + +target_compile_options(cmModLib PRIVATE "-Wall" "-Werror") +target_include_directories(cmModLib SYSTEM PRIVATE "sysInc") diff --git a/test cases/cmake/13 system includes/subprojects/cmMod/cmMod.cpp b/test cases/cmake/13 system includes/subprojects/cmMod/cmMod.cpp new file mode 100644 index 000000000..1eaf0cf31 --- /dev/null +++ b/test cases/cmake/13 system includes/subprojects/cmMod/cmMod.cpp @@ -0,0 +1,12 @@ +#include "cmMod.hpp" +#include "triggerWarn.hpp" + +using namespace std; + +cmModClass::cmModClass(string foo) { + str = foo + " World " + to_string(bar(World)); +} + +string cmModClass::getStr() const { + return str; +} diff --git a/test cases/cmake/13 system includes/subprojects/cmMod/cmMod.hpp b/test cases/cmake/13 system includes/subprojects/cmMod/cmMod.hpp new file mode 100644 index 000000000..52f576bf3 --- /dev/null +++ b/test cases/cmake/13 system includes/subprojects/cmMod/cmMod.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include +#include "cmmodlib_export.h" + +class CMMODLIB_EXPORT cmModClass { + private: + std::string str; + public: + cmModClass(std::string foo); + + std::string getStr() const; +}; diff --git a/test cases/cmake/13 system includes/subprojects/cmMod/sysInc/triggerWarn.hpp b/test cases/cmake/13 system includes/subprojects/cmMod/sysInc/triggerWarn.hpp new file mode 100644 index 000000000..3b00f2db4 --- /dev/null +++ b/test cases/cmake/13 system includes/subprojects/cmMod/sysInc/triggerWarn.hpp @@ -0,0 +1,14 @@ +#pragma once + +enum Foo { + Hello, + World +}; + +inline int bar( Foo foo ) { + switch(foo) { + case Hello: return 0; + // Warn because of missung case for World + } + return 1; +}