THRIFT-4732:refine cmake scripts  (#1688)

* add cmake support for clib and remove unused variables
* add targets for code analysis
* add wall to all compilers and add utf-8 options for msvc
diff --git a/build/cmake/FindClangTools.cmake b/build/cmake/FindClangTools.cmake
new file mode 100644
index 0000000..b72bea7
--- /dev/null
+++ b/build/cmake/FindClangTools.cmake
@@ -0,0 +1,28 @@
+# - Try to find Clang tools
+#
+# The following are set after configuration is done:
+#  clang-tidy_FOUND
+#  ClangTools::clang-tidy
+#  clang-apply-replacements_FOUND
+#  ClangTools::clang-apply-replacements
+#  run-clang-tidy_FOUND
+#  ClangTools::run-clang-tidy
+
+include_guard()
+include(FindPackageHandleStandardArgs)
+
+foreach(program_name IN ITEMS clang-tidy clang-apply-replacements)
+  find_program(${program_name}_BINARY NAMES ${program_name}-devel ${program_name}-8 ${program_name} PATH_SUFFIXES "LLVM/bin")
+  find_package_handle_standard_args(${program_name} DEFAULT_MSG ${program_name}_BINARY)
+  if(${program_name}_FOUND AND NOT TARGET ClangTools::${program_name})
+    add_executable(ClangTools::${program_name} IMPORTED)
+    set_property(TARGET ClangTools::${program_name} PROPERTY IMPORTED_LOCATION "${${program_name}_BINARY}")
+  endif()
+endforeach()
+
+find_program(run-clang-tidy_BINARY NAMES run-clang-tidy run-clang-tidy.py PATH_SUFFIXES "LLVM/bin" "llvm-devel/share/clang")
+find_package_handle_standard_args(run-clang-tidy DEFAULT_MSG run-clang-tidy_BINARY)
+if(run-clang-tidy_FOUND AND NOT TARGET ClangTools::run-clang-tidy)
+  add_executable(ClangTools::run-clang-tidy IMPORTED)
+  set_property(TARGET ClangTools::run-clang-tidy PROPERTY IMPORTED_LOCATION "${run-clang-tidy_BINARY}")
+endif()