Skip to content

Commit

Permalink
fix: windows build properly linking to system libraries (#36)
Browse files Browse the repository at this point in the history
Signed-off-by: rmdg88 <rmdg88@gmail.com>
  • Loading branch information
rmdg88 authored Oct 2, 2024
1 parent 9d62c75 commit e26ed05
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 44 deletions.
17 changes: 10 additions & 7 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -242,12 +242,15 @@ jobs:
update: true
install: >
mingw-w64-x86_64-toolchain
mingw-w64-i686-toolchain
mingw-w64-x86_64-gcc-libs
- name: Set up QPDF external-libs [windows]
- name: Set up external-libs [windows]
if: ${{matrix.os.platform_id == 'win_amd64'}}
shell: pwsh
run: |
Copy-Item -Path "C:/mingw64/bin/libgcc_s_seh-1.dll" -Destination ".\docling_parse"
Copy-Item -Path "C:/mingw64/bin/libstdc++-6.dll" -Destination ".\docling_parse"
Copy-Item -Path "C:/mingw64/bin/libwinpthread-1.dll" -Destination ".\docling_parse"
New-Item -Path 'C:\windows-libs' -ItemType Directory -Force
Invoke-WebRequest -Uri 'https://github.com/qpdf/external-libs/releases/download/release-2024-06-07/qpdf-external-libs-bin.zip' -OutFile 'C:\windows-libs\qpdf-external-libs-bin.zip'
Expand-Archive -Path 'C:\windows-libs\qpdf-external-libs-bin.zip' -DestinationPath 'C:\windows-libs' -Force
Expand All @@ -268,11 +271,11 @@ jobs:
CIBW_BUILD_VERBOSITY: 3
CIBW_ARCHS: AMD64
CIBW_PROJECT_REQUIRES_PYTHON: "~=${{ matrix.python-version }}.0"
PKG_CONFIG_PATH: "C:/msys64/mingw64/lib/pkgconfig"
PKG_CONFIG_EXECUTABLE: "C:/msys64/usr/bin/pkg-config.exe"
CMAKE_PREFIX_PATH: "C:/msys64/mingw64;C:/windows-libs/external-libs"
CMAKE_LIBRARY_PATH: "C:/msys64/mingw64/lib;C:/windows-libs/external-libs/lib-mingw64"
CMAKE_INCLUDE_PATH: "C:/msys64/mingw64/include;C:/windows-libs/external-libs/include"
PKG_CONFIG_PATH: "C:/msys64/usr/lib/pkgconfig"
PKG_CONFIG_EXECUTABLE: "C:/mingw64/bin/pkg-config.exe"
CMAKE_PREFIX_PATH: "C:/msys64/mingw64;C:/mingw64;C:/windows-libs/external-libs"
CMAKE_LIBRARY_PATH: "C:/msys64/mingw64/lib;C:/mingw64/lib;C:/windows-libs/external-libs/lib-mingw64"
CMAKE_INCLUDE_PATH: "C:/msys64/mingw64/include;C:/mingw64/include;C:/windows-libs/external-libs/include"
CMAKE_GENERATOR: "MSYS Makefiles"
BUILD_THREADS: 1
ASM_NASM: "C:/nasm/nasm.exe"
Expand Down
71 changes: 39 additions & 32 deletions cmake/extlib_qpdf_v11.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,22 @@ else()

set(QPDF_URL https://github.com/qpdf/qpdf.git)
set(QPDF_TAG v11.9.1 )

set(QPDF_LIB ${EXTERNALS_PREFIX_PATH}/lib/libqpdf.a)
set(JPEG_LIB ${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a)

if(UNIX)
set(QPDF_EXTRA_CXX_FLAGS "-fPIC ")
set(QPDF_EXTRA_C_FLAGS "-fPIC ")
set(QPDF_EXTRA_CXX_FLAGS "-fPIC ")
set(QPDF_EXTRA_C_FLAGS "-fPIC ")
set(BUILD_SHARED_LIBS ON)
elseif(WIN32)
set(QPDF_EXTRA_CXX_FLAGS "")
set(QPDF_EXTRA_C_FLAGS "")
set(BUILD_SHARED_LIBS OFF)
else()
set(QPDF_EXTRA_CXX_FLAGS " ")
set(QPDF_EXTRA_C_FLAGS " ")
set(QPDF_EXTRA_CXX_FLAGS " ")
set(QPDF_EXTRA_C_FLAGS " ")
set(BUILD_SHARED_LIBS ON)
endif()

ExternalProject_Add(extlib_qpdf
Expand All @@ -44,35 +53,33 @@ else()
INSTALL_DIR ${EXTERNALS_PREFIX_PATH}


CMAKE_ARGS \\
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \\
-DBUILD_SHARED_LIBS=ON \\
-DUSE_IMPLICIT_CRYPTO=OFF \\
-DREQUIRE_CRYPTO_NATIVE=ON \\
-DCMAKE_CXX_FLAGS=${QPDF_EXTRA_CXX_FLAGS} \\
-DCMAKE_C_FLAGS=${QPDF_EXTRA_C_FLAGS} \\
-DLIBJPEG_LIBRARY=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
-DLIBJPEG_LIBRARIES=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
-DLIBJPEG_LIB_PATH=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
-DLIBJPEG_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
-DLIBJPEG_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
-DLIBJPEG_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
-Dpc_libjpeg_LIBRARY=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
-Dpc_libjpeg_LIBRARIES=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
-Dpc_libjpeg_LIB_PATH=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
-Dpc_libjpeg_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
-Dpc_libjpeg_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
-Dpc_libjpeg_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} \\
-DINSTALL_EXAMPLES=OFF \\
-DBUILD_DOC_DIST=OFF \\
-DCMAKE_INSTALL_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
CMAKE_ARGS \\
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \\
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \\
-DUSE_IMPLICIT_CRYPTO=OFF \\
-DREQUIRE_CRYPTO_NATIVE=ON \\
-DCMAKE_CXX_FLAGS=${QPDF_EXTRA_CXX_FLAGS} \\
-DCMAKE_C_FLAGS=${QPDF_EXTRA_C_FLAGS} \\
-DLIBJPEG_LIBRARY=${JPEG_LIB} \\
-DLIBJPEG_LIBRARIES=${JPEG_LIB} \\
-DLIBJPEG_LIB_PATH=${JPEG_LIB} \\
-DLIBJPEG_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
-DLIBJPEG_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
-DLIBJPEG_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
-Dpc_libjpeg_LIBRARY=${JPEG_LIB} \\
-Dpc_libjpeg_LIBRARIES=${JPEG_LIB} \\
-Dpc_libjpeg_LIB_PATH=${JPEG_LIB} \\
-Dpc_libjpeg_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
-Dpc_libjpeg_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
-Dpc_libjpeg_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} \\
-DINSTALL_EXAMPLES=OFF \\
-DBUILD_DOC_DIST=OFF \\
-DCMAKE_INSTALL_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
-DCMAKE_INSTALL_PREFIX=${EXTERNALS_PREFIX_PATH}

LOG_DOWNLOAD ON
# LOG_CONFIGURE ON
# LOG_BUILD ON
)
)

add_library(${ext_name} STATIC IMPORTED)
add_dependencies(${ext_name} extlib_qpdf)
Expand All @@ -82,8 +89,8 @@ else()
# ref: https://gitlab.kitware.com/cmake/cmake/-/issues/15052
file(MAKE_DIRECTORY ${EXT_INCLUDE_DIRS})
set_target_properties(${ext_name} PROPERTIES
IMPORTED_LOCATION ${EXTERNALS_PREFIX_PATH}/lib/libqpdf.a
INTERFACE_LINK_LIBRARIES ${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a
IMPORTED_LOCATION ${QPDF_LIB}
INTERFACE_LINK_LIBRARIES ${JPEG_LIB}
INTERFACE_LINK_DIRECTORIES ${EXTERNALS_PREFIX_PATH}/lib
INTERFACE_INCLUDE_DIRECTORIES ${EXT_INCLUDE_DIRS}
)
Expand Down
33 changes: 28 additions & 5 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ packages = [{include = "docling_parse"}]
include = [
{path = "docling_parse/*.so", format = "wheel"},
{path = "docling_parse/*.pyd", format = "wheel"},
{path = "docling_parse/*.dll", format = "wheel"},
{path = "docling_parse/pdf_resources", format = ["sdist", "wheel"]},
{path = "docling_parse/pdf_resources", format = ["sdist", "wheel"]},
{path = "CMakeLists.txt", format = "sdist"},
Expand All @@ -47,6 +48,7 @@ build = "build.py"
[tool.poetry.dependencies]
python = "^3.9"
tabulate = ">=0.9.0,<1.0.0"
pywin32 = { version = "^306", markers = "sys_platform == 'win32'" }

[tool.poetry.group.dev.dependencies]
pytest = "^7.4.2"
Expand Down

0 comments on commit e26ed05

Please sign in to comment.