[mlir][py] Enable loading only specified dialects during creation. (#121421)
[llvm-project.git] / compiler-rt / lib / orc / CMakeLists.txt
blob7da230d8296e9062545ac41132c32834ab281943
1 # Build for all components of the ORC runtime support library.
3 # ORC runtime library common implementation files.
4 set(ORC_COMMON_SOURCES
5   debug.cpp
6   dlfcn_wrapper.cpp
7   extensible_rtti.cpp
8   log_error_to_stderr.cpp
9   run_program_wrapper.cpp
10   resolve.cpp
11   )
13 # Common implementation headers will go here.
14 set(ORC_COMMON_IMPL_HEADERS
15   adt.h
16   common.h
17   compiler.h
18   endianness.h
19   error.h
20   executor_address.h
21   extensible_rtti.h
22   simple_packed_serialization.h
23   stl_extras.h
24   wrapper_function_utils.h
25   )
27 # Now put it all together...
28 include_directories(..)
29 include_directories(../../include)
31 set(ORC_CFLAGS
32   ${COMPILER_RT_COMMON_CFLAGS}
33   ${COMPILER_RT_CXX_CFLAGS})
34 set(ORC_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS})
35 set(ORC_LINK_LIBS
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})
42 endforeach()
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)
49 endif()
51 if (APPLE)
52   set(ORC_ASM_SOURCES
53     macho_tlv.x86-64.S
54     macho_tlv.arm64.S
55     sysv_reenter.arm64.S
56     sysv_reenter.x86-64.S
57     )
59   set(ORC_IMPL_HEADERS
60     ${ORC_COMMON_IMPL_HEADERS}
61     macho_platform.h
62     )
64   set(ORC_SOURCES
65     ${ORC_COMMON_SOURCES}
66     macho_platform.cpp
67     )
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}
74     CFLAGS ${ORC_CFLAGS}
75     DEPS ${ORC_DEPS})
77   add_compiler_rt_runtime(orc_rt
78     STATIC
79     OS ${ORC_SUPPORTED_OS}
80     ARCHS ${ORC_SUPPORTED_ARCH}
81     OBJECT_LIBS RTOrc
82     CFLAGS ${ORC_CFLAGS}
83     LINK_FLAGS ${ORC_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
84     LINK_LIBS ${ORC_LINK_LIBS}
85     PARENT_TARGET orc)
86 else() # not Apple
87   if (WIN32)
88     set(ORC_BUILD_TYPE STATIC)
90     set(ORC_IMPL_HEADERS
91       ${ORC_COMMON_IMPL_HEADERS}
92       coff_platform.h
93       )
95     set(ORC_SOURCES
96       ${ORC_COMMON_SOURCES}
97       coff_platform.cpp
98       coff_platform.per_jd.cpp
99       )
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)
108     set(ORC_IMPL_HEADERS
109       ${ORC_COMMON_IMPL_HEADERS}
110       elfnix_platform.h
111       )
113     set(ORC_SOURCES
114       ${ORC_COMMON_SOURCES}
115       elfnix_platform.cpp
116       )
118     set(ORC_ASM_SOURCES
119       elfnix_tls.x86-64.S
120       elfnix_tls.aarch64.S
121       elfnix_tls.ppc64.S
122       sysv_reenter.arm64.S
123       sysv_reenter.x86-64.S
124       )
125   endif()
127   foreach(arch ${ORC_SUPPORTED_ARCH})
128     if(NOT CAN_TARGET_${arch})
129       continue()
130     endif()
132     add_compiler_rt_object_libraries(RTOrc
133       ARCHS ${arch}
134       SOURCES ${ORC_SOURCES} ${ORC_ASM_SOURCES}
135       ADDITIONAL_HEADERS ${ORC_IMPL_HEADERS}
136       CFLAGS ${ORC_CFLAGS}
137       DEPS ${ORC_DEPS})
139     # Common ORC archive for instrumented binaries.
140     add_compiler_rt_runtime(orc_rt
141       ${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} RTOrc
147       PARENT_TARGET orc)
148   endforeach()
149 endif() # not Apple
151 add_subdirectory(tests)