107 lines
2.9 KiB
Text
107 lines
2.9 KiB
Text
|
##===----------------------------------------------------------------------===##
|
||
|
#
|
||
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||
|
# See https://llvm.org/LICENSE.txt for license information.
|
||
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||
|
#
|
||
|
##===----------------------------------------------------------------------===##
|
||
|
#
|
||
|
# Common parts which can be used by all plugins
|
||
|
#
|
||
|
##===----------------------------------------------------------------------===##
|
||
|
|
||
|
# NOTE: Don't try to build `PluginInterface` using `add_llvm_library` because we
|
||
|
# don't want to export `PluginInterface` while `add_llvm_library` requires that.
|
||
|
add_library(PluginCommon OBJECT
|
||
|
src/PluginInterface.cpp
|
||
|
src/GlobalHandler.cpp
|
||
|
src/JIT.cpp
|
||
|
src/RPC.cpp
|
||
|
src/Utils/ELF.cpp
|
||
|
)
|
||
|
|
||
|
# Only enable JIT for those targets that LLVM can support.
|
||
|
string(TOUPPER "${LLVM_TARGETS_TO_BUILD}" TargetsSupported)
|
||
|
foreach(Target ${TargetsSupported})
|
||
|
target_compile_definitions(PluginCommon PRIVATE "LIBOMPTARGET_JIT_${Target}")
|
||
|
endforeach()
|
||
|
|
||
|
# This is required when using LLVM libraries.
|
||
|
llvm_update_compile_flags(PluginCommon)
|
||
|
|
||
|
if (LLVM_LINK_LLVM_DYLIB)
|
||
|
set(llvm_libs LLVM)
|
||
|
else()
|
||
|
llvm_map_components_to_libnames(llvm_libs
|
||
|
${LLVM_TARGETS_TO_BUILD}
|
||
|
AggressiveInstCombine
|
||
|
Analysis
|
||
|
BinaryFormat
|
||
|
BitReader
|
||
|
BitWriter
|
||
|
CodeGen
|
||
|
Core
|
||
|
Extensions
|
||
|
InstCombine
|
||
|
Instrumentation
|
||
|
IPO
|
||
|
IRReader
|
||
|
Linker
|
||
|
MC
|
||
|
Object
|
||
|
Passes
|
||
|
Remarks
|
||
|
ScalarOpts
|
||
|
Support
|
||
|
Target
|
||
|
TargetParser
|
||
|
TransformUtils
|
||
|
Vectorize
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
target_link_libraries(PluginCommon
|
||
|
PUBLIC
|
||
|
${llvm_libs}
|
||
|
)
|
||
|
|
||
|
# Include the RPC server from the `libc` project if availible.
|
||
|
if(TARGET llvmlibc_rpc_server AND ${LIBOMPTARGET_GPU_LIBC_SUPPORT})
|
||
|
target_link_libraries(PluginCommon PRIVATE llvmlibc_rpc_server)
|
||
|
target_compile_definitions(PluginCommon PRIVATE LIBOMPTARGET_RPC_SUPPORT)
|
||
|
elseif(${LIBOMPTARGET_GPU_LIBC_SUPPORT})
|
||
|
find_library(llvmlibc_rpc_server NAMES llvmlibc_rpc_server
|
||
|
PATHS ${LIBOMPTARGET_LLVM_LIBRARY_DIR} NO_DEFAULT_PATH)
|
||
|
if(llvmlibc_rpc_server)
|
||
|
target_link_libraries(PluginCommon PRIVATE llvmlibc_rpc_server)
|
||
|
target_compile_definitions(PluginCommon PRIVATE LIBOMPTARGET_RPC_SUPPORT)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
if ((OMPT_TARGET_DEFAULT) AND (LIBOMPTARGET_OMPT_SUPPORT))
|
||
|
target_link_libraries(PluginCommon PUBLIC OMPT)
|
||
|
endif()
|
||
|
|
||
|
# Define the TARGET_NAME and DEBUG_PREFIX.
|
||
|
target_compile_definitions(PluginCommon PRIVATE
|
||
|
TARGET_NAME="PluginInterface"
|
||
|
DEBUG_PREFIX="PluginInterface"
|
||
|
)
|
||
|
|
||
|
target_compile_options(PluginCommon PUBLIC ${offload_compile_flags})
|
||
|
target_link_options(PluginCommon PUBLIC ${offload_link_flags})
|
||
|
|
||
|
target_include_directories(PluginCommon
|
||
|
PRIVATE
|
||
|
${LIBOMPTARGET_INCLUDE_DIR}
|
||
|
PUBLIC
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||
|
)
|
||
|
|
||
|
set_target_properties(PluginCommon PROPERTIES
|
||
|
POSITION_INDEPENDENT_CODE ON
|
||
|
CXX_VISIBILITY_PRESET protected)
|
||
|
|
||
|
add_subdirectory(OMPT)
|
||
|
|