brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · b8d1b03 Raw
152 lines · plain
1# Build for all components of the ORC runtime support library.2 3# ORC runtime library common implementation files.4set(ORC_COMMON_SOURCES5  debug.cpp6  dlfcn_wrapper.cpp7  rtti.cpp8  log_error_to_stderr.cpp9  run_program_wrapper.cpp10  resolve.cpp11  )12 13# Common implementation headers will go here.14set(ORC_COMMON_IMPL_HEADERS15  adt.h16  common.h17  compiler.h18  endianness.h19  error.h20  executor_address.h21  rtti.h22  simple_packed_serialization.h23  stl_extras.h24  wrapper_function_utils.h25  )26 27# Now put it all together...28include_directories(..)29include_directories(../../include)30 31set(ORC_CFLAGS32  ${COMPILER_RT_COMMON_CFLAGS}33  ${COMPILER_RT_CXX_CFLAGS})34set(ORC_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS})35set(ORC_LINK_LIBS36  ${COMPILER_RT_UNWINDER_LINK_LIBS}37  ${COMPILER_RT_CXX_LINK_LIBS})38 39# Allow the ORC runtime to reference LLVM headers.40foreach (DIR ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})41  list(APPEND ORC_CFLAGS -I${DIR})42endforeach()43 44add_compiler_rt_component(orc)45 46# ORC uses C++ standard library headers.47if (TARGET cxx-headers OR HAVE_LIBCXX)48  set(ORC_DEPS cxx-headers)49endif()50 51if (APPLE)52  set(ORC_ASM_SOURCES53    macho_tlv.x86-64.S54    macho_tlv.arm64.S55    sysv_reenter.arm64.S56    sysv_reenter.x86-64.S57    )58 59  set(ORC_IMPL_HEADERS60    ${ORC_COMMON_IMPL_HEADERS}61    macho_platform.h62    )63 64  set(ORC_SOURCES65    ${ORC_COMMON_SOURCES}66    macho_platform.cpp67    )68 69  add_compiler_rt_object_libraries(RTOrc70    OS ${ORC_SUPPORTED_OS}71    ARCHS ${ORC_SUPPORTED_ARCH}72    SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}73    ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}74    CFLAGS ${ORC_CFLAGS}75    DEPS ${ORC_DEPS})76 77  add_compiler_rt_runtime(orc_rt78    STATIC79    OS ${ORC_SUPPORTED_OS}80    ARCHS ${ORC_SUPPORTED_ARCH}81    OBJECT_LIBS RTOrc82    CFLAGS ${ORC_CFLAGS}83    LINK_FLAGS ${ORC_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}84    LINK_LIBS ${ORC_LINK_LIBS}85    PARENT_TARGET orc)86else() # not Apple87  if (WIN32)88    set(ORC_BUILD_TYPE STATIC)89 90    set(ORC_IMPL_HEADERS91      ${ORC_COMMON_IMPL_HEADERS}92      coff_platform.h93      )94 95    set(ORC_SOURCES96      ${ORC_COMMON_SOURCES}97      coff_platform.cpp98      coff_platform.per_jd.cpp99      )100 101    if (MSVC)102      set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")103      set(ORC_CFLAGS ${ORC_CFLAGS} /D_HAS_EXCEPTIONS=0 )104    endif()105  else()106    set(ORC_BUILD_TYPE STATIC)107 108    set(ORC_IMPL_HEADERS109      ${ORC_COMMON_IMPL_HEADERS}110      elfnix_platform.h111      )112 113    set(ORC_SOURCES114      ${ORC_COMMON_SOURCES}115      elfnix_platform.cpp116      )117 118    set(ORC_ASM_SOURCES119      elfnix_tls.x86-64.S120      elfnix_tls.aarch64.S121      elfnix_tls.ppc64.S122      sysv_reenter.arm64.S123      sysv_reenter.x86-64.S124      )125  endif()126 127  foreach(arch ${ORC_SUPPORTED_ARCH})128    if(NOT CAN_TARGET_${arch})129      continue()130    endif()131 132    add_compiler_rt_object_libraries(RTOrc133      ARCHS ${arch}134      SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}135      ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}136      CFLAGS ${ORC_CFLAGS}137      DEPS ${ORC_DEPS})138 139    # Common ORC archive for instrumented binaries.140    add_compiler_rt_runtime(orc_rt141      ${ORC_BUILD_TYPE}142      ARCHS ${arch}143      CFLAGS ${ORC_CFLAGS}144      LINK_FLAGS ${ORC_LINK_FLAGS}145      LINK_LIBS ${ORC_LINK_LIBS}146      OBJECT_LIBS ${ORC_COMMON_RUNTIME_OBJECT_LIBS} RTOrc147      PARENT_TARGET orc)148  endforeach()149endif() # not Apple150 151add_subdirectory(tests)152