[clang] a26aabe - [Clang] Add --version and --help messages to amdgpu/nvptx-arch
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 13 10:32:51 PDT 2023
Author: Joseph Huber
Date: 2023-03-13T12:32:42-05:00
New Revision: a26aabefe535d323c416d7d57be8c669f3741f15
URL: https://github.com/llvm/llvm-project/commit/a26aabefe535d323c416d7d57be8c669f3741f15
DIFF: https://github.com/llvm/llvm-project/commit/a26aabefe535d323c416d7d57be8c669f3741f15.diff
LOG: [Clang] Add --version and --help messages to amdgpu/nvptx-arch
Summray:
These clang tools should print some basic help and version messages so
they are less opaque.
Reviewed By: ye-luo
Differential Revision: https://reviews.llvm.org/D145944
Added:
Modified:
clang/tools/amdgpu-arch/AMDGPUArch.cpp
clang/tools/amdgpu-arch/CMakeLists.txt
clang/tools/nvptx-arch/CMakeLists.txt
clang/tools/nvptx-arch/NVPTXArch.cpp
Removed:
################################################################################
diff --git a/clang/tools/amdgpu-arch/AMDGPUArch.cpp b/clang/tools/amdgpu-arch/AMDGPUArch.cpp
index fbb084a2a123..b63ff5cfe175 100644
--- a/clang/tools/amdgpu-arch/AMDGPUArch.cpp
+++ b/clang/tools/amdgpu-arch/AMDGPUArch.cpp
@@ -11,12 +11,25 @@
//
//===----------------------------------------------------------------------===//
+#include "clang/Basic/Version.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/Error.h"
#include <memory>
#include <string>
#include <vector>
+using namespace llvm;
+
+static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
+
+// Mark all our options with this category.
+static cl::OptionCategory AMDGPUArchCategory("amdgpu-arch options");
+
+static void PrintVersion(raw_ostream &OS) {
+ OS << clang::getClangToolFullVersion("amdgpu-arch") << '\n';
+}
+
#if DYNAMIC_HSA
typedef enum {
HSA_STATUS_SUCCESS = 0x0,
@@ -102,6 +115,21 @@ static hsa_status_t iterateAgentsCallback(hsa_agent_t Agent, void *Data) {
}
int main(int argc, char *argv[]) {
+ cl::HideUnrelatedOptions(AMDGPUArchCategory);
+
+ cl::SetVersionPrinter(PrintVersion);
+ cl::ParseCommandLineOptions(
+ argc, argv,
+ "A tool to detect the presence of AMDGPU devices on the system. \n\n"
+ "The tool will output each detected GPU architecture separated by a\n"
+ "newline character. If multiple GPUs of the same architecture are found\n"
+ "a string will be printed for each\n");
+
+ if (Help) {
+ cl::PrintHelpMessage();
+ return 0;
+ }
+
// Attempt to load the HSA runtime.
if (llvm::Error Err = loadHSA()) {
logAllUnhandledErrors(std::move(Err), llvm::errs());
diff --git a/clang/tools/amdgpu-arch/CMakeLists.txt b/clang/tools/amdgpu-arch/CMakeLists.txt
index 5b7ef13924b8..cc65217c7ee2 100644
--- a/clang/tools/amdgpu-arch/CMakeLists.txt
+++ b/clang/tools/amdgpu-arch/CMakeLists.txt
@@ -15,6 +15,7 @@ find_package(hsa-runtime64 QUIET 1.2.0 HINTS ${CMAKE_INSTALL_PREFIX} PATHS /opt/
if(hsa-runtime64_FOUND AND NOT (LLVM_BUILD_32_BITS OR CMAKE_SIZEOF_VOID_P EQUAL 4))
set_target_properties(amdgpu-arch PROPERTIES INSTALL_RPATH_USE_LINK_PATH ON)
target_link_libraries(amdgpu-arch PRIVATE hsa-runtime64::hsa-runtime64)
+ clang_target_link_libraries(amdgpu-arch PRIVATE clangBasic)
else()
target_compile_definitions(amdgpu-arch PRIVATE "DYNAMIC_HSA")
endif()
diff --git a/clang/tools/nvptx-arch/CMakeLists.txt b/clang/tools/nvptx-arch/CMakeLists.txt
index 1854d34ca075..1bbff79e8967 100644
--- a/clang/tools/nvptx-arch/CMakeLists.txt
+++ b/clang/tools/nvptx-arch/CMakeLists.txt
@@ -14,6 +14,7 @@ find_package(CUDAToolkit QUIET)
# If we found the CUDA library directly we just dynamically link against it.
if(CUDAToolkit_FOUND AND NOT (LLVM_BUILD_32_BITS OR CMAKE_SIZEOF_VOID_P EQUAL 4))
target_link_libraries(nvptx-arch PRIVATE CUDA::cuda_driver)
+ clang_target_link_libraries(nvptx-arch PRIVATE clangBasic)
else()
target_compile_definitions(nvptx-arch PRIVATE "DYNAMIC_CUDA")
endif()
diff --git a/clang/tools/nvptx-arch/NVPTXArch.cpp b/clang/tools/nvptx-arch/NVPTXArch.cpp
index 91723324c28e..4cfc58681cba 100644
--- a/clang/tools/nvptx-arch/NVPTXArch.cpp
+++ b/clang/tools/nvptx-arch/NVPTXArch.cpp
@@ -11,12 +11,25 @@
//
//===----------------------------------------------------------------------===//
+#include "clang/Basic/Version.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/Error.h"
#include <cstdint>
#include <cstdio>
#include <memory>
+using namespace llvm;
+
+static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
+
+static void PrintVersion(raw_ostream &OS) {
+ OS << clang::getClangToolFullVersion("nvptx-arch") << '\n';
+}
+// Mark all our options with this category, everything else (except for -version
+// and -help) will be hidden.
+static cl::OptionCategory NVPTXArchCategory("nvptx-arch options");
+
#if DYNAMIC_CUDA
typedef enum cudaError_enum {
CUDA_SUCCESS = 0,
@@ -79,6 +92,21 @@ static int handleError(CUresult Err) {
}
int main(int argc, char *argv[]) {
+ cl::HideUnrelatedOptions(NVPTXArchCategory);
+
+ cl::SetVersionPrinter(PrintVersion);
+ cl::ParseCommandLineOptions(
+ argc, argv,
+ "A tool to detect the presence of NVIDIA devices on the system. \n\n"
+ "The tool will output each detected GPU architecture separated by a\n"
+ "newline character. If multiple GPUs of the same architecture are found\n"
+ "a string will be printed for each\n");
+
+ if (Help) {
+ cl::PrintHelpMessage();
+ return 0;
+ }
+
// Attempt to load the NVPTX driver runtime.
if (llvm::Error Err = loadCUDA()) {
logAllUnhandledErrors(std::move(Err), llvm::errs());
More information about the cfe-commits
mailing list