forked from OSchip/llvm-project
116 lines
2.6 KiB
CMake
116 lines
2.6 KiB
CMake
# Build for all components of the ORC runtime support library.
|
|
|
|
# ORC runtime library implementation files.
|
|
set(ORC_SOURCES
|
|
debug.cpp
|
|
extensible_rtti.cpp
|
|
log_error_to_stderr.cpp
|
|
macho_ehframe_registration.cpp
|
|
macho_platform.cpp
|
|
elfnix_platform.cpp
|
|
run_program_wrapper.cpp
|
|
)
|
|
|
|
# Implementation files for all ORC architectures.
|
|
set(ALL_ORC_ASM_SOURCES
|
|
macho_tlv.x86-64.S
|
|
macho_tlv.arm64.S
|
|
elfnix_tls.x86-64.S
|
|
)
|
|
|
|
set(ORC_IMPL_HEADERS
|
|
# Implementation headers will go here.
|
|
adt.h
|
|
c_api.h
|
|
common.h
|
|
compiler.h
|
|
endianness.h
|
|
error.h
|
|
executor_address.h
|
|
extensible_rtti.h
|
|
macho_platform.h
|
|
simple_packed_serialization.h
|
|
stl_extras.h
|
|
wrapper_function_utils.h
|
|
)
|
|
|
|
# Create list of all source files for
|
|
# consumption by tests.
|
|
set(ORC_ALL_SOURCE_FILES
|
|
${ORC_SOURCES}
|
|
${ALL_ORC_ASM_SOURCES}
|
|
${ORC_IMPL_HEADERS}
|
|
)
|
|
|
|
list(REMOVE_DUPLICATES ORC_ALL_SOURCE_FILES)
|
|
|
|
# Now put it all together...
|
|
include_directories(..)
|
|
include_directories(../../include)
|
|
|
|
set(ORC_CFLAGS ${COMPILER_RT_COMMON_CFLAGS})
|
|
|
|
# Allow the ORC runtime to reference LLVM headers.
|
|
foreach (DIR ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
|
|
list(APPEND ORC_CFLAGS -I${DIR})
|
|
endforeach()
|
|
|
|
add_compiler_rt_component(orc)
|
|
|
|
# ORC uses C++ standard library headers.
|
|
if (TARGET cxx-headers OR HAVE_LIBCXX)
|
|
set(ORC_DEPS cxx-headers)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
add_asm_sources(ORC_ASM_SOURCES
|
|
macho_tlv.x86-64.S
|
|
macho_tlv.arm64.S
|
|
)
|
|
|
|
add_compiler_rt_object_libraries(RTOrc
|
|
OS ${ORC_SUPPORTED_OS}
|
|
ARCHS ${ORC_SUPPORTED_ARCH}
|
|
SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}
|
|
ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}
|
|
CFLAGS ${ORC_CFLAGS}
|
|
DEPS ${ORC_DEPS})
|
|
|
|
add_compiler_rt_runtime(clang_rt.orc
|
|
STATIC
|
|
OS ${ORC_SUPPORTED_OS}
|
|
ARCHS ${ORC_SUPPORTED_ARCH}
|
|
OBJECT_LIBS RTOrc
|
|
CFLAGS ${ORC_CFLAGS}
|
|
LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
|
|
LINK_LIBS ${ORC_LINK_LIBS}
|
|
PARENT_TARGET orc)
|
|
else() # not Apple
|
|
add_asm_sources(ORC_ASM_SOURCES elfnix_tls.x86-64.S)
|
|
|
|
foreach(arch ${ORC_SUPPORTED_ARCH})
|
|
if(NOT CAN_TARGET_${arch})
|
|
continue()
|
|
endif()
|
|
|
|
add_compiler_rt_object_libraries(RTOrc
|
|
ARCHS ${arch}
|
|
SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}
|
|
ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}
|
|
CFLAGS ${ORC_CFLAGS}
|
|
DEPS ${ORC_DEPS})
|
|
|
|
# Common ORC archive for instrumented binaries.
|
|
add_compiler_rt_runtime(clang_rt.orc
|
|
STATIC
|
|
ARCHS ${arch}
|
|
CFLAGS ${ORC_CFLAGS}
|
|
OBJECT_LIBS ${ORC_COMMON_RUNTIME_OBJECT_LIBS} RTOrc
|
|
PARENT_TARGET orc)
|
|
endforeach()
|
|
endif() # not Apple
|
|
|
|
if(COMPILER_RT_INCLUDE_TESTS)
|
|
add_subdirectory(unittests)
|
|
endif()
|