@@ -156,9 +156,23 @@ if (NOT LIBCXXABI_ENABLE_SHARED AND NOT LIBCXXABI_ENABLE_STATIC)
156
156
message (FATAL_ERROR "libc++abi must be built as either a shared or static library." )
157
157
endif ()
158
158
159
- set (LIBCXXABI_LIBCXX_INCLUDES "${LIBCXXABI_LIBCXX_PATH} /include" CACHE PATH
159
+ # TODO: This is a workaround for the fact that Standalone builds can't use
160
+ # targets from the other runtimes (so the cxx-headers target doesn't exist).
161
+ set (LIBCXXABI_LIBCXX_INCLUDES "" CACHE PATH
160
162
"Specify path to libc++ includes." )
161
- message (STATUS "Libc++abi will be using libc++ includes from ${LIBCXXABI_LIBCXX_INCLUDES} " )
163
+ if (LIBCXXABI_STANDALONE_BUILD )
164
+ if (NOT IS_DIRECTORY ${LIBCXXABI_LIBCXX_INCLUDES} )
165
+ message (FATAL_ERROR
166
+ "LIBCXXABI_LIBCXX_INCLUDES=${LIBCXXABI_LIBCXX_INCLUDES} is not a valid directory. "
167
+ "Please provide the path to where the libc++ headers have been installed." )
168
+ endif ()
169
+ add_library (cxx-headers INTERFACE )
170
+ if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" OR "${CMAKE_CXX_SIMULATE_ID} " STREQUAL "MSVC" )
171
+ target_compile_options (cxx-headers INTERFACE /I "${LIBCXXABI_LIBCXX_INCLUDES} " )
172
+ else ()
173
+ target_compile_options (cxx-headers INTERFACE -I "${LIBCXXABI_LIBCXX_INCLUDES} " )
174
+ endif ()
175
+ endif ()
162
176
163
177
option (LIBCXXABI_HERMETIC_STATIC_LIBRARY
164
178
"Do not export any symbols from the static library." OFF )
@@ -180,16 +194,19 @@ set(CMAKE_MODULE_PATH
180
194
)
181
195
182
196
if (LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE )
197
+ set (LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR} )
183
198
set (LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR} /${LLVM_DEFAULT_TARGET_TRIPLE}/c++ )
184
199
set (LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++ )
185
200
if (LIBCXX_LIBDIR_SUBDIR )
186
201
string (APPEND LIBCXXABI_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR} )
187
202
string (APPEND LIBCXXABI_INSTALL_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR} )
188
203
endif ()
189
204
elseif (LLVM_LIBRARY_OUTPUT_INTDIR )
205
+ set (LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR} )
190
206
set (LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR} )
191
207
set (LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX} )
192
208
else ()
209
+ set (LIBCXXABI_HEADER_DIR ${CMAKE_BINARY_DIR} )
193
210
set (LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR} /lib${LIBCXXABI_LIBDIR_SUFFIX} )
194
211
set (LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX} )
195
212
endif ()
0 commit comments