Blame view

3rdparty/opencv-4.5.4/modules/java/CMakeLists.txt 2.39 KB
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  if(OPENCV_INITIAL_PASS)
    # generator for JNI/JAR source code and documentation signatures
    add_subdirectory(generator)
  endif()
  
  if(APPLE_FRAMEWORK OR WINRT OR NOT PYTHON_DEFAULT_AVAILABLE OR NOT (ANT_EXECUTABLE OR ANDROID_PROJECTS_BUILD_TYPE STREQUAL "GRADLE")
      OR NOT (JNI_FOUND OR (ANDROID AND (NOT DEFINED ANDROID_NATIVE_API_LEVEL OR ANDROID_NATIVE_API_LEVEL GREATER 7)))
      OR BUILD_opencv_world
      )
    ocv_module_disable(java)
  endif()
  
  set(the_description "The java bindings")
  ocv_add_module(java BINDINGS opencv_core opencv_imgproc PRIVATE_REQUIRED opencv_java_bindings_generator)
  
  include(${CMAKE_CURRENT_SOURCE_DIR}/common.cmake)
  
  # UTILITY: glob specific sources and append them to list (type is in H, CPP, JAVA, AIDL)
  macro(glob_more_specific_sources _type _root _output)
    unset(_masks)
    if(${_type} STREQUAL "H")
      set(_masks "${_root}/cpp/*.h" "${_root}/cpp/*.hpp")
    elseif(${_type} STREQUAL "CPP")
      set(_masks "${_root}/cpp/*.cpp")
    elseif(${_type} STREQUAL "JAVA")
      set(_masks "${_root}/java/*.java" "${_root}/java/*.java.in")
    elseif(${_type} STREQUAL "AIDL")
      set(_masks "${_root}/java/*.aidl")
    endif()
    if (_masks)
      file(GLOB _result ${_masks})
      list(APPEND ${_output} ${_result})
    else()
      message(WARNING "Bad argument passed to macro: skipped")
    endif()
  endmacro()
  
  # UTILITY: copy common java test files and add them to _deps
  # copy_common_tests(<source-folder> <destination-folder> <variable-to-store-deps>)
  macro(copy_common_tests _src_location _dst_location _deps)
    set(_src ${_src_location})
    set(_dst ${_dst_location})
    file(GLOB_RECURSE _files RELATIVE "${_src}" "${_src}/res/*" "${_src}/src/*")
    foreach(f ${_files})
      add_custom_command(
          OUTPUT "${_dst}/${f}"
          COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_src}/${f}" "${_dst}/${f}"
          MAIN_DEPENDENCY "${_src}/${f}"
          COMMENT "Copying ${f}")
      list(APPEND ${_deps} "${_src}/${f}" "${_dst}/${f}")
    endforeach()
    unset(_files)
    unset(_src)
    unset(_dst)
  endmacro()
  
  
  add_subdirectory(jni)  # generates ${the_module} target (${the_module}_jni doesn't work properly with Android non-gradle samples)
  if(ANDROID)
    add_subdirectory(android_sdk)  # generates ${the_module}_android target
  else()
    add_subdirectory(jar)  # generates ${the_module}_jar target
  endif()
  
  if(BUILD_TESTS)
    if(ANDROID)
      add_subdirectory(test/android_test)
    else()
      add_subdirectory(test/pure_test)
    endif()
  endif()