#=============================================================================== # Define targets for linking against the selected C library # # After including this file, the following targets are defined: # - libcxx-libc-headers: An interface target that allows getting access to the # headers of the selected C library. # - libcxx-libc-shared: A target representing the selected shared C library. # - libcxx-libc-static: A target representing the selected static C library. #=============================================================================== # Link against a system-provided libc if (LIBCXX_LIBC STREQUAL "system") add_library(libcxx-libc-headers INTERFACE) add_library(libcxx-libc-static INTERFACE) add_library(libcxx-libc-shared INTERFACE) # Link against the in-tree LLVM libc elseif (LIBCXX_LIBC STREQUAL "llvm-libc") add_library(libcxx-libc-headers INTERFACE) target_link_libraries(libcxx-libc-headers INTERFACE libc-headers) if(CXX_SUPPORTS_NOSTDLIBINC_FLAG) target_compile_options(libcxx-libc-headers INTERFACE "-nostdlibinc") endif() add_library(libcxx-libc-static INTERFACE) if (TARGET libc) target_link_libraries(libcxx-libc-static INTERFACE libc) endif() if (TARGET libm) target_link_libraries(libcxx-libc-static INTERFACE libm) endif() if (CXX_SUPPORTS_NOLIBC_FLAG) target_link_options(libcxx-libc-static INTERFACE "-nolibc") endif() # TODO: There's no support for building LLVM libc as a shared library yet. add_library(libcxx-libc-shared INTERFACE) endif()