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