mirror of
https://github.com/NVIDIA/nvbench.git
synced 2026-03-14 20:27:24 +00:00
commit4b309e6ad8Author: Allison Piper <alliepiper16@gmail.com> Date: Sat Apr 6 13:19:14 2024 +0000 Minor cleanups commit476ed2ceaeAuthor: Allison Piper <alliepiper16@gmail.com> Date: Sat Apr 6 12:53:37 2024 +0000 WAR compiler ice in nlohmann json. Only seeing this on GCC 9 + CTK 11.1. Seems to be having trouble with the `[[no_unique_address]]` optimization. commita9bf1d3e42Author: Allison Piper <alliepiper16@gmail.com> Date: Sat Apr 6 00:24:47 2024 +0000 Bump nlohmann json. commit80980fe373Author: Allison Piper <alliepiper16@gmail.com> Date: Sat Apr 6 00:22:07 2024 +0000 Fix llvm filesystem support commitf6099e6311Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 23:18:44 2024 +0000 Drop MSVC 2017 testing. commit5ae50a8ef5Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 23:02:32 2024 +0000 Add mroe missing headers. commitb2a9ae04d9Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 22:37:56 2024 +0000 Remove old CUDA+MSVC builds and make windows build-only. commit5b18c26a28Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 22:37:07 2024 +0000 Fix header for std::min/max. Why do I always think it's utility instead of algorithm.... commit6a409efa2dAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 22:18:18 2024 +0000 Temporarily disable CUPTI on all windows builds. commitf432f88866Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 21:42:52 2024 +0000 Fix warnings on MSVC. commit829787649bAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 21:03:16 2024 +0000 More flailing about in powershell. commit21742e6beaAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 20:36:08 2024 +0000 Cleanup filesystem header handling. commitde3d202635Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 20:09:00 2024 +0000 Windows CI debugging. commita4151667ffAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 19:45:40 2024 +0000 Quotation mark madness commitdd04f3befeAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 19:27:27 2024 +0000 Temporarily disable NVML on windows CI until new containers are ready. commitf3952848c4Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 19:25:22 2024 +0000 WAR issues on gcc-7. commit198986875eAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 19:25:04 2024 +0000 More matrix/devcontainer updates. commitb9712f8696Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 18:30:35 2024 +0000 Fix windows build scripts. commit943f268280Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 18:18:33 2024 +0000 Fix warnings with clang host compiler. commit7063e1d60aAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 18:14:28 2024 +0000 More devcontainer hijinks. commit06532fde81Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 17:51:25 2024 +0000 More matrix updates. commit78a265ea55Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 17:34:00 2024 +0000 Support CLI CMake options for windows ci scripts. commit670895c867Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 17:31:59 2024 +0000 Add missing devcontainers. commitb121823e74Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 17:22:54 2024 +0000 Build for `all-major` architectures in presets. We can get away with this because we require CMake 3.23.1. This was added in 3.23. commitfccfd44685Author: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 17:22:08 2024 +0000 Update matrix file. commite7d43ba90eAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 16:23:48 2024 +0000 Consolidate build/test jobs. commitc4044056ecAuthor: Allison Piper <alliepiper16@gmail.com> Date: Fri Apr 5 16:04:11 2024 +0000 Add missing build script.
91 lines
3.5 KiB
CMake
91 lines
3.5 KiB
CMake
include(CheckCXXCompilerFlag)
|
|
|
|
option(NVBench_ENABLE_WERROR
|
|
"Treat warnings as errors while compiling NVBench."
|
|
${NVBench_TOPLEVEL_PROJECT}
|
|
)
|
|
mark_as_advanced(NVBench_ENABLE_WERROR)
|
|
|
|
# Builds all NVBench targets (libs, tests, examples, etc).
|
|
add_custom_target(nvbench.all)
|
|
|
|
set(NVBench_LIBRARY_OUTPUT_DIR "${CMAKE_BINARY_DIR}/lib")
|
|
set(NVBench_EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/bin")
|
|
|
|
add_library(nvbench.build_interface INTERFACE)
|
|
|
|
# TODO Why must this be installed/exported if it's just a private interface?
|
|
# CMake complains about it missing from the export set unless we export it.
|
|
# Is there way to avoid this?
|
|
set_target_properties(nvbench.build_interface PROPERTIES
|
|
EXPORT_NAME internal_build_interface
|
|
)
|
|
|
|
function(nvbench_add_cxx_flag target_name type flag)
|
|
string(MAKE_C_IDENTIFIER "NVBench_CXX_FLAG_${flag}" var)
|
|
check_cxx_compiler_flag(${flag} ${var})
|
|
|
|
if (${${var}})
|
|
target_compile_options(${target_name} ${type}
|
|
$<$<COMPILE_LANGUAGE:CXX>:${flag}>
|
|
$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:-Xcompiler=${flag}>
|
|
)
|
|
endif()
|
|
endfunction()
|
|
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "/W4")
|
|
|
|
if (NVBench_ENABLE_WERROR)
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "/WX")
|
|
endif()
|
|
|
|
# Suppress overly-pedantic/unavoidable warnings brought in with /W4:
|
|
# C4505: unreferenced local function has been removed
|
|
# The CUDA `host_runtime.h` header emits this for
|
|
# `__cudaUnregisterBinaryUtil`.
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "/wd4505")
|
|
else()
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wall")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wextra")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wconversion")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Woverloaded-virtual")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wcast-qual")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wpointer-arith")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wunused-local-typedef")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wunused-parameter")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wvla")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wgnu")
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Wno-gnu-line-marker") # WAR 3916341
|
|
|
|
if (NVBench_ENABLE_WERROR)
|
|
nvbench_add_cxx_flag(nvbench.build_interface INTERFACE "-Werror")
|
|
endif()
|
|
endif()
|
|
|
|
# Experimental filesystem library
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
target_link_libraries(nvbench.build_interface INTERFACE stdc++fs)
|
|
endif()
|
|
|
|
# CUDA-specific flags
|
|
target_compile_options(nvbench.build_interface INTERFACE
|
|
$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:-Xcudafe=--display_error_number>
|
|
$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:-Wno-deprecated-gpu-targets>
|
|
)
|
|
if (NVBench_ENABLE_WERROR)
|
|
target_compile_options(nvbench.build_interface INTERFACE
|
|
$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:-Xcudafe=--promote_warnings>
|
|
)
|
|
endif()
|
|
|
|
function(nvbench_config_target target_name)
|
|
target_link_libraries(${target_name} PRIVATE nvbench.build_interface)
|
|
set_target_properties(${target_name} PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${NVBench_LIBRARY_OUTPUT_DIR}"
|
|
LIBRARY_OUTPUT_DIRECTORY "${NVBench_LIBRARY_OUTPUT_DIR}"
|
|
RUNTIME_OUTPUT_DIRECTORY "${NVBench_EXECUTABLE_OUTPUT_DIR}"
|
|
WINDOWS_EXPORT_ALL_SYMBOLS ON # oooo pretty hammer...
|
|
)
|
|
endfunction()
|