option(BUILD_WITH_CLANG_TIDY "Build with clang-tidy for extra warnings" OFF)

if (BUILD_WITH_CLANG_TIDY)
    include(ClangDetectTool)
    clang_detect_tool(CLANG_TIDY_EXE clang-tidy REQUIRED)

    set(CLANG_TIDY_COMMAND "${CLANG_TIDY_EXE}" --config-file=${CMAKE_SOURCE_DIR}/.clang-tidy)

    set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_COMMAND}" --extra-arg=-std=gnu11)
    set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}" --extra-arg=-std=gnu++17)
    set(CMAKE_OBJC_CLANG_TIDY "${CLANG_TIDY_COMMAND}")
else()
    unset(CMAKE_C_CLANG_TIDY)
    unset(CMAKE_CXX_CLANG_TIDY)
    unset(CMAKE_OBJC_CLANG_TIDY)
endif()
