mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-01-26 19:09:06 +00:00
FindCUDAToolkit: Add CUDA::bin2c target
This commit is contained in:
parent
538926c532
commit
2d2036c9e9
5
Help/release/dev/cudatoolkit-bin2c.rst
Normal file
5
Help/release/dev/cudatoolkit-bin2c.rst
Normal file
@ -0,0 +1,5 @@
|
||||
cudatoolkit-bin2c
|
||||
-----------------
|
||||
|
||||
* The :module:`FindCUDAToolkit` module now creates a ``CUDA::bin2c`` imported
|
||||
target for the :ref:`bin2c <FindCUDAToolkit_bin2c>` utility.
|
||||
@ -524,6 +524,19 @@ Target Created:
|
||||
|
||||
**Note**: direct usage of this target by consumers should not be necessary.
|
||||
|
||||
.. _`FindCUDAToolkit_bin2c`:
|
||||
|
||||
bin2c
|
||||
"""""
|
||||
|
||||
.. versionadded:: 4.3
|
||||
|
||||
A utility that converts binary files to C files containing byte arrays.
|
||||
|
||||
Target Created:
|
||||
|
||||
- ``CUDA::bin2c``
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -1486,6 +1499,16 @@ if(CUDAToolkit_FOUND)
|
||||
endif()
|
||||
|
||||
_CUDAToolkit_find_and_add_import_lib(OpenCL)
|
||||
|
||||
find_program(CUDA_bin2c_EXECUTABLE
|
||||
NAMES bin2c
|
||||
HINTS ${CUDAToolkit_BIN_DIR}
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
if(NOT TARGET CUDA::bin2c AND CUDA_bin2c_EXECUTABLE)
|
||||
add_executable(CUDA::bin2c IMPORTED)
|
||||
set_property(TARGET CUDA::bin2c PROPERTY IMPORTED_LOCATION "${CUDA_bin2c_EXECUTABLE}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(_CUDAToolkit_Pop_ROOT_PATH)
|
||||
|
||||
19
Tests/Cuda/Bin2C/CMakeLists.txt
Normal file
19
Tests/Cuda/Bin2C/CMakeLists.txt
Normal file
@ -0,0 +1,19 @@
|
||||
cmake_minimum_required(VERSION 4.2)
|
||||
project(Bin2C CXX)
|
||||
|
||||
# Goal for this example:
|
||||
# Validate that we can use CUDAToolkit bin2c
|
||||
find_package(CUDAToolkit REQUIRED)
|
||||
|
||||
add_executable(generate generate.cpp)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/binary.bin
|
||||
COMMAND generate ${CMAKE_CURRENT_BINARY_DIR}/binary.bin
|
||||
)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/binary.h
|
||||
COMMAND CUDA::bin2c ${CMAKE_CURRENT_BINARY_DIR}/binary.bin > ${CMAKE_CURRENT_BINARY_DIR}/binary.h
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/binary.bin
|
||||
)
|
||||
add_executable(CudaBin2C verify.cpp ${CMAKE_CURRENT_BINARY_DIR}/binary.h)
|
||||
target_include_directories(CudaBin2C PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
18
Tests/Cuda/Bin2C/generate.cpp
Normal file
18
Tests/Cuda/Bin2C/generate.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include <fstream>
|
||||
#include <ios>
|
||||
|
||||
static unsigned char const contents[] = {
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
};
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (argc != 2) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::ofstream fout(argv[1], std::ios::out | std::ios::binary);
|
||||
fout.write(reinterpret_cast<char const*>(contents), sizeof(contents));
|
||||
|
||||
return 0;
|
||||
}
|
||||
18
Tests/Cuda/Bin2C/verify.cpp
Normal file
18
Tests/Cuda/Bin2C/verify.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include <cstdlib>
|
||||
|
||||
#include "binary.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
if (sizeof(imageBytes) != 8) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < 8; i++) {
|
||||
if (imageBytes[i] != i) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -31,3 +31,4 @@ if(CMake_TEST_CUDA AND NOT CMake_TEST_CUDA STREQUAL "Clang")
|
||||
endif()
|
||||
|
||||
add_cuda_test_macro(Cuda.WithC CudaWithC)
|
||||
add_cuda_test_macro(Cuda.Bin2C CudaBin2C)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user