1 # Build for all components of the ORC runtime support library.
3 # ORC runtime library common implementation files.
8 log_error_to_stderr.cpp
9 run_program_wrapper.cpp
13 # Common implementation headers will go here.
14 set(ORC_COMMON_IMPL_HEADERS
22 simple_packed_serialization.h
24 wrapper_function_utils.h
27 # Now put it all together...
28 include_directories(..)
29 include_directories(../../include)
32 ${COMPILER_RT_COMMON_CFLAGS}
33 ${COMPILER_RT_CXX_CFLAGS})
34 set(ORC_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS})
36 ${COMPILER_RT_UNWINDER_LINK_LIBS}
37 ${COMPILER_RT_CXX_LINK_LIBS})
39 # Allow the ORC runtime to reference LLVM headers.
40 foreach (DIR ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
41 list(APPEND ORC_CFLAGS -I${DIR})
44 add_compiler_rt_component(orc)
46 # ORC uses C++ standard library headers.
47 if (TARGET cxx-headers OR HAVE_LIBCXX)
48 set(ORC_DEPS cxx-headers)
60 ${ORC_COMMON_IMPL_HEADERS}
69 add_compiler_rt_object_libraries(RTOrc
70 OS ${ORC_SUPPORTED_OS}
71 ARCHS ${ORC_SUPPORTED_ARCH}
72 SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}
73 ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}
77 add_compiler_rt_runtime(orc_rt
79 OS ${ORC_SUPPORTED_OS}
80 ARCHS ${ORC_SUPPORTED_ARCH}
83 LINK_FLAGS ${ORC_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
84 LINK_LIBS ${ORC_LINK_LIBS}
88 set(ORC_BUILD_TYPE STATIC)
91 ${ORC_COMMON_IMPL_HEADERS}
98 coff_platform.per_jd.cpp
102 set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
103 set(ORC_CFLAGS ${ORC_CFLAGS} /D_HAS_EXCEPTIONS=0 )
106 set(ORC_BUILD_TYPE STATIC)
109 ${ORC_COMMON_IMPL_HEADERS}
114 ${ORC_COMMON_SOURCES}
123 sysv_reenter.x86-64.S
127 foreach(arch ${ORC_SUPPORTED_ARCH})
128 if(NOT CAN_TARGET_${arch})
132 add_compiler_rt_object_libraries(RTOrc
134 SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}
135 ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}
139 # Common ORC archive for instrumented binaries.
140 add_compiler_rt_runtime(orc_rt
144 LINK_FLAGS ${ORC_LINK_FLAGS}
145 LINK_LIBS ${ORC_LINK_LIBS}
146 OBJECT_LIBS ${ORC_COMMON_RUNTIME_OBJECT_LIBS} RTOrc
151 add_subdirectory(tests)