xref: /aosp_15_r20/external/fmtlib/test/cuda-test/cuda-cpp14.cu (revision 5c90c05cd622c0a81b57953a4d343e0e489f2e08)
1*5c90c05cSAndroid Build Coastguard Worker //  Direct NVCC command line example:
2*5c90c05cSAndroid Build Coastguard Worker //
3*5c90c05cSAndroid Build Coastguard Worker //  nvcc ./cuda-cpp14.cu -x cu -I"../include" -l"fmtd" -L"../build/Debug" \
4*5c90c05cSAndroid Build Coastguard Worker //       -std=c++14 -Xcompiler /std:c++14 -Xcompiler /Zc:__cplusplus
5*5c90c05cSAndroid Build Coastguard Worker 
6*5c90c05cSAndroid Build Coastguard Worker // Ensure that we are using the latest C++ standard for NVCC
7*5c90c05cSAndroid Build Coastguard Worker // The version is C++14
8*5c90c05cSAndroid Build Coastguard Worker //
9*5c90c05cSAndroid Build Coastguard Worker // https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-cplusplus-language-support
10*5c90c05cSAndroid Build Coastguard Worker // https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros
11*5c90c05cSAndroid Build Coastguard Worker static_assert(__cplusplus >= 201402L, "expect C++ 2014 for nvcc");
12*5c90c05cSAndroid Build Coastguard Worker 
13*5c90c05cSAndroid Build Coastguard Worker #include <fmt/base.h>
14*5c90c05cSAndroid Build Coastguard Worker 
15*5c90c05cSAndroid Build Coastguard Worker #include <cuda.h>
16*5c90c05cSAndroid Build Coastguard Worker #include <iostream>
17*5c90c05cSAndroid Build Coastguard Worker 
18*5c90c05cSAndroid Build Coastguard Worker extern auto make_message_cpp() -> std::string;
19*5c90c05cSAndroid Build Coastguard Worker extern auto make_message_cuda() -> std::string;
20*5c90c05cSAndroid Build Coastguard Worker 
main()21*5c90c05cSAndroid Build Coastguard Worker int main() {
22*5c90c05cSAndroid Build Coastguard Worker   std::cout << make_message_cuda() << std::endl;
23*5c90c05cSAndroid Build Coastguard Worker   std::cout << make_message_cpp() << std::endl;
24*5c90c05cSAndroid Build Coastguard Worker }
25*5c90c05cSAndroid Build Coastguard Worker 
make_message_cuda()26*5c90c05cSAndroid Build Coastguard Worker auto make_message_cuda() -> std::string {
27*5c90c05cSAndroid Build Coastguard Worker   return fmt::format("nvcc compiler \t: __cplusplus == {}", __cplusplus);
28*5c90c05cSAndroid Build Coastguard Worker }
29