Commit abf5a75d for tesseract
commit abf5a75dba5b6f927edadf18e37e003398846f36
Author: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Date: Mon Jun 15 20:29:04 2026 +0000
Remove SW_BUILD option from CMake and CI
diff --git a/.github/workflows/cmake-win64.yml b/.github/workflows/cmake-win64.yml
index 7c64299a..7778e066 100644
--- a/.github/workflows/cmake-win64.yml
+++ b/.github/workflows/cmake-win64.yml
@@ -101,7 +101,7 @@ jobs:
echo "Building leptonica..."
git clone --depth 1 https://github.com/DanBloomberg/leptonica.git
cd leptonica
- cmake -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DSW_BUILD=OFF -DBUILD_PROG=OFF -DBUILD_SHARED_LIBS=ON
+ cmake -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DBUILD_PROG=OFF -DBUILD_SHARED_LIBS=ON
cmake --build build --target install
- name: Remove not needed tools Before building tesseract
@@ -112,7 +112,7 @@ jobs:
- name: Build and Install tesseract
shell: cmd
run: |
- cmake -Bbuild -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DSW_BUILD=OFF -DBUILD_SHARED_LIBS=ON -DENABLE_LTO=ON -DBUILD_TRAINING_TOOLS=OFF -DFAST_FLOAT=ON -DGRAPHICS_DISABLED=ON -DOPENMP_BUILD=OFF
+ cmake -Bbuild -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${{env.ILOC}} -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DBUILD_SHARED_LIBS=ON -DENABLE_LTO=ON -DBUILD_TRAINING_TOOLS=OFF -DFAST_FLOAT=ON -DGRAPHICS_DISABLED=ON -DOPENMP_BUILD=OFF
cmake --build build --target install
- name: Upload Build Results
diff --git a/.github/workflows/vcpkg.yml b/.github/workflows/vcpkg.yml
index 92696169..79c50c9b 100644
--- a/.github/workflows/vcpkg.yml
+++ b/.github/workflows/vcpkg.yml
@@ -38,7 +38,7 @@ jobs:
- name: Configure and Build Tesseract (--head from main branch) with cmake
run: |
- cmake . -B build -DCMAKE_BUILD_TYPE=Release -DSW_BUILD=OFF -DOPENMP_BUILD=OFF -DBUILD_TRAINING_TOOLS=OFF "-DCMAKE_TOOLCHAIN_FILE=${env:GITHUB_WORKSPACE}/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake . -B build -DCMAKE_BUILD_TYPE=Release -DOPENMP_BUILD=OFF -DBUILD_TRAINING_TOOLS=OFF "-DCMAKE_TOOLCHAIN_FILE=${env:GITHUB_WORKSPACE}/vcpkg/scripts/buildsystems/vcpkg.cmake"
cmake --build build --config Release --target install
- name: Display Tesseract Version
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d39f78b5..dba2aced 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -79,12 +79,6 @@ set(MINIMUM_LEPTONICA_VERSION 1.74)
message(STATUS "Configuring tesseract version ${PACKAGE_VERSION}...")
-if(WIN32)
- option(SW_BUILD "Build with sw" ON)
-else()
- option(SW_BUILD "Build with sw" OFF)
-endif()
-
# Apple's toolchains dont populate CMAKE_SYSTEM_PROCESSOR when crosscompiling
# instead it uses CMAKE_OSX_ARCHITECTURES which can contain multiple architectures
if(APPLE AND NOT CMAKE_SYSTEM_PROCESSOR AND CMAKE_OSX_ARCHITECTURES)
@@ -440,95 +434,79 @@ endif()
# ##############################################################################
include(CheckFunctions)
-if(SW_BUILD)
- find_package(SW REQUIRED)
- if(BUILD_SHARED_LIBS)
- set(SW_BUILD_SHARED_LIBS 1)
- else()
- set(SW_BUILD_SHARED_LIBS 0)
- endif()
- sw_add_package(org.sw.demo.danbloomberg.leptonica
- org.sw.demo.libarchive.libarchive)
- if(BUILD_TRAINING_TOOLS)
- sw_add_package(org.sw.demo.gnome.pango.pangocairo
- org.sw.demo.unicode.icu.i18n)
+find_package(PkgConfig)
+if(APPLE)
+ if(DEFINED ENV{HOMEBREW_PREFIX})
+ set(HOMEBREW_PREFIX $ENV{HOMEBREW_PREFIX})
+ set(PKG_CONFIG_PATH "${HOMEBREW_PREFIX}/opt/icu4c/lib/pkgconfig:${HOMEBREW_PREFIX}/opt/libarchive/lib/pkgconfig")
+ set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}")
endif()
- sw_execute()
+endif()
+# Check for required library. option -DLeptonica_DIR=path => cmake hint where
+# to find leptonica
+find_package(Leptonica ${MINIMUM_LEPTONICA_VERSION} CONFIG)
+if(NOT Leptonica_FOUND AND PKG_CONFIG_EXECUTABLE)
+ pkg_check_modules(Leptonica lept>=${MINIMUM_LEPTONICA_VERSION})
+ link_directories(${Leptonica_LIBRARY_DIRS})
+endif()
+if(NOT Leptonica_FOUND)
+ message(FATAL_ERROR "Cannot find required library Leptonica. Quitting!")
else()
- find_package(PkgConfig)
- if(APPLE)
- if(DEFINED ENV{HOMEBREW_PREFIX})
- set(HOMEBREW_PREFIX $ENV{HOMEBREW_PREFIX})
- set(PKG_CONFIG_PATH "${HOMEBREW_PREFIX}/opt/icu4c/lib/pkgconfig:${HOMEBREW_PREFIX}/opt/libarchive/lib/pkgconfig")
- set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}")
- endif()
+ message(STATUS "Found leptonica version: ${Leptonica_VERSION}")
+endif(NOT Leptonica_FOUND)
+include_directories(${Leptonica_INCLUDE_DIRS})
+
+check_leptonica_tiff_support()
+if ((NOT LEPT_TIFF_RESULT EQUAL 0) AND LEPT_TIFF_COMPILE_SUCCESS)
+ message(NOTICE "Leptonica was build without TIFF support! Disabling TIFF support...")
+ set(DISABLE_TIFF ON)
+elseif(NOT ${CMAKE_VERSION} VERSION_LESS "3.25")
+ message(STATUS "Leptonica was build with TIFF support.")
+endif()
+
+# Check for optional libraries.
+if(DISABLE_TIFF)
+ set(HAVE_TIFFIO_H OFF)
+ message(STATUS "TIFF support disabled.")
+else(DISABLE_TIFF)
+ find_package(TIFF) # for tesseract
+ if(NOT TIFF_FOUND AND PKG_CONFIG_EXECUTABLE)
+ # try PKG_CONFIG to find libtiff if cmake failed
+ pkg_check_modules(TIFF libtiff-4)
endif()
- # Check for required library. option -DLeptonica_DIR=path => cmake hint where
- # to find leptonica
- find_package(Leptonica ${MINIMUM_LEPTONICA_VERSION} CONFIG)
- if(NOT Leptonica_FOUND AND PKG_CONFIG_EXECUTABLE)
- pkg_check_modules(Leptonica lept>=${MINIMUM_LEPTONICA_VERSION})
- link_directories(${Leptonica_LIBRARY_DIRS})
+ if(TIFF_FOUND)
+ set(HAVE_TIFFIO_H ON)
+ include_directories(${TIFF_INCLUDE_DIRS})
+ endif(TIFF_FOUND)
+endif(DISABLE_TIFF)
+if(DISABLE_ARCHIVE)
+ set(HAVE_LIBARCHIVE OFF)
+ message(STATUS "LibArchive support disabled.")
+else(DISABLE_ARCHIVE)
+ find_package(LibArchive)
+ if(NOT LibArchive_FOUND AND PKG_CONFIG_EXECUTABLE)
+ # try PKG_CONFIG to find libarchive if cmake failed
+ pkg_check_modules(LibArchive libarchive)
endif()
- if(NOT Leptonica_FOUND)
- message(FATAL_ERROR "Cannot find required library Leptonica. Quitting!")
- else()
- message(STATUS "Found leptonica version: ${Leptonica_VERSION}")
- endif(NOT Leptonica_FOUND)
- include_directories(${Leptonica_INCLUDE_DIRS})
-
- check_leptonica_tiff_support()
- if ((NOT LEPT_TIFF_RESULT EQUAL 0) AND LEPT_TIFF_COMPILE_SUCCESS)
- message(NOTICE "Leptonica was build without TIFF support! Disabling TIFF support...")
- set(DISABLE_TIFF ON)
- elseif(NOT ${CMAKE_VERSION} VERSION_LESS "3.25")
- message(STATUS "Leptonica was build with TIFF support.")
+ if(LibArchive_FOUND)
+ set(HAVE_LIBARCHIVE ON)
+ include_directories(${LibArchive_INCLUDE_DIRS})
+ endif(LibArchive_FOUND)
+endif(DISABLE_ARCHIVE)
+if(DISABLE_CURL)
+ set(HAVE_LIBCURL OFF)
+ message(STATUS "CURL support disabled.")
+else(DISABLE_CURL)
+ find_package(CURL)
+ if(NOT CURL_FOUND AND PKG_CONFIG_EXECUTABLE)
+ # try PKG_CONFIG to find libcurl if cmake failed
+ pkg_check_modules(CURL libcurl)
endif()
-
- # Check for optional libraries.
- if(DISABLE_TIFF)
- set(HAVE_TIFFIO_H OFF)
- message(STATUS "TIFF support disabled.")
- else(DISABLE_TIFF)
- find_package(TIFF) # for tesseract
- if(NOT TIFF_FOUND AND PKG_CONFIG_EXECUTABLE)
- # try PKG_CONFIG to find libtiff if cmake failed
- pkg_check_modules(TIFF libtiff-4)
- endif()
- if(TIFF_FOUND)
- set(HAVE_TIFFIO_H ON)
- include_directories(${TIFF_INCLUDE_DIRS})
- endif(TIFF_FOUND)
- endif(DISABLE_TIFF)
- if(DISABLE_ARCHIVE)
- set(HAVE_LIBARCHIVE OFF)
- message(STATUS "LibArchive support disabled.")
- else(DISABLE_ARCHIVE)
- find_package(LibArchive)
- if(NOT LibArchive_FOUND AND PKG_CONFIG_EXECUTABLE)
- # try PKG_CONFIG to find libarchive if cmake failed
- pkg_check_modules(LibArchive libarchive)
- endif()
- if(LibArchive_FOUND)
- set(HAVE_LIBARCHIVE ON)
- include_directories(${LibArchive_INCLUDE_DIRS})
- endif(LibArchive_FOUND)
- endif(DISABLE_ARCHIVE)
- if(DISABLE_CURL)
- set(HAVE_LIBCURL OFF)
- message(STATUS "CURL support disabled.")
- else(DISABLE_CURL)
- find_package(CURL)
- if(NOT CURL_FOUND AND PKG_CONFIG_EXECUTABLE)
- # try PKG_CONFIG to find libcurl if cmake failed
- pkg_check_modules(CURL libcurl)
- endif()
- if(CURL_FOUND)
- set(HAVE_LIBCURL ON)
- include_directories(${CURL_INCLUDE_DIRS})
- endif(CURL_FOUND)
- endif(DISABLE_CURL)
-endif()
+ if(CURL_FOUND)
+ set(HAVE_LIBCURL ON)
+ include_directories(${CURL_INCLUDE_DIRS})
+ endif(CURL_FOUND)
+endif(DISABLE_CURL)
# ##############################################################################
#
@@ -607,7 +585,6 @@ message(STATUS "MARCH_NATIVE_OPT: ${MARCH_NATIVE_OPT}")
message(STATUS "HAVE_NEON: ${HAVE_NEON}")
message(STATUS "Link-time optimization: ${CMAKE_INTERPROCEDURAL_OPTIMIZATION}")
message(STATUS "--------------------------------------------------------")
-message(STATUS "Build with sw [SW_BUILD]: ${SW_BUILD}")
message(STATUS "Build with openmp support [OPENMP_BUILD]: ${OPENMP_BUILD}")
message(STATUS "Build with libarchive support [HAVE_LIBARCHIVE]: "
"${HAVE_LIBARCHIVE}")
@@ -859,23 +836,11 @@ set_target_properties(
tesseract$<$<BOOL:${WIN32}>:${VERSION_MAJOR}${VERSION_MINOR}$<$<CONFIG:DEBUG>:d>>
)
-if(SW_BUILD)
- target_link_libraries(libtesseract PUBLIC org.sw.demo.danbloomberg.leptonica
- org.sw.demo.libarchive.libarchive)
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/TesseractTargets.cmake
- "include(${CMAKE_CURRENT_BINARY_DIR}/cppan.cmake)\n")
- export(
- TARGETS libtesseract
- APPEND
- FILE ${CMAKE_CURRENT_BINARY_DIR}/TesseractTargets.cmake
- NAMESPACE Tesseract::)
-else()
- target_link_libraries(libtesseract PUBLIC ${Leptonica_LIBRARIES})
+target_link_libraries(libtesseract PUBLIC ${Leptonica_LIBRARIES})
export(
TARGETS libtesseract
FILE ${CMAKE_CURRENT_BINARY_DIR}/TesseractTargets.cmake
NAMESPACE Tesseract::)
-endif()
if(WIN32
AND CLANG
diff --git a/src/training/CMakeLists.txt b/src/training/CMakeLists.txt
index 32cd5f78..354df753 100644
--- a/src/training/CMakeLists.txt
+++ b/src/training/CMakeLists.txt
@@ -8,18 +8,13 @@ endif()
# Include build optimizations
include(BuildOptimizations)
-if(SW_BUILD)
- set(ICU_FOUND 1)
-else() # NOT SW_BUILD
- find_package(PkgConfig)
-endif()
+find_package(PkgConfig)
# 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)
@@ -67,18 +62,16 @@ if(MSVC
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()
+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()
@@ -272,9 +265,7 @@ if (MSVC)
endif()
if(ICU_FOUND)
- if(NOT SW_BUILD)
- include_directories(${ICU_INCLUDE_DIRS})
- endif()
+ include_directories(${ICU_INCLUDE_DIRS})
# ############################################################################
# LIBRARY unicharset_training
@@ -283,15 +274,10 @@ if(ICU_FOUND)
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)
+ if(PKG_CONFIG_FOUND)
+ target_link_libraries(unicharset_training PUBLIC common_training PkgConfig::ICU)
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()
+ target_link_libraries(unicharset_training PUBLIC common_training ${ICU_LIBRARIES})
endif()
target_include_directories(unicharset_training
PUBLIC unicharset ${CMAKE_CURRENT_BINARY_DIR})
@@ -406,19 +392,16 @@ if(ICU_FOUND)
# ############################################################################
- 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()
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(
+ PANGO
+ REQUIRED
+ IMPORTED_TARGET
+ pango>=1.38.0
+ cairo
+ pangoft2
+ pangocairo
+ fontconfig)
# ##########################################################################
# LIBRARY pango_training
@@ -428,17 +411,10 @@ if(ICU_FOUND)
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 BEFORE
+ PUBLIC ${PANGO_INCLUDE_DIRS})
+ target_compile_definitions(pango_training PUBLIC -DPANGO_ENABLE_ENGINE)
+ target_link_libraries(pango_training PUBLIC PkgConfig::PANGO)
target_include_directories(pango_training
PUBLIC pango ${CMAKE_CURRENT_BINARY_DIR})
generate_export_header(pango_training EXPORT_MACRO_NAME