Add python3-setuptools dependency for python 3.12
[platform/upstream/opencv.git] / cmake / OpenCVGenConfig.cmake
1 # --------------------------------------------------------------------------------------------
2 #  Installation for CMake Module:  OpenCVConfig.cmake
3 #  Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"
4 #  Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install"
5 #  Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake  -> For use within binary installers/packages
6 # -------------------------------------------------------------------------------------------
7
8 if(INSTALL_TO_MANGLED_PATHS)
9   set(OpenCV_USE_MANGLED_PATHS_CONFIGCMAKE TRUE)
10 else()
11   set(OpenCV_USE_MANGLED_PATHS_CONFIGCMAKE FALSE)
12 endif()
13
14 if(HAVE_CUDA)
15   ocv_cmake_configure("${CMAKE_CURRENT_LIST_DIR}/templates/OpenCVConfig-CUDA.cmake.in" CUDA_CONFIGCMAKE @ONLY)
16 endif()
17
18 if(ANDROID)
19   if(NOT ANDROID_NATIVE_API_LEVEL)
20     set(OpenCV_ANDROID_NATIVE_API_LEVEL_CONFIGCMAKE 0)
21   else()
22     set(OpenCV_ANDROID_NATIVE_API_LEVEL_CONFIGCMAKE "${ANDROID_NATIVE_API_LEVEL}")
23   endif()
24   ocv_cmake_configure("${CMAKE_CURRENT_LIST_DIR}/templates/OpenCVConfig-ANDROID.cmake.in" ANDROID_CONFIGCMAKE @ONLY)
25 endif()
26
27 set(OPENCV_MODULES_CONFIGCMAKE ${OPENCV_MODULES_PUBLIC})
28
29 if(BUILD_FAT_JAVA_LIB AND HAVE_opencv_java)
30   list(APPEND OPENCV_MODULES_CONFIGCMAKE opencv_java)
31 endif()
32
33 if(BUILD_OBJC AND HAVE_opencv_objc)
34   list(APPEND OPENCV_MODULES_CONFIGCMAKE opencv_objc)
35 endif()
36
37
38 # -------------------------------------------------------------------------------------------
39 #  Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"
40 # -------------------------------------------------------------------------------------------
41 set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${OpenCV_SOURCE_DIR}/include\"")
42
43 foreach(m ${OPENCV_MODULES_BUILD})
44   if(EXISTS "${OPENCV_MODULE_${m}_LOCATION}/include")
45     set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "${OpenCV_INCLUDE_DIRS_CONFIGCMAKE} \"${OPENCV_MODULE_${m}_LOCATION}/include\"")
46   endif()
47 endforeach()
48
49 export(EXPORT OpenCVModules FILE "${CMAKE_BINARY_DIR}/OpenCVModules.cmake")
50
51 if(TARGET ippicv AND NOT BUILD_SHARED_LIBS)
52   set(USE_IPPICV TRUE)
53   file(RELATIVE_PATH IPPICV_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_BINARY_DIR}" "${IPPICV_LOCATION_PATH}")
54   ocv_cmake_configure("${CMAKE_CURRENT_LIST_DIR}/templates/OpenCVConfig-IPPICV.cmake.in" IPPICV_CONFIGCMAKE @ONLY)
55 else()
56   set(USE_IPPICV FALSE)
57 endif()
58
59 if(TARGET ippiw AND NOT BUILD_SHARED_LIBS AND IPPIW_INSTALL_PATH)
60   set(USE_IPPIW TRUE)
61   file(RELATIVE_PATH IPPIW_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_BINARY_DIR}" "${IPPIW_LOCATION_PATH}")
62   ocv_cmake_configure("${CMAKE_CURRENT_LIST_DIR}/templates/OpenCVConfig-IPPIW.cmake.in" IPPIW_CONFIGCMAKE @ONLY)
63 else()
64   set(USE_IPPIW FALSE)
65 endif()
66
67 ocv_cmake_hook(PRE_CMAKE_CONFIG_BUILD)
68 configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" @ONLY)
69 #support for version checking when finding opencv. find_package(OpenCV 2.3.1 EXACT) should now work.
70 configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig-version.cmake" @ONLY)
71
72 # --------------------------------------------------------------------------------------------
73 #  Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install"
74 # -------------------------------------------------------------------------------------------
75 file(RELATIVE_PATH OpenCV_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/${OPENCV_CONFIG_INSTALL_PATH}/" ${CMAKE_INSTALL_PREFIX})
76 if (IS_ABSOLUTE ${OPENCV_INCLUDE_INSTALL_PATH})
77   set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_INCLUDE_INSTALL_PATH}\"")
78 else()
79   set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}\"")
80 endif()
81
82 if(USE_IPPICV)
83   file(RELATIVE_PATH IPPICV_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}" "${IPPICV_INSTALL_PATH}")
84   ocv_cmake_configure("${CMAKE_CURRENT_LIST_DIR}/templates/OpenCVConfig-IPPICV.cmake.in" IPPICV_CONFIGCMAKE @ONLY)
85 endif()
86 if(USE_IPPIW)
87   file(RELATIVE_PATH IPPIW_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}" "${IPPIW_INSTALL_PATH}")
88   ocv_cmake_configure("${CMAKE_CURRENT_LIST_DIR}/templates/OpenCVConfig-IPPIW.cmake.in" IPPIW_CONFIGCMAKE @ONLY)
89 endif()
90
91 function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME)
92   ocv_path_join(__install_nested "${OPENCV_CONFIG_INSTALL_PATH}" "${NESTED_PATH}")
93   ocv_path_join(__tmp_nested "${TMP_DIR}" "${NESTED_PATH}")
94
95   file(RELATIVE_PATH OpenCV_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/${__install_nested}" "${CMAKE_INSTALL_PREFIX}/")
96
97   ocv_cmake_hook(PRE_CMAKE_CONFIG_INSTALL)
98   configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.in" "${TMP_DIR}/OpenCVConfig-version.cmake" @ONLY)
99
100   configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig.cmake.in" "${__tmp_nested}/OpenCVConfig.cmake" @ONLY)
101   install(EXPORT OpenCVModules DESTINATION "${__install_nested}" FILE OpenCVModules.cmake COMPONENT dev)
102   install(FILES
103       "${TMP_DIR}/OpenCVConfig-version.cmake"
104       "${__tmp_nested}/OpenCVConfig.cmake"
105       DESTINATION "${__install_nested}" COMPONENT dev)
106
107   if(ROOT_NAME)
108     # Root config file
109     configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/${ROOT_NAME}" "${TMP_DIR}/OpenCVConfig.cmake" @ONLY)
110     install(FILES
111         "${TMP_DIR}/OpenCVConfig-version.cmake"
112         "${TMP_DIR}/OpenCVConfig.cmake"
113         DESTINATION "${OPENCV_CONFIG_INSTALL_PATH}" COMPONENT dev)
114   endif()
115 endfunction()
116
117 if((CMAKE_HOST_SYSTEM_NAME MATCHES "Linux" OR UNIX) AND NOT ANDROID)
118   ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "" "")
119 endif()
120
121 if(ANDROID)
122   ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "abi-${ANDROID_NDK_ABI_NAME}" "OpenCVConfig.root-ANDROID.cmake.in")
123   install(FILES "${OpenCV_SOURCE_DIR}/platforms/android/android.toolchain.cmake" DESTINATION "${OPENCV_CONFIG_INSTALL_PATH}" COMPONENT dev)
124 endif()
125
126 # --------------------------------------------------------------------------------------------
127 #  Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake  -> For use within binary installers/packages
128 # --------------------------------------------------------------------------------------------
129 if(WIN32)
130   if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows AND NOT OPENCV_SKIP_CMAKE_ROOT_CONFIG)
131     ocv_gen_config("${CMAKE_BINARY_DIR}/win-install"
132                    "${OPENCV_INSTALL_BINARIES_PREFIX}${OPENCV_INSTALL_BINARIES_SUFFIX}"
133                    "OpenCVConfig.root-WIN32.cmake.in")
134   else()
135     ocv_gen_config("${CMAKE_BINARY_DIR}/win-install" "" "")
136   endif()
137 endif()