Home | History | Annotate | Download | only in cmake
      1 if (NOT GENERATE_ABI_DESCRIPTOR)
      2   return()
      3 endif()
      4 
      5 set(filename "opencv_abi.xml")
      6 set(path1 "${CMAKE_BINARY_DIR}/${filename}")
      7 
      8 set(modules "${OPENCV_MODULES_PUBLIC}")
      9 ocv_list_filterout(modules "opencv_ts")
     10 
     11 message(STATUS "Generating ABI compliance checker configuration: ${filename}")
     12 
     13 if (OPENCV_VCSVERSION AND NOT OPENCV_VCSVERSION STREQUAL "unknown")
     14   set(OPENCV_ABI_VERSION "${OPENCV_VCSVERSION}")
     15 else()
     16   set(OPENCV_ABI_VERSION "${OPENCV_VERSION}")
     17 endif()
     18 
     19 # Headers
     20 set(OPENCV_ABI_HEADERS "{RELPATH}/${OPENCV_INCLUDE_INSTALL_PATH}")
     21 
     22 # Libraries
     23 set(OPENCV_ABI_LIBRARIES "{RELPATH}/${OPENCV_LIB_INSTALL_PATH}")
     24 
     25 set(OPENCV_ABI_SKIP_HEADERS "")
     26 set(OPENCV_ABI_SKIP_LIBRARIES "")
     27 foreach(mod ${OPENCV_MODULES_BUILD})
     28   string(REGEX REPLACE "^opencv_" "" mod "${mod}")
     29   if(NOT "${OPENCV_MODULE_opencv_${mod}_LOCATION}" STREQUAL "${OpenCV_SOURCE_DIR}/modules/${mod}")
     30     # headers
     31     foreach(h ${OPENCV_MODULE_opencv_${mod}_HEADERS})
     32       file(RELATIVE_PATH h "${OPENCV_MODULE_opencv_${mod}_LOCATION}/include" "${h}")
     33       list(APPEND OPENCV_ABI_SKIP_HEADERS "${h}")
     34     endforeach()
     35     # libraries
     36     set(lib_name "")
     37     get_target_property(lib_name opencv_${mod} LOCATION)
     38     get_filename_component(lib_name "${lib_name}" NAME)
     39     list(APPEND OPENCV_ABI_SKIP_LIBRARIES "${lib_name}")
     40   endif()
     41 endforeach()
     42 string(REPLACE ";" "\n    " OPENCV_ABI_SKIP_HEADERS "${OPENCV_ABI_SKIP_HEADERS}")
     43 string(REPLACE ";" "\n    " OPENCV_ABI_SKIP_LIBRARIES "${OPENCV_ABI_SKIP_LIBRARIES}")
     44 
     45 # Options
     46 set(OPENCV_ABI_GCC_OPTIONS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
     47 string(REGEX REPLACE "([^ ]) +([^ ])" "\\1\\n    \\2" OPENCV_ABI_GCC_OPTIONS "${OPENCV_ABI_GCC_OPTIONS}")
     48 
     49 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/opencv_abi.xml.in" "${path1}")
     50