[flang][runtime] Allow building CUDA PTX library without global vars definitions. (#90280)
This commit is contained in:
parent
3ba079183f
commit
1563a8752b
@ -2,6 +2,10 @@ option(FLANG_EXPERIMENTAL_CUDA_RUNTIME
|
||||
"Compile Fortran runtime as CUDA sources (experimental)" OFF
|
||||
)
|
||||
|
||||
option(FLANG_CUDA_RUNTIME_PTX_WITHOUT_GLOBAL_VARS
|
||||
"Do not compile global variables' definitions when producing PTX library" OFF
|
||||
)
|
||||
|
||||
set(FLANG_LIBCUDACXX_PATH "" CACHE PATH "Path to libcu++ package installation")
|
||||
|
||||
set(FLANG_EXPERIMENTAL_OMP_OFFLOAD_BUILD "off" CACHE STRING
|
||||
@ -56,6 +60,11 @@ macro(enable_cuda_compilation name files)
|
||||
# Add an OBJECT library consisting of CUDA PTX.
|
||||
llvm_add_library(${name}PTX OBJECT PARTIAL_SOURCES_INTENDED ${files})
|
||||
set_property(TARGET obj.${name}PTX PROPERTY CUDA_PTX_COMPILATION ON)
|
||||
if (FLANG_CUDA_RUNTIME_PTX_WITHOUT_GLOBAL_VARS)
|
||||
target_compile_definitions(obj.${name}PTX
|
||||
PRIVATE FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
@ -23,9 +23,11 @@ extern char **environ;
|
||||
|
||||
namespace Fortran::runtime {
|
||||
|
||||
#ifndef FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
RT_OFFLOAD_VAR_GROUP_BEGIN
|
||||
RT_VAR_ATTRS ExecutionEnvironment executionEnvironment;
|
||||
RT_OFFLOAD_VAR_GROUP_END
|
||||
#endif // FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
|
||||
static void SetEnvironmentDefaults(const EnvironmentDefaultList *envDefaults) {
|
||||
if (!envDefaults) {
|
||||
|
@ -19,11 +19,13 @@
|
||||
|
||||
namespace Fortran::runtime::io {
|
||||
|
||||
#ifndef FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
RT_OFFLOAD_VAR_GROUP_BEGIN
|
||||
RT_VAR_ATTRS ExternalFileUnit *defaultInput{nullptr}; // unit 5
|
||||
RT_VAR_ATTRS ExternalFileUnit *defaultOutput{nullptr}; // unit 6
|
||||
RT_VAR_ATTRS ExternalFileUnit *errorOutput{nullptr}; // unit 0 extension
|
||||
RT_OFFLOAD_VAR_GROUP_END
|
||||
#endif // FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
|
||||
RT_OFFLOAD_API_GROUP_BEGIN
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
namespace Fortran::runtime {
|
||||
|
||||
#ifndef FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
// clang-format off
|
||||
RT_OFFLOAD_VAR_GROUP_BEGIN
|
||||
const RT_CONST_VAR_ATTRS std::uint8_t UTF8FirstByteTable[256]{
|
||||
@ -40,6 +41,7 @@ const RT_CONST_VAR_ATTRS std::uint8_t UTF8FirstByteTable[256]{
|
||||
};
|
||||
RT_OFFLOAD_VAR_GROUP_END
|
||||
// clang-format on
|
||||
#endif // FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS
|
||||
|
||||
RT_OFFLOAD_API_GROUP_BEGIN
|
||||
// Non-minimal encodings are accepted.
|
||||
|
Loading…
x
Reference in New Issue
Block a user