Home | History | Annotate | Download | only in abi
      1 
      2 if (DEFINED TARGET_TRIPLE)
      3     # Ignore the minor and patchlevel versions of the darwin
      4     # target.
      5     string(REGEX REPLACE "darwin16\\.[0-9]\\.[0-9]" "darwin16"
      6       GENERIC_TARGET_TRIPLE "${TARGET_TRIPLE}")
      7 endif()
      8 
      9 # Detect if we are building in the same configuration used to generate
     10 # the abilist files.
     11 if (DEFINED GENERIC_TARGET_TRIPLE
     12     AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/${GENERIC_TARGET_TRIPLE}.abilist"
     13     AND TARGET cxx_shared
     14     AND ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxabi" OR
     15          (APPLE AND "${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "default"))
     16     AND NOT LIBCXX_ABI_UNSTABLE
     17     AND LIBCXX_ABI_VERSION EQUAL "1")
     18     set(LIBCXX_HAS_ABILIST_CONFIGURATION 1 CACHE INTERNAL "")
     19 else()
     20     if (NOT DEFINED LIBCXX_HAS_ABILIST_CONFIGURATION)
     21         message(STATUS "libc++ configuration differs from the abilist configuration. "
     22                 "check-cxx-abilist target is not supported")
     23     endif()
     24     set(LIBCXX_HAS_ABILIST_CONFIGURATION 0 CACHE INTERNAL "")
     25 endif()
     26 
     27 
     28 if (LIBCXX_HAS_ABILIST_CONFIGURATION)
     29     set(ABILIST_FILE "${CMAKE_CURRENT_LIST_DIR}/${GENERIC_TARGET_TRIPLE}.abilist")
     30     set(SYMDIFF_EXE "${LIBCXX_SOURCE_DIR}/utils/sym_diff.py")
     31     add_custom_target(check-cxx-abilist
     32             ${SYMDIFF_EXE} --only-stdlib-symbols --strict ${ABILIST_FILE}
     33             $<TARGET_SONAME_FILE:cxx_shared>
     34             DEPENDS cxx_shared
     35             COMMENT "Testing ABI compatibility...")
     36 endif()
     37