diff options
-rw-r--r-- | .clang-tidy | 3 | ||||
-rw-r--r-- | examples/.clang-tidy | 7 | ||||
-rw-r--r-- | test/.clang-tidy | 2 | ||||
-rw-r--r-- | test/cpp/.clang-tidy | 38 | ||||
-rw-r--r-- | test/cpp/meson.build | 106 | ||||
-rw-r--r-- | test/cpp/test_build.cpp (renamed from test/test_build.cpp) | 0 | ||||
-rw-r--r-- | test/cpp/test_inline_cpp.cpp (renamed from test/test_inline_cpp.cpp) | 0 | ||||
-rw-r--r-- | test/cpp/test_inline_objcpp.mm (renamed from test/test_inline_objcpp.mm) | 0 | ||||
-rw-r--r-- | test/meson.build | 108 | ||||
-rw-r--r-- | test/test_utils.h | 5 |
10 files changed, 158 insertions, 111 deletions
diff --git a/.clang-tidy b/.clang-tidy index 9af40ce..fb84f01 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,4 +1,4 @@ -# Copyright 2020-2024 David Robillard <d@drobilla.net> +# Copyright 2020-2025 David Robillard <d@drobilla.net> # SPDX-License-Identifier: 0BSD OR ISC Checks: > @@ -13,6 +13,7 @@ Checks: > -misc-include-cleaner, -readability-avoid-nested-conditional-operator, -readability-identifier-length, + -readability-implicit-bool-conversion, CheckOptions: - key: hicpp-uppercase-literal-suffix.NewSuffixes value: L;U;f diff --git a/examples/.clang-tidy b/examples/.clang-tidy index cba7eda..c9cacb3 100644 --- a/examples/.clang-tidy +++ b/examples/.clang-tidy @@ -1,4 +1,4 @@ -# Copyright 2020-2024 David Robillard <d@drobilla.net> +# Copyright 2020-2025 David Robillard <d@drobilla.net> # SPDX-License-Identifier: 0BSD OR ISC Checks: > @@ -12,6 +12,7 @@ Checks: > -bugprone-reserved-identifier, -bugprone-suspicious-string-compare, -cert-dcl37-c, + -cert-dcl50-cpp, -cert-dcl51-cpp, -cert-err33-c, -cert-err34-c, @@ -27,6 +28,7 @@ Checks: > -fuchsia-default-arguments, -fuchsia-default-arguments-calls, -fuchsia-overloaded-operator, + -google-readability-casting, -google-runtime-references, -hicpp-multiway-paths-covered, -hicpp-no-array-decay, @@ -34,7 +36,10 @@ Checks: > -hicpp-vararg, -llvm-header-guard, -misc-misplaced-const, + -modernize-redundant-void-arg, -modernize-use-trailing-return-type, + -modernize-use-using, + -performance-enum-size, -performance-enum-size, -performance-no-int-to-ptr, -readability-function-cognitive-complexity, diff --git a/test/.clang-tidy b/test/.clang-tidy index c88c7b3..456eb2e 100644 --- a/test/.clang-tidy +++ b/test/.clang-tidy @@ -7,10 +7,8 @@ Checks: > -cert-err33-c, -cert-err34-c, -clang-analyzer-optin.core.EnumCastOutOfRange, - -google-runtime-references, -hicpp-multiway-paths-covered, -hicpp-signed-bitwise, -llvm-header-guard, - -modernize-use-trailing-return-type, -readability-function-cognitive-complexity, InheritParentConfig: true diff --git a/test/cpp/.clang-tidy b/test/cpp/.clang-tidy new file mode 100644 index 0000000..1d936a2 --- /dev/null +++ b/test/cpp/.clang-tidy @@ -0,0 +1,38 @@ +# Copyright 2020-2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +Checks: > + -*-use-auto, + -*-use-nullptr, + -bugprone-easily-swappable-parameters, + -cert-dcl50-cpp, + -cppcoreguidelines-avoid-c-arrays, + -cppcoreguidelines-avoid-do-while, + -cppcoreguidelines-macro-usage, + -cppcoreguidelines-no-malloc, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-bounds-array-to-pointer-decay, + -cppcoreguidelines-pro-bounds-constant-array-index, + -cppcoreguidelines-pro-bounds-pointer-arithmetic, + -cppcoreguidelines-pro-type-cstyle-cast, + -cppcoreguidelines-pro-type-member-init, + -cppcoreguidelines-pro-type-union-access, + -cppcoreguidelines-pro-type-vararg, + -google-readability-casting, + -google-runtime-int, + -hicpp-avoid-c-arrays, + -hicpp-member-init, + -hicpp-named-parameter, + -hicpp-no-array-decay, + -hicpp-no-malloc, + -hicpp-vararg, + -misc-use-anonymous-namespace, + -modernize-avoid-c-arrays, + -modernize-loop-convert, + -modernize-loop-convert, + -modernize-redundant-void-arg, + -modernize-use-trailing-return-type, + -modernize-use-using, + -performance-enum-size, + -readability-named-parameter, +InheritParentConfig: true diff --git a/test/cpp/meson.build b/test/cpp/meson.build new file mode 100644 index 0000000..73e2320 --- /dev/null +++ b/test/cpp/meson.build @@ -0,0 +1,106 @@ +# Copyright 2021-2025 David Robillard <d@drobilla.net> +# SPDX-License-Identifier: 0BSD OR ISC + +test_cpp_args = [] +if get_option('warning_level') == 'everything' and is_variable('cpp') + if cpp.get_id() == 'clang' + test_cpp_args += [ + '-Wno-documentation', # Cairo + '-Wno-documentation-unknown-command', # Cairo + '-Wno-old-style-cast', + ] + endif + + test_cpp_args = cpp.get_supported_arguments(test_cpp_args) +endif + +unified_args = core_args +unified_deps = [core_deps] +if cairo_dep.found() + unified_args += ['-DWITH_CAIRO'] + unified_deps += [cairo_dep] +endif + +if opengl_dep.found() + unified_args += ['-DWITH_OPENGL'] + unified_deps += [opengl_dep] +endif + +if vulkan_dep.found() + unified_args += ['-DWITH_VULKAN'] + unified_deps += [vulkan_deps] +endif + +if host_machine.system() == 'darwin' + add_languages(['objcpp'], native: false) + + objcpp = meson.get_compiler('objcpp') + + objcpp_unified_args = unified_args + if objcpp.get_id() == 'clang' + objcpp_unified_args += [ + '-Wno-c++98-compat', + '-Wno-c++98-compat-pedantic', + '-Wno-deprecated-declarations', + '-Wno-direct-ivar-access', + ] + endif + + objcpp_unified_args = objcpp.get_supported_arguments(objcpp_unified_args) + + test( + 'inline_objcpp', + executable( + 'test_inline_objcpp', + 'test_inline_objcpp.mm', + dependencies: unified_deps, + include_directories: include_directories('../../include'), + objcpp_args: objcpp_unified_args, + ), + suite: 'unit', + ) + +elif is_variable('cpp') + cpp_unified_args = unified_args + if cpp.get_id() == 'clang' + cpp_unified_args += [ + '-Wno-old-style-cast', + '-Wno-switch-default', + '-Wno-switch-enum', + '-Wno-unused-macros', # Mac + ] + if host_machine.system() == 'windows' + cpp_unified_args += [ + '-Wno-cast-function-type', + '-Wno-deprecated-declarations', + '-Wno-nonportable-system-include-path', + ] + endif + elif cpp.get_id() == 'gcc' + cpp_unified_args += [ + '-Wno-conditionally-supported', + '-Wno-old-style-cast', + '-Wno-switch-default', + '-Wno-switch-enum', + '-Wno-useless-cast', + ] + elif cpp.get_id() == 'msvc' + cpp_unified_args += [ + '/wd4464', # relative include path contains '..' + ] + endif + + cpp_unified_args = cpp.get_supported_arguments(cpp_unified_args) + + test( + 'inline_cpp', + executable( + 'test_inline_cpp', + 'test_inline_cpp.cpp', + cpp_args: cpp_unified_args, + dependencies: unified_deps, + include_directories: include_directories('../../include'), + ), + suite: 'unit', + ) +endif diff --git a/test/test_build.cpp b/test/cpp/test_build.cpp index 4fd2dac..4fd2dac 100644 --- a/test/test_build.cpp +++ b/test/cpp/test_build.cpp diff --git a/test/test_inline_cpp.cpp b/test/cpp/test_inline_cpp.cpp index f5694eb..f5694eb 100644 --- a/test/test_inline_cpp.cpp +++ b/test/cpp/test_inline_cpp.cpp diff --git a/test/test_inline_objcpp.mm b/test/cpp/test_inline_objcpp.mm index 1c9079b..1c9079b 100644 --- a/test/test_inline_objcpp.mm +++ b/test/cpp/test_inline_objcpp.mm diff --git a/test/meson.build b/test/meson.build index c47d3ee..d34763f 100644 --- a/test/meson.build +++ b/test/meson.build @@ -17,20 +17,6 @@ if get_option('warning_level') == 'everything' test_c_args = cc.get_supported_arguments(test_c_args) endif -# Suppress some additional C++ warnings in tests -test_cpp_args = [] -if get_option('warning_level') == 'everything' and is_variable('cpp') - if cpp.get_id() == 'clang' - test_cpp_args += [ - '-Wno-documentation', # Cairo - '-Wno-documentation-unknown-command', # Cairo - '-Wno-old-style-cast', - ] - endif - - test_cpp_args = cpp.get_supported_arguments(test_cpp_args) -endif - # Check licensing metadata if not meson.is_subproject() and get_option('lint') reuse = find_program('reuse', required: false) @@ -144,7 +130,6 @@ if vulkan_dep.found() 'test_' + test, 'test_@0@.c'.format(test), c_args: test_c_args, - cpp_args: test_cpp_args, dependencies: [pugl_dep, pugl_vulkan_dep], include_directories: include_directories(includes), ), @@ -153,93 +138,8 @@ if vulkan_dep.found() endforeach endif -unified_args = core_args -unified_deps = [core_deps] -if cairo_dep.found() - unified_args += ['-DWITH_CAIRO'] - unified_deps += [cairo_dep] -endif - -if opengl_dep.found() - unified_args += ['-DWITH_OPENGL'] - unified_deps += [opengl_dep] -endif - -if vulkan_dep.found() - unified_args += ['-DWITH_VULKAN'] - unified_deps += [vulkan_deps] -endif - -if host_machine.system() == 'darwin' - add_languages(['objcpp'], native: false) - - objcpp = meson.get_compiler('objcpp') +####################### +# C++ / Objective C++ # +####################### - objcpp_unified_args = unified_args - if objcpp.get_id() == 'clang' - objcpp_unified_args += [ - '-Wno-c++98-compat', - '-Wno-c++98-compat-pedantic', - '-Wno-deprecated-declarations', - '-Wno-direct-ivar-access', - ] - endif - - objcpp_unified_args = objcpp.get_supported_arguments(objcpp_unified_args) - - test( - 'inline_objcpp', - executable( - 'test_inline_objcpp', - 'test_inline_objcpp.mm', - dependencies: unified_deps, - include_directories: include_directories(includes), - objcpp_args: objcpp_unified_args, - ), - suite: 'unit', - ) - -elif is_variable('cpp') - cpp_unified_args = unified_args - if cpp.get_id() == 'clang' - cpp_unified_args += [ - '-Wno-old-style-cast', - '-Wno-switch-default', - '-Wno-switch-enum', - '-Wno-unused-macros', # Mac - ] - if host_machine.system() == 'windows' - cpp_unified_args += [ - '-Wno-cast-function-type', - '-Wno-deprecated-declarations', - '-Wno-nonportable-system-include-path', - ] - endif - elif cpp.get_id() == 'gcc' - cpp_unified_args += [ - '-Wno-conditionally-supported', - '-Wno-old-style-cast', - '-Wno-switch-default', - '-Wno-switch-enum', - '-Wno-useless-cast', - ] - elif cpp.get_id() == 'msvc' - cpp_unified_args += [ - '/wd4464', # relative include path contains '..' - ] - endif - - cpp_unified_args = cpp.get_supported_arguments(cpp_unified_args) - - test( - 'inline_cpp', - executable( - 'test_inline_cpp', - 'test_inline_cpp.cpp', - cpp_args: cpp_unified_args, - dependencies: unified_deps, - include_directories: include_directories(includes), - ), - suite: 'unit', - ) -endif +subdir('cpp') diff --git a/test/test_utils.h b/test/test_utils.h index 214b360..4ebd985 100644 --- a/test/test_utils.h +++ b/test/test_utils.h @@ -471,11 +471,10 @@ static inline void printViewHints(const PuglView* view) { for (unsigned i = 0; i < PUGL_NUM_VIEW_HINTS; ++i) { - const PuglViewHint hint = (PuglViewHint)i; fprintf(stderr, "%s: %d\n", - puglViewHintString(hint), - puglGetViewHint(view, hint)); + puglViewHintString((PuglViewHint)i), + puglGetViewHint(view, (PuglViewHint)i)); } } |