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