xref: /aosp_15_r20/external/bcc/cmake/static_libstdc++.cmake (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1*387f9dfdSAndroid Build Coastguard Worker# only turn on static-libstdc++ if also linking statically against clang
2*387f9dfdSAndroid Build Coastguard Workerstring(REGEX MATCH ".*[.]a$" LIBCLANG_ISSTATIC "${libclangBasic}")
3*387f9dfdSAndroid Build Coastguard Worker# if gcc 4.9 or higher is used, static libstdc++ is a good option
4*387f9dfdSAndroid Build Coastguard Workerif (CMAKE_COMPILER_IS_GNUCC AND LIBCLANG_ISSTATIC AND (NOT ENABLE_LLVM_SHARED OR libclang-shared STREQUAL "libclang-shared-NOTFOUND"))
5*387f9dfdSAndroid Build Coastguard Worker  execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
6*387f9dfdSAndroid Build Coastguard Worker  if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
7*387f9dfdSAndroid Build Coastguard Worker    execute_process(COMMAND ${CMAKE_C_COMPILER} -print-libgcc-file-name OUTPUT_VARIABLE GCC_LIB)
8*387f9dfdSAndroid Build Coastguard Worker    get_filename_component(GCC_DIR "${GCC_LIB}" DIRECTORY)
9*387f9dfdSAndroid Build Coastguard Worker    find_library(GCC_LIBSTDCPP libstdc++.a PATHS "${GCC_DIR}" NO_DEFAULT_PATH)
10*387f9dfdSAndroid Build Coastguard Worker    if (GCC_LIBSTDCPP)
11*387f9dfdSAndroid Build Coastguard Worker      message(STATUS "Using static-libstdc++")
12*387f9dfdSAndroid Build Coastguard Worker      set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
13*387f9dfdSAndroid Build Coastguard Worker    endif()
14*387f9dfdSAndroid Build Coastguard Worker  endif()
15*387f9dfdSAndroid Build Coastguard Workerendif()
16