Path: blob/master/modules/java/generator/CMakeLists.txt
16337 views
set(MODULE_NAME "java_bindings_generator")1set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)2ocv_add_module(${MODULE_NAME} INTERNAL)34set(OPENCV_JAVA_SIGNATURES_FILE "${CMAKE_CURRENT_BINARY_DIR}/opencv_java_signatures.json" CACHE INTERNAL "")5set(OPENCV_JAVA_BINDINGS_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "")67file(REMOVE_RECURSE "${OPENCV_JAVA_BINDINGS_DIR}/gen")8file(REMOVE "${OPENCV_DEPHELPER}/gen_opencv_java_source") # force re-run after CMake910# This file is included from a subdirectory11set(JAVA_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")12include(${JAVA_SOURCE_DIR}/common.cmake)1314set(__remap_config "") # list of remapped ".in" files (configure_file)15set(__remap_targets "")1617macro(ocv_remap_files files_list_var)18set(target_dir "${OpenCV_BINARY_DIR}/configured")19foreach(f ${${files_list_var}})20if(NOT "${f}" MATCHES "^(.*)\\.in$")21#continue() # since CMake 3.2+22else()23set(f_ "${CMAKE_MATCH_1}")24file(RELATIVE_PATH rel_path0 "${OpenCV_SOURCE_DIR}" "${f}")25file(RELATIVE_PATH rel_path1 "${OpenCV_SOURCE_DIR}" "${f_}")26set(__target_file "${target_dir}/${rel_path1}")27configure_file("${f}" "${__target_file}" @ONLY)28if(__remap_config)29set(__remap_config "${__remap_config},\n")30endif()31set(__remap_config "${__remap_config} { \"src\": \"${rel_path0}\", \"target\": \"${__target_file}\" }")32list(APPEND __remap_targets "${__target_file}")33endif()34endforeach()35endmacro()3637# common files38file(GLOB_RECURSE deps "${CMAKE_CURRENT_SOURCE_DIR}/src/*" "${CMAKE_CURRENT_SOURCE_DIR}/android*/*" "${CMAKE_CURRENT_SOURCE_DIR}/templates/*")39ocv_remap_files(deps)4041set(__modules_config "") # list of OpenCV modules42foreach(m ${OPENCV_JAVA_MODULES})43set(module_java_dir "${OPENCV_MODULE_${m}_LOCATION}/misc/java")44list(APPEND deps ${OPENCV_MODULE_${m}_HEADERS})45file(GLOB_RECURSE misc_files "${module_java_dir}/*")46list(APPEND deps ${misc_files})4748string(REGEX REPLACE "^opencv_" "" m_ "${m}")49if(__modules_config)50set(__modules_config "${__modules_config},\n")51endif()52file(RELATIVE_PATH rel_path "${OpenCV_SOURCE_DIR}" "${OPENCV_MODULE_${m}_LOCATION}")53set(__modules_config "${__modules_config} { \"name\": \"${m_}\", \"location\": \"${rel_path}\" }")5455ocv_remap_files(misc_files)56endforeach(m)5758set(CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/gen_java.json")59set(__config_str60"{61\"rootdir\": \"${OpenCV_SOURCE_DIR}\",62\"modules\": [63${__modules_config}64],65\"files_remap\": [66${__remap_config}67]68}69")70if(EXISTS "${CONFIG_FILE}")71file(READ "${CONFIG_FILE}" __content)72else()73set(__content "")74endif()75if(NOT "${__content}" STREQUAL "${__config_str}")76file(WRITE "${CONFIG_FILE}" "${__config_str}")77file(REMOVE "${OPENCV_DEPHELPER}/gen_opencv_java_source")78endif()79unset(__config_str)8081set(java_generated_files82# "${OPENCV_JAVA_SIGNATURES_FILE}"83"${OPENCV_DEPHELPER}/gen_opencv_java_source"84)8586add_custom_command(87OUTPUT ${java_generated_files}88COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${JAVA_SOURCE_DIR}/generator/gen_java.py" -p "${JAVA_SOURCE_DIR}/../python/src2/gen2.py" -c "${CONFIG_FILE}"89COMMAND ${CMAKE_COMMAND} -E touch "${OPENCV_DEPHELPER}/gen_opencv_java_source"90WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"91DEPENDS "${JAVA_SOURCE_DIR}/generator/gen_java.py"92"${JAVA_SOURCE_DIR}/../python/src2/gen2.py"93"${JAVA_SOURCE_DIR}/../python/src2/hdr_parser.py"94# don't, result of file(WRITE): "${CMAKE_CURRENT_BINARY_DIR}/gen_java.json"95${deps} ${__remap_targets}96# not allowed (file(WRITE) result): "${CONFIG_FILE}"97COMMENT "Generate files for Java bindings"98)99100add_custom_target(gen_opencv_java_source DEPENDS ${java_generated_files}101SOURCES "${JAVA_SOURCE_DIR}/generator/gen_java.py"102"${CMAKE_CURRENT_BINARY_DIR}/gen_java.json"103)104105106