blob: a193045fc0bfa00d48a8bde418471b6c5ce11daa [file] [log] [blame] [edit]
#===-- cmake/modules/HandleLibs.cmake --------------------------------------===#
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===------------------------------------------------------------------------===#
# Select the C library to use for building flang-rt.
if (FLANG_RT_LIBC_PROVIDER STREQUAL "system")
add_library(flang-rt-libc-headers INTERFACE)
add_library(flang-rt-libc-static INTERFACE)
add_library(flang-rt-libc-shared INTERFACE)
elseif (FLANG_RT_LIBC_PROVIDER STREQUAL "llvm")
add_library(flang-rt-libc-headers INTERFACE)
target_link_libraries(flang-rt-libc-headers INTERFACE libc-headers)
if (FLANG_RT_HAS_NOSTDLIBINC_FLAG)
target_compile_options(flang-rt-libc-headers INTERFACE $<$<COMPILE_LANGUAGE:CXX,C>:-nostdlibinc>)
endif ()
add_library(flang-rt-libc-static INTERFACE)
if (TARGET libc)
target_link_libraries(flang-rt-libc-static INTERFACE libc)
endif ()
if (TARGET libm)
target_link_libraries(flang-rt-libc-static INTERFACE libm)
endif ()
if (FLANG_RT_HAS_NOSTDLIB_FLAG)
target_compile_options(flang-rt-libc-headers INTERFACE $<$<COMPILE_LANGUAGE:CXX,C>:-nostdlib>)
endif ()
# TODO: There's no support for building LLVM libc as a shared library yet.
add_library(flang-rt-libc-shared INTERFACE)
endif ()
# Select the C++ library to use for building flang-rt.
if (FLANG_RT_LIBCXX_PROVIDER STREQUAL "system")
add_library(flang-rt-libcxx-headers INTERFACE)
elseif (FLANG_RT_LIBCXX_PROVIDER STREQUAL "llvm")
add_library(flang-rt-libcxx-headers INTERFACE)
target_link_libraries(flang-rt-libcxx-headers INTERFACE cxx-headers)
if (CXX_SUPPORTS_NOSTDINCXX_FLAG)
target_compile_options(flang-rt-libc-headers INTERFACE $<$<COMPILE_LANGUAGE:CXX,C>:-nostdinc++>)
endif ()
if (FLANG_RT_HAS_STDLIB_FLAG)
target_compile_options(flang-rt-libc-headers INTERFACE
$<$<COMPILE_LANGUAGE:CXX,C>:$<COMPILE_ONLY:-stdlib=libc++>>
)
endif ()
endif ()