| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 
 | # 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()
 |