diff mupdf-source/thirdparty/tesseract/src/training/CMakeLists.txt @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/tesseract/src/training/CMakeLists.txt	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,466 @@
+#
+# tesseract
+#
+if(NOT ${CMAKE_VERSION} VERSION_LESS "3.12.0")
+  cmake_policy(SET CMP0074 NEW)
+endif()
+
+if(UNIX AND NOT ANDROID)
+  set(LIB_pthread pthread)
+endif()
+
+if(SW_BUILD)
+  set(ICU_FOUND 1)
+else() # NOT SW_BUILD
+  find_package(PkgConfig)
+endif()
+
+# experimental
+# If PkgConfig is not present training tools will not be build,
+# so it does not make sense to set ICU.
+if(MSVC
+   AND PKG_CONFIG_FOUND
+   AND NOT SW_BUILD
+   AND NOT USE_SYSTEM_ICU)
+  include(CheckTypeSize)
+  check_type_size("void *" SIZEOF_VOID_P)
+
+  if(SIZEOF_VOID_P EQUAL 8)
+    set(X64 1)
+    set(ARCH_NAME 64)
+  elseif(SIZEOF_VOID_P EQUAL 4)
+    set(X86 1)
+    set(ARCH_NAME 32)
+  else()
+    message(FATAL_ERROR "Cannot determine target architecture")
+  endif()
+
+  set(ICU_DIR "${CMAKE_CURRENT_BINARY_DIR}/icu")
+  set(ICU_ARCHIVE "${ICU_DIR}/icu${ARCH_NAME}.zip")
+
+  if(X86)
+    set(ICU_HASH 45167a240b60e36b59a87eda23490ce4)
+  else()
+    set(ICU_HASH 480c72491576c048de1218c3c5519399)
+  endif()
+
+  message(STATUS "Downloading latest ICU binaries")
+  set(COMPILER "msvc10")
+  set(ICU_URL "https://github.com/unicode-org/icu/releases/download")
+  set(ICU_R "56-1")
+  set(ICU_V "56_1")
+  file(
+    DOWNLOAD
+    "${ICU_URL}/release-${ICU_R}/icu4c-${ICU_V}-Win${ARCH_NAME}-${COMPILER}.zip"
+    "${ICU_ARCHIVE}"
+    SHOW_PROGRESS
+    INACTIVITY_TIMEOUT 300 # seconds
+    EXPECTED_HASH MD5=${ICU_HASH})
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} -E tar xz "${ICU_ARCHIVE}"
+    WORKING_DIRECTORY "${ICU_DIR}"
+    RESULT_VARIABLE __result)
+  if(NOT __result EQUAL 0)
+    message(FATAL_ERROR "error ${__result}")
+  endif()
+
+  set(ICU_ROOT ${ICU_DIR}/icu)
+endif()
+# experimental
+
+if(NOT SW_BUILD)
+  if(PKG_CONFIG_FOUND)
+    pkg_check_modules(ICU REQUIRED IMPORTED_TARGET icu-uc icu-i18n)
+  else()
+    find_package(ICU 52.1 COMPONENTS uc i18n)
+  endif()
+  if(ICU_FOUND)
+    message(">> ICU_FOUND ${ICU_FOUND} ${ICU_VERSION} ${ICU_LIBRARIES} ${ICU_INCLUDE_DIRS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ICU_CXX_FLAGS}")
+  else()
+    message(">> ICU not found!")
+  endif()
+endif()
+
+
+# ##############################################################################
+# LIBRARY common_training
+# ##############################################################################
+
+set(COMMON_TRAINING_SRC
+    common/commandlineflags.cpp
+    common/commandlineflags.h
+    common/commontraining.cpp
+    common/commontraining.h
+    common/ctc.cpp
+    common/ctc.h
+    common/networkbuilder.cpp
+    common/networkbuilder.h)
+
+if(NOT DISABLED_LEGACY_ENGINE)
+  list(
+    APPEND
+    COMMON_TRAINING_SRC
+    common/errorcounter.cpp
+    common/errorcounter.h
+    common/intfeaturedist.cpp
+    common/intfeaturedist.h
+    common/intfeaturemap.cpp
+    common/intfeaturemap.h
+    common/mastertrainer.cpp
+    common/mastertrainer.h
+    common/sampleiterator.cpp
+    common/sampleiterator.h
+    common/trainingsampleset.cpp
+    common/trainingsampleset.h)
+endif()
+
+add_library(common_training ${COMMON_TRAINING_SRC})
+target_include_directories(common_training PUBLIC common
+                                                  ${CMAKE_CURRENT_BINARY_DIR})
+target_link_libraries(common_training PUBLIC libtesseract)
+install(
+  TARGETS common_training
+  RUNTIME DESTINATION bin
+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+generate_export_header(common_training EXPORT_MACRO_NAME
+                       TESS_COMMON_TRAINING_API)
+if (MSVC AND BUILD_SHARED_LIBS)
+  install(FILES $<TARGET_PDB_FILE:common_training> DESTINATION bin OPTIONAL)
+endif()
+project_group(common_training "Training Tools")
+
+# ##############################################################################
+# EXECUTABLE ambiguous_words
+# ##############################################################################
+
+if(NOT DISABLED_LEGACY_ENGINE)
+  add_executable(ambiguous_words ambiguous_words.cpp)
+  target_link_libraries(ambiguous_words common_training)
+  project_group(ambiguous_words "Training Tools")
+  install(
+    TARGETS ambiguous_words
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:ambiguous_words> DESTINATION bin OPTIONAL)
+  endif()
+endif()
+
+# ##############################################################################
+# EXECUTABLE classifier_tester
+# ##############################################################################
+
+if(NOT DISABLED_LEGACY_ENGINE)
+  add_executable(classifier_tester classifier_tester.cpp)
+  target_link_libraries(classifier_tester common_training)
+  project_group(classifier_tester "Training Tools")
+  install(
+    TARGETS classifier_tester
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:classifier_tester> DESTINATION bin OPTIONAL)
+  endif()
+endif()
+
+# ##############################################################################
+# EXECUTABLE combine_tessdata
+# ##############################################################################
+
+add_executable(combine_tessdata combine_tessdata.cpp)
+target_link_libraries(combine_tessdata common_training)
+project_group(combine_tessdata "Training Tools")
+install(
+  TARGETS combine_tessdata
+  RUNTIME DESTINATION bin
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib)
+if (MSVC)
+  install(FILES $<TARGET_PDB_FILE:combine_tessdata> DESTINATION bin OPTIONAL)
+endif()
+
+# ##############################################################################
+# EXECUTABLE cntraining
+# ##############################################################################
+
+if(NOT DISABLED_LEGACY_ENGINE)
+  add_executable(cntraining cntraining.cpp)
+  target_link_libraries(cntraining common_training)
+  project_group(cntraining "Training Tools")
+  install(
+    TARGETS cntraining
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:cntraining> DESTINATION bin OPTIONAL)
+  endif()
+endif()
+
+# ##############################################################################
+# EXECUTABLE dawg2wordlist
+# ##############################################################################
+
+add_executable(dawg2wordlist dawg2wordlist.cpp)
+target_link_libraries(dawg2wordlist common_training)
+project_group(dawg2wordlist "Training Tools")
+install(
+  TARGETS dawg2wordlist
+  RUNTIME DESTINATION bin
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib)
+if (MSVC)
+  install(FILES $<TARGET_PDB_FILE:dawg2wordlist> DESTINATION bin OPTIONAL)
+endif()
+
+# ##############################################################################
+# EXECUTABLE mftraining
+# ##############################################################################
+
+if(NOT DISABLED_LEGACY_ENGINE)
+  add_executable(mftraining mftraining.cpp mergenf.cpp mergenf.h)
+  target_link_libraries(mftraining common_training)
+  project_group(mftraining "Training Tools")
+  install(
+    TARGETS mftraining
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:mftraining> DESTINATION bin OPTIONAL)
+  endif()
+endif()
+
+# ##############################################################################
+# EXECUTABLE shapeclustering
+# ##############################################################################
+
+if(NOT DISABLED_LEGACY_ENGINE)
+  add_executable(shapeclustering shapeclustering.cpp)
+  target_link_libraries(shapeclustering common_training)
+  project_group(shapeclustering "Training Tools")
+  install(
+    TARGETS shapeclustering
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+     install(FILES $<TARGET_PDB_FILE:shapeclustering> DESTINATION bin OPTIONAL)
+  endif()
+endif()
+
+# ##############################################################################
+# EXECUTABLE wordlist2dawg
+# ##############################################################################
+
+add_executable(wordlist2dawg wordlist2dawg.cpp)
+target_link_libraries(wordlist2dawg common_training)
+project_group(wordlist2dawg "Training Tools")
+install(
+  TARGETS wordlist2dawg
+  RUNTIME DESTINATION bin
+  LIBRARY DESTINATION lib
+  ARCHIVE DESTINATION lib)
+if (MSVC)
+  install(FILES $<TARGET_PDB_FILE:wordlist2dawg> DESTINATION bin OPTIONAL)
+endif()
+
+if(ICU_FOUND)
+  if(NOT SW_BUILD)
+    include_directories(${ICU_INCLUDE_DIRS})
+  endif()
+
+  # ############################################################################
+  # LIBRARY unicharset_training
+  # ############################################################################
+
+  file(GLOB unicharset_training_src unicharset/*)
+
+  add_library(unicharset_training ${unicharset_training_src})
+  if(SW_BUILD)
+    target_link_libraries(unicharset_training
+                          PUBLIC common_training org.sw.demo.unicode.icu.i18n)
+  else()
+    if(PKG_CONFIG_FOUND)
+      target_link_libraries(unicharset_training PUBLIC common_training PkgConfig::ICU)
+    else()
+      target_link_libraries(unicharset_training PUBLIC common_training ${ICU_LIBRARIES})
+    endif()
+  endif()
+  target_include_directories(unicharset_training
+                             PUBLIC unicharset ${CMAKE_CURRENT_BINARY_DIR})
+  install(
+    TARGETS unicharset_training
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+  if (MSVC AND BUILD_SHARED_LIBS)
+    install(FILES $<TARGET_PDB_FILE:unicharset_training> DESTINATION bin OPTIONAL)
+  endif()
+  generate_export_header(unicharset_training EXPORT_MACRO_NAME
+                         TESS_UNICHARSET_TRAINING_API)
+  project_group(unicharset_training "Training Tools")
+
+  # ############################################################################
+  # EXECUTABLE combine_lang_model
+  # ############################################################################
+
+  add_executable(combine_lang_model combine_lang_model.cpp)
+  target_link_libraries(combine_lang_model unicharset_training)
+  project_group(combine_lang_model "Training Tools")
+  install(
+    TARGETS combine_lang_model
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:combine_lang_model> DESTINATION bin OPTIONAL)
+  endif()
+
+  # ############################################################################
+  # EXECUTABLE lstmeval
+  # ############################################################################
+
+  add_executable(lstmeval lstmeval.cpp)
+  target_link_libraries(lstmeval unicharset_training ${LIB_pthread})
+  project_group(lstmeval "Training Tools")
+  install(
+    TARGETS lstmeval
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:lstmeval> DESTINATION bin OPTIONAL)
+  endif()
+
+  # ############################################################################
+  # EXECUTABLE lstmtraining
+  # ############################################################################
+
+  add_executable(lstmtraining lstmtraining.cpp)
+  target_link_libraries(lstmtraining unicharset_training ${LIB_pthread})
+  project_group(lstmtraining "Training Tools")
+  install(
+    TARGETS lstmtraining
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:lstmtraining> DESTINATION bin OPTIONAL)
+  endif()
+
+  # ############################################################################
+  # EXECUTABLE merge_unicharsets
+  # ############################################################################
+
+  add_executable(merge_unicharsets merge_unicharsets.cpp)
+  target_link_libraries(merge_unicharsets common_training)
+  project_group(merge_unicharsets "Training Tools")
+  install(
+    TARGETS merge_unicharsets
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:merge_unicharsets> DESTINATION bin OPTIONAL)
+  endif()
+
+  # ############################################################################
+  # EXECUTABLE set_unicharset_properties
+  # ############################################################################
+
+  add_executable(set_unicharset_properties set_unicharset_properties.cpp)
+  target_link_libraries(set_unicharset_properties unicharset_training)
+  project_group(set_unicharset_properties "Training Tools")
+  install(
+    TARGETS set_unicharset_properties
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:set_unicharset_properties> DESTINATION bin OPTIONAL)
+  endif()
+
+  # ############################################################################
+  # EXECUTABLE unicharset_extractor
+  # ############################################################################
+
+  add_executable(unicharset_extractor unicharset_extractor.cpp)
+  target_compile_features(unicharset_extractor PRIVATE cxx_std_17)
+  target_link_libraries(unicharset_extractor unicharset_training)
+  project_group(unicharset_extractor "Training Tools")
+  install(
+    TARGETS unicharset_extractor
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib)
+  if (MSVC)
+    install(FILES $<TARGET_PDB_FILE:unicharset_extractor> DESTINATION bin OPTIONAL)
+  endif()
+
+  # ############################################################################
+
+  if(PKG_CONFIG_FOUND OR SW_BUILD)
+
+    if(PKG_CONFIG_FOUND)
+      pkg_check_modules(
+        PANGO
+        REQUIRED
+        IMPORTED_TARGET
+        pango>=1.38.0
+        cairo
+        pangoft2
+        pangocairo
+        fontconfig)
+    endif()
+
+    # ##########################################################################
+    # LIBRARY pango_training
+    # ##########################################################################
+
+    file(GLOB pango_training_src pango/*)
+
+    add_library(pango_training ${pango_training_src})
+    target_link_libraries(pango_training PUBLIC unicharset_training)
+    if(SW_BUILD)
+      target_link_libraries(pango_training
+                            PUBLIC org.sw.demo.gnome.pango.pangocairo)
+    else()
+      if(PKG_CONFIG_FOUND)
+        target_include_directories(pango_training BEFORE
+                                   PUBLIC ${PANGO_INCLUDE_DIRS})
+        target_compile_definitions(pango_training PUBLIC -DPANGO_ENABLE_ENGINE)
+        target_link_libraries(pango_training PUBLIC PkgConfig::PANGO)
+      endif()
+    endif()
+    target_include_directories(pango_training
+                               PUBLIC pango ${CMAKE_CURRENT_BINARY_DIR})
+    generate_export_header(pango_training EXPORT_MACRO_NAME
+                           TESS_PANGO_TRAINING_API)
+    project_group(pango_training "Training Tools")
+
+    # ##########################################################################
+    # EXECUTABLE text2image
+    # ##########################################################################
+
+    set(TEXT2IMAGE_SRC text2image.cpp degradeimage.cpp degradeimage.h)
+
+    add_executable(text2image ${TEXT2IMAGE_SRC})
+    target_link_libraries(text2image pango_training)
+    project_group(text2image "Training Tools")
+    install(
+      TARGETS text2image
+      RUNTIME DESTINATION bin
+      LIBRARY DESTINATION lib
+      ARCHIVE DESTINATION lib)
+    if (MSVC)
+      install(FILES $<TARGET_PDB_FILE:text2image> DESTINATION bin OPTIONAL)
+    endif()
+  endif()
+endif(ICU_FOUND)
+
+# ##############################################################################