@@ -163,16 +163,20 @@ macro(ocv_add_module _name)
163
163
164
164
set (OPENCV_MODULE_${the_module} _LINK_DEPS "" CACHE INTERNAL "" )
165
165
166
+ set (ADD_MODULE_ARGN ${ARGN} )
167
+ ocv_cmake_hook(PRE_ADD_MODULE)
168
+ ocv_cmake_hook(PRE_ADD_MODULE_${the_module} )
169
+
166
170
# parse list of dependencies
167
171
if (" ${ARGV1} " STREQUAL " INTERNAL" OR " ${ARGV1} " STREQUAL " BINDINGS" )
168
172
set (OPENCV_MODULE_${the_module} _CLASS "${ARGV1} " CACHE INTERNAL "The category of the module" )
169
- set (__ocv_argn__ ${ARGN } )
173
+ set (__ocv_argn__ ${ADD_MODULE_ARGN } )
170
174
list (REMOVE_AT __ocv_argn__ 0)
171
175
ocv_add_dependencies(${the_module} ${__ocv_argn__} )
172
176
unset (__ocv_argn__)
173
177
else ()
174
178
set (OPENCV_MODULE_${the_module} _CLASS "PUBLIC" CACHE INTERNAL "The category of the module" )
175
- ocv_add_dependencies(${the_module} ${ARGN } )
179
+ ocv_add_dependencies(${the_module} ${ADD_MODULE_ARGN } )
176
180
if (BUILD_${the_module} )
177
181
set (OPENCV_MODULES_PUBLIC ${OPENCV_MODULES_PUBLIC} "${the_module} " CACHE INTERNAL "List of OpenCV modules marked for export" )
178
182
endif ()
@@ -212,6 +216,8 @@ macro(ocv_add_module _name)
212
216
endforeach ()
213
217
214
218
# stop processing of current file
219
+ ocv_cmake_hook(POST_ADD_MODULE)
220
+ ocv_cmake_hook(POST_ADD_MODULE_${the_module} )
215
221
return ()
216
222
else ()
217
223
set (OPENCV_MODULE_${the_module} _BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} " CACHE INTERNAL "" )
@@ -256,7 +262,8 @@ endmacro()
256
262
# otherwise all first-level subfolders containing CMakeLists.txt are accepted.
257
263
# Usage: _glob_locations(<output paths list> <output names list> <folder> [<folder> ...])
258
264
function (_glob_locations out_paths out_names)
259
- foreach (path ${ARGN} )
265
+ set (PATHS ${ARGN} )
266
+ foreach (path ${PATHS} )
260
267
#message(STATUS "Inspect: ${path}")
261
268
list (LENGTH paths before)
262
269
get_filename_component (path "${path} " ABSOLUTE )
@@ -313,6 +320,7 @@ endfunction()
313
320
function (_add_modules_2)
314
321
foreach (m ${ARGN} )
315
322
set (the_module "${m} " )
323
+ ocv_cmake_hook(PRE_MODULES_CREATE_${the_module} )
316
324
if (BUILD_opencv_world AND m STREQUAL "opencv_world"
317
325
OR NOT BUILD_opencv_world
318
326
OR NOT OPENCV_MODULE_${m} _IS_PART_OF_WORLD)
@@ -323,6 +331,7 @@ function(_add_modules_2)
323
331
#message(STATUS "Second pass: ${name} => ${OPENCV_MODULE_${m}_LOCATION}")
324
332
add_subdirectory ("${OPENCV_MODULE_${m} _LOCATION}" "${CMAKE_CURRENT_BINARY_DIR} /${name} " )
325
333
endif ()
334
+ ocv_cmake_hook(POST_MODULES_CREATE_${the_module} )
326
335
endforeach ()
327
336
endfunction ()
328
337
@@ -348,6 +357,7 @@ endfunction()
348
357
# NB: must be called only once!
349
358
# Usage: ocv_glob_modules(<main location> [<extra location> ...])
350
359
macro (ocv_glob_modules main_root)
360
+ ocv_cmake_hook(INIT_MODULES_GLOB)
351
361
if (DEFINED OPENCV_INITIAL_PASS)
352
362
message (FATAL_ERROR "OpenCV has already loaded its modules. Calling ocv_glob_modules second time is not allowed." )
353
363
endif ()
@@ -359,18 +369,23 @@ macro(ocv_glob_modules main_root)
359
369
_assert_uniqueness("Duplicated modules LOCATIONS has been found" ${__main_paths} ${__extra_paths} )
360
370
_assert_uniqueness("Duplicated modules NAMES has been found" ${__main_names} ${__extra_names} )
361
371
set (OPENCV_PROCESSING_EXTRA_MODULES 0)
372
+ ocv_cmake_hook(PRE_MODULES_SCAN)
362
373
_add_modules_1(__main_paths __main_names)
363
374
set (OPENCV_PROCESSING_EXTRA_MODULES 1)
375
+ ocv_cmake_hook(PRE_MODULES_SCAN_EXTRA)
364
376
_add_modules_1(__extra_paths __extra_names)
365
377
ocv_clear_vars(__main_names __extra_names __main_paths __extra_paths)
378
+ ocv_cmake_hook(POST_MODULES_SCAN)
366
379
367
380
# resolve dependencies
368
381
__ocv_resolve_dependencies()
369
382
370
383
# create modules
371
384
set (OPENCV_INITIAL_PASS OFF PARENT_SCOPE)
372
385
set (OPENCV_INITIAL_PASS OFF )
386
+ ocv_cmake_hook(PRE_MODULES_CREATE)
373
387
_add_modules_2(${OPENCV_MODULES_BUILD} )
388
+ ocv_cmake_hook(POST_MODULES_CREATE)
374
389
endmacro ()
375
390
376
391
@@ -719,6 +734,10 @@ macro(ocv_set_module_sources)
719
734
list (APPEND OPENCV_MODULE_${the_module} _SOURCES ${OPENCV_MODULE_${the_module} _SOURCES_DISPATCHED})
720
735
endif ()
721
736
737
+ # TODO Update hooks above
738
+ ocv_cmake_hook(INIT_MODULE_SOURCES)
739
+ ocv_cmake_hook(INIT_MODULE_SOURCES_${the_module} )
740
+
722
741
# use full paths for module to be independent from the module location
723
742
ocv_convert_to_full_paths(OPENCV_MODULE_${the_module} _HEADERS)
724
743
@@ -885,6 +904,8 @@ macro(_ocv_create_module)
885
904
886
905
source_group ("Include" FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR} /cvconfig.h" "${OPENCV_CONFIG_FILE_INCLUDE_DIR} /opencv2/opencv_modules.hpp" )
887
906
source_group ("Src" FILES "${${the_module} _pch}" )
907
+ ocv_cmake_hook(PRE_CREATE_MODULE_LIBRARY)
908
+ ocv_cmake_hook(PRE_CREATE_MODULE_LIBRARY_${the_module} )
888
909
ocv_add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module} _HEADERS} ${OPENCV_MODULE_${the_module} _SOURCES}
889
910
"${OPENCV_CONFIG_FILE_INCLUDE_DIR} /cvconfig.h" "${OPENCV_CONFIG_FILE_INCLUDE_DIR} /opencv2/opencv_modules.hpp"
890
911
${${the_module} _pch}
@@ -967,6 +988,8 @@ macro(_ocv_create_module)
967
988
endif ()
968
989
969
990
# only "public" headers need to be installed
991
+ ocv_cmake_hook(PRE_INSTALL_MODULE_HEADERS)
992
+ ocv_cmake_hook(PRE_INSTALL_MODULE_HEADERS_${the_module} )
970
993
if (OPENCV_MODULE_${the_module} _HEADERS AND ";${OPENCV_MODULES_PUBLIC} ;" MATCHES ";${the_module} ;" )
971
994
foreach (hdr ${OPENCV_MODULE_${the_module} _HEADERS})
972
995
string (REGEX REPLACE "^.*opencv2/" "opencv2/" hdr2 "${hdr} " )
@@ -977,6 +1000,9 @@ macro(_ocv_create_module)
977
1000
endif ()
978
1001
979
1002
_ocv_add_precompiled_headers(${the_module} )
1003
+
1004
+ ocv_cmake_hook(POST_CREATE_MODULE_LIBRARY)
1005
+ ocv_cmake_hook(POST_CREATE_MODULE_LIBRARY_${the_module} )
980
1006
endmacro ()
981
1007
982
1008
# opencv precompiled headers macro (can add pch to modules and tests)
0 commit comments