diff options
-rw-r--r-- | Auxiliary/vim/syntax/cmake.vim | 2 | ||||
-rw-r--r-- | Help/prop_tgt/LANG_CLANG_TIDY.rst | 2 | ||||
-rw-r--r-- | Help/release/dev/clang-tidy-objc.rst | 5 | ||||
-rw-r--r-- | Help/variable/CMAKE_LANG_CLANG_TIDY.rst | 2 | ||||
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 20 | ||||
-rw-r--r-- | Source/cmNinjaTargetGenerator.cxx | 20 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 2 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJC-Build-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJC-launch-Build-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJC-launch.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJC.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJCXX-Build-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJCXX-launch-Build-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJCXX-launch.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/OBJCXX.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/RunCMakeTest.cmake | 8 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/main.m | 4 | ||||
-rw-r--r-- | Tests/RunCMake/ClangTidy/main.mm | 4 |
18 files changed, 69 insertions, 16 deletions
diff --git a/Auxiliary/vim/syntax/cmake.vim b/Auxiliary/vim/syntax/cmake.vim index 8103040..a9bcf47 100644 --- a/Auxiliary/vim/syntax/cmake.vim +++ b/Auxiliary/vim/syntax/cmake.vim @@ -1260,9 +1260,11 @@ syn keyword cmakeVariable contained \ CMAKE_NOT_USING_CONFIG_FLAGS \ CMAKE_NO_BUILTIN_CHRPATH \ CMAKE_NO_SYSTEM_FROM_IMPORTED + \ CMAKE_OBJCXX_CLANG_TIDY \ CMAKE_OBJCXX_EXTENSIONS \ CMAKE_OBJCXX_STANDARD \ CMAKE_OBJCXX_STANDARD_REQUIRED + \ CMAKE_OBJC_CLANG_TIDY \ CMAKE_OBJC_EXTENSIONS \ CMAKE_OBJC_STANDARD \ CMAKE_OBJC_STANDARD_REQUIRED diff --git a/Help/prop_tgt/LANG_CLANG_TIDY.rst b/Help/prop_tgt/LANG_CLANG_TIDY.rst index 7fc2372..af16d3c 100644 --- a/Help/prop_tgt/LANG_CLANG_TIDY.rst +++ b/Help/prop_tgt/LANG_CLANG_TIDY.rst @@ -3,7 +3,7 @@ .. versionadded:: 3.6 -This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``. +This property is implemented only when ``<LANG>`` is ``C``, ``CXX``, ``OBJC`` or ``OBJCXX``. Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line for the ``clang-tidy`` tool. The :ref:`Makefile Generators` diff --git a/Help/release/dev/clang-tidy-objc.rst b/Help/release/dev/clang-tidy-objc.rst new file mode 100644 index 0000000..c899257 --- /dev/null +++ b/Help/release/dev/clang-tidy-objc.rst @@ -0,0 +1,5 @@ +clang-tidy-objc +--------------- + +* The target property :prop_tgt:`<LANG>_CLANG_TIDY` and the associated + variable :variable:`CMAKE_<LANG>_CLANG_TIDY` learned to support OBJC and OBJCXX. diff --git a/Help/variable/CMAKE_LANG_CLANG_TIDY.rst b/Help/variable/CMAKE_LANG_CLANG_TIDY.rst index 78f0f6a..32e27b0 100644 --- a/Help/variable/CMAKE_LANG_CLANG_TIDY.rst +++ b/Help/variable/CMAKE_LANG_CLANG_TIDY.rst @@ -4,7 +4,7 @@ CMAKE_<LANG>_CLANG_TIDY .. versionadded:: 3.6 Default value for :prop_tgt:`<LANG>_CLANG_TIDY` target property -when ``<LANG>`` is ``C`` or ``CXX``. +when ``<LANG>`` is ``C``, ``CXX``, ``OBJC`` or ``OBJCXX``. This variable is used to initialize the property on each target as it is created. For example: diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index b160064..370608f 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -873,15 +873,21 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles( } // Maybe insert an include-what-you-use runner. - if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) { - std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; - cmProp iwyu = this->GeneratorTarget->GetProperty(iwyu_prop); + if (!compileCommands.empty() && + (lang == "C" || lang == "CXX" || lang == "OBJC" || lang == "OBJCXX")) { std::string const tidy_prop = lang + "_CLANG_TIDY"; cmProp tidy = this->GeneratorTarget->GetProperty(tidy_prop); - std::string const cpplint_prop = lang + "_CPPLINT"; - cmProp cpplint = this->GeneratorTarget->GetProperty(cpplint_prop); - std::string const cppcheck_prop = lang + "_CPPCHECK"; - cmProp cppcheck = this->GeneratorTarget->GetProperty(cppcheck_prop); + cmProp iwyu = nullptr; + cmProp cpplint = nullptr; + cmProp cppcheck = nullptr; + if (lang == "C" || lang == "CXX") { + std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; + iwyu = this->GeneratorTarget->GetProperty(iwyu_prop); + std::string const cpplint_prop = lang + "_CPPLINT"; + cpplint = this->GeneratorTarget->GetProperty(cpplint_prop); + std::string const cppcheck_prop = lang + "_CPPCHECK"; + cppcheck = this->GeneratorTarget->GetProperty(cppcheck_prop); + } if (cmNonempty(iwyu) || cmNonempty(tidy) || cmNonempty(cpplint) || cmNonempty(cppcheck)) { std::string run_iwyu = "$(CMAKE_COMMAND) -E __run_co_compile"; diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 0566949..5e27356 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -824,15 +824,21 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang, } // Maybe insert an include-what-you-use runner. - if (!compileCmds.empty() && (lang == "C" || lang == "CXX")) { - std::string const iwyu_prop = cmStrCat(lang, "_INCLUDE_WHAT_YOU_USE"); - cmProp iwyu = this->GeneratorTarget->GetProperty(iwyu_prop); + if (!compileCmds.empty() && + (lang == "C" || lang == "CXX" || lang == "OBJC" || lang == "OBJCXX")) { std::string const tidy_prop = cmStrCat(lang, "_CLANG_TIDY"); cmProp tidy = this->GeneratorTarget->GetProperty(tidy_prop); - std::string const cpplint_prop = cmStrCat(lang, "_CPPLINT"); - cmProp cpplint = this->GeneratorTarget->GetProperty(cpplint_prop); - std::string const cppcheck_prop = cmStrCat(lang, "_CPPCHECK"); - cmProp cppcheck = this->GeneratorTarget->GetProperty(cppcheck_prop); + cmProp iwyu = nullptr; + cmProp cpplint = nullptr; + cmProp cppcheck = nullptr; + if (lang == "C" || lang == "CXX") { + std::string const iwyu_prop = cmStrCat(lang, "_INCLUDE_WHAT_YOU_USE"); + iwyu = this->GeneratorTarget->GetProperty(iwyu_prop); + std::string const cpplint_prop = cmStrCat(lang, "_CPPLINT"); + cpplint = this->GeneratorTarget->GetProperty(cpplint_prop); + std::string const cppcheck_prop = cmStrCat(lang, "_CPPCHECK"); + cppcheck = this->GeneratorTarget->GetProperty(cppcheck_prop); + } if (cmNonempty(iwyu) || cmNonempty(tidy) || cmNonempty(cpplint) || cmNonempty(cppcheck)) { std::string run_iwyu = cmStrCat(cmakeCmd, " -E __run_co_compile"); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 0860b71..35224eb 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -372,6 +372,8 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type, initProp("ISPC_INSTRUCTION_SETS"); initProp("LINK_SEARCH_START_STATIC"); initProp("LINK_SEARCH_END_STATIC"); + initProp("OBJC_CLANG_TIDY"); + initProp("OBJCXX_CLANG_TIDY"); initProp("Swift_LANGUAGE_VERSION"); initProp("Swift_MODULE_DIRECTORY"); initProp("VS_JUST_MY_CODE_DEBUGGING"); diff --git a/Tests/RunCMake/ClangTidy/OBJC-Build-stdout.txt b/Tests/RunCMake/ClangTidy/OBJC-Build-stdout.txt new file mode 100644 index 0000000..571ec02 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJC-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.m:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/OBJC-launch-Build-stdout.txt b/Tests/RunCMake/ClangTidy/OBJC-launch-Build-stdout.txt new file mode 100644 index 0000000..571ec02 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJC-launch-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.m:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/OBJC-launch.cmake b/Tests/RunCMake/ClangTidy/OBJC-launch.cmake new file mode 100644 index 0000000..43e8521 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJC-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(OBJC.cmake) diff --git a/Tests/RunCMake/ClangTidy/OBJC.cmake b/Tests/RunCMake/ClangTidy/OBJC.cmake new file mode 100644 index 0000000..43eae30 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJC.cmake @@ -0,0 +1,3 @@ +enable_language(OBJC) +set(CMAKE_OBJC_CLANG_TIDY "${PSEUDO_TIDY}" -some -args) +add_executable(main main.m) diff --git a/Tests/RunCMake/ClangTidy/OBJCXX-Build-stdout.txt b/Tests/RunCMake/ClangTidy/OBJCXX-Build-stdout.txt new file mode 100644 index 0000000..cbc7629 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJCXX-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.mm:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/OBJCXX-launch-Build-stdout.txt b/Tests/RunCMake/ClangTidy/OBJCXX-launch-Build-stdout.txt new file mode 100644 index 0000000..cbc7629 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJCXX-launch-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.mm:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/OBJCXX-launch.cmake b/Tests/RunCMake/ClangTidy/OBJCXX-launch.cmake new file mode 100644 index 0000000..5a54bff --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJCXX-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(OBJCXX.cmake) diff --git a/Tests/RunCMake/ClangTidy/OBJCXX.cmake b/Tests/RunCMake/ClangTidy/OBJCXX.cmake new file mode 100644 index 0000000..ccc5c2c --- /dev/null +++ b/Tests/RunCMake/ClangTidy/OBJCXX.cmake @@ -0,0 +1,3 @@ +enable_language(OBJCXX) +set(CMAKE_OBJCXX_CLANG_TIDY "${PSEUDO_TIDY}" -some -args) +add_executable(main main.mm) diff --git a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake index 2f41e50..ee41d94 100644 --- a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake +++ b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake @@ -16,8 +16,16 @@ endfunction() run_tidy(C) run_tidy(CXX) +if (APPLE) + run_tidy(OBJC) + run_tidy(OBJCXX) +endif() if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") run_tidy(C-launch) run_tidy(CXX-launch) + if (APPLE) + run_tidy(OBJC-launch) + run_tidy(OBJCXX-launch) + endif() endif() run_tidy(C-bad) diff --git a/Tests/RunCMake/ClangTidy/main.m b/Tests/RunCMake/ClangTidy/main.m new file mode 100644 index 0000000..8488f4e --- /dev/null +++ b/Tests/RunCMake/ClangTidy/main.m @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/Tests/RunCMake/ClangTidy/main.mm b/Tests/RunCMake/ClangTidy/main.mm new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/RunCMake/ClangTidy/main.mm @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} |