Skip to content

Commit e26ed05

Browse files
authored
fix: windows build properly linking to system libraries (#36)
Signed-off-by: rmdg88 <[email protected]>
1 parent 9d62c75 commit e26ed05

File tree

4 files changed

+79
-44
lines changed

4 files changed

+79
-44
lines changed

.github/workflows/wheels.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,15 @@ jobs:
242242
update: true
243243
install: >
244244
mingw-w64-x86_64-toolchain
245-
mingw-w64-i686-toolchain
245+
mingw-w64-x86_64-gcc-libs
246246
247-
- name: Set up QPDF external-libs [windows]
247+
- name: Set up external-libs [windows]
248248
if: ${{matrix.os.platform_id == 'win_amd64'}}
249249
shell: pwsh
250250
run: |
251+
Copy-Item -Path "C:/mingw64/bin/libgcc_s_seh-1.dll" -Destination ".\docling_parse"
252+
Copy-Item -Path "C:/mingw64/bin/libstdc++-6.dll" -Destination ".\docling_parse"
253+
Copy-Item -Path "C:/mingw64/bin/libwinpthread-1.dll" -Destination ".\docling_parse"
251254
New-Item -Path 'C:\windows-libs' -ItemType Directory -Force
252255
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'
253256
Expand-Archive -Path 'C:\windows-libs\qpdf-external-libs-bin.zip' -DestinationPath 'C:\windows-libs' -Force
@@ -268,11 +271,11 @@ jobs:
268271
CIBW_BUILD_VERBOSITY: 3
269272
CIBW_ARCHS: AMD64
270273
CIBW_PROJECT_REQUIRES_PYTHON: "~=${{ matrix.python-version }}.0"
271-
PKG_CONFIG_PATH: "C:/msys64/mingw64/lib/pkgconfig"
272-
PKG_CONFIG_EXECUTABLE: "C:/msys64/usr/bin/pkg-config.exe"
273-
CMAKE_PREFIX_PATH: "C:/msys64/mingw64;C:/windows-libs/external-libs"
274-
CMAKE_LIBRARY_PATH: "C:/msys64/mingw64/lib;C:/windows-libs/external-libs/lib-mingw64"
275-
CMAKE_INCLUDE_PATH: "C:/msys64/mingw64/include;C:/windows-libs/external-libs/include"
274+
PKG_CONFIG_PATH: "C:/msys64/usr/lib/pkgconfig"
275+
PKG_CONFIG_EXECUTABLE: "C:/mingw64/bin/pkg-config.exe"
276+
CMAKE_PREFIX_PATH: "C:/msys64/mingw64;C:/mingw64;C:/windows-libs/external-libs"
277+
CMAKE_LIBRARY_PATH: "C:/msys64/mingw64/lib;C:/mingw64/lib;C:/windows-libs/external-libs/lib-mingw64"
278+
CMAKE_INCLUDE_PATH: "C:/msys64/mingw64/include;C:/mingw64/include;C:/windows-libs/external-libs/include"
276279
CMAKE_GENERATOR: "MSYS Makefiles"
277280
BUILD_THREADS: 1
278281
ASM_NASM: "C:/nasm/nasm.exe"

cmake/extlib_qpdf_v11.cmake

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,22 @@ else()
1919

2020
set(QPDF_URL https://github.com/qpdf/qpdf.git)
2121
set(QPDF_TAG v11.9.1 )
22+
23+
set(QPDF_LIB ${EXTERNALS_PREFIX_PATH}/lib/libqpdf.a)
24+
set(JPEG_LIB ${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a)
2225

2326
if(UNIX)
24-
set(QPDF_EXTRA_CXX_FLAGS "-fPIC ")
25-
set(QPDF_EXTRA_C_FLAGS "-fPIC ")
27+
set(QPDF_EXTRA_CXX_FLAGS "-fPIC ")
28+
set(QPDF_EXTRA_C_FLAGS "-fPIC ")
29+
set(BUILD_SHARED_LIBS ON)
30+
elseif(WIN32)
31+
set(QPDF_EXTRA_CXX_FLAGS "")
32+
set(QPDF_EXTRA_C_FLAGS "")
33+
set(BUILD_SHARED_LIBS OFF)
2634
else()
27-
set(QPDF_EXTRA_CXX_FLAGS " ")
28-
set(QPDF_EXTRA_C_FLAGS " ")
35+
set(QPDF_EXTRA_CXX_FLAGS " ")
36+
set(QPDF_EXTRA_C_FLAGS " ")
37+
set(BUILD_SHARED_LIBS ON)
2938
endif()
3039

3140
ExternalProject_Add(extlib_qpdf
@@ -44,35 +53,33 @@ else()
4453
INSTALL_DIR ${EXTERNALS_PREFIX_PATH}
4554

4655

47-
CMAKE_ARGS \\
48-
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \\
49-
-DBUILD_SHARED_LIBS=ON \\
50-
-DUSE_IMPLICIT_CRYPTO=OFF \\
51-
-DREQUIRE_CRYPTO_NATIVE=ON \\
52-
-DCMAKE_CXX_FLAGS=${QPDF_EXTRA_CXX_FLAGS} \\
53-
-DCMAKE_C_FLAGS=${QPDF_EXTRA_C_FLAGS} \\
54-
-DLIBJPEG_LIBRARY=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
55-
-DLIBJPEG_LIBRARIES=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
56-
-DLIBJPEG_LIB_PATH=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
57-
-DLIBJPEG_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
58-
-DLIBJPEG_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
59-
-DLIBJPEG_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
60-
-Dpc_libjpeg_LIBRARY=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
61-
-Dpc_libjpeg_LIBRARIES=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
62-
-Dpc_libjpeg_LIB_PATH=${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a \\
63-
-Dpc_libjpeg_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
64-
-Dpc_libjpeg_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
65-
-Dpc_libjpeg_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
66-
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} \\
67-
-DINSTALL_EXAMPLES=OFF \\
68-
-DBUILD_DOC_DIST=OFF \\
69-
-DCMAKE_INSTALL_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
56+
CMAKE_ARGS \\
57+
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \\
58+
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \\
59+
-DUSE_IMPLICIT_CRYPTO=OFF \\
60+
-DREQUIRE_CRYPTO_NATIVE=ON \\
61+
-DCMAKE_CXX_FLAGS=${QPDF_EXTRA_CXX_FLAGS} \\
62+
-DCMAKE_C_FLAGS=${QPDF_EXTRA_C_FLAGS} \\
63+
-DLIBJPEG_LIBRARY=${JPEG_LIB} \\
64+
-DLIBJPEG_LIBRARIES=${JPEG_LIB} \\
65+
-DLIBJPEG_LIB_PATH=${JPEG_LIB} \\
66+
-DLIBJPEG_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
67+
-DLIBJPEG_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
68+
-DLIBJPEG_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
69+
-Dpc_libjpeg_LIBRARY=${JPEG_LIB} \\
70+
-Dpc_libjpeg_LIBRARIES=${JPEG_LIB} \\
71+
-Dpc_libjpeg_LIB_PATH=${JPEG_LIB} \\
72+
-Dpc_libjpeg_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
73+
-Dpc_libjpeg_H_PATH=${EXTERNALS_PREFIX_PATH}/include \\
74+
-Dpc_libjpeg_INCLUDEDIR=${EXTERNALS_PREFIX_PATH}/include \\
75+
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} \\
76+
-DINSTALL_EXAMPLES=OFF \\
77+
-DBUILD_DOC_DIST=OFF \\
78+
-DCMAKE_INSTALL_LIBDIR=${EXTERNALS_PREFIX_PATH}/lib \\
7079
-DCMAKE_INSTALL_PREFIX=${EXTERNALS_PREFIX_PATH}
7180

7281
LOG_DOWNLOAD ON
73-
# LOG_CONFIGURE ON
74-
# LOG_BUILD ON
75-
)
82+
)
7683

7784
add_library(${ext_name} STATIC IMPORTED)
7885
add_dependencies(${ext_name} extlib_qpdf)
@@ -82,8 +89,8 @@ else()
8289
# ref: https://gitlab.kitware.com/cmake/cmake/-/issues/15052
8390
file(MAKE_DIRECTORY ${EXT_INCLUDE_DIRS})
8491
set_target_properties(${ext_name} PROPERTIES
85-
IMPORTED_LOCATION ${EXTERNALS_PREFIX_PATH}/lib/libqpdf.a
86-
INTERFACE_LINK_LIBRARIES ${EXTERNALS_PREFIX_PATH}/lib/libjpeg.a
92+
IMPORTED_LOCATION ${QPDF_LIB}
93+
INTERFACE_LINK_LIBRARIES ${JPEG_LIB}
8794
INTERFACE_LINK_DIRECTORIES ${EXTERNALS_PREFIX_PATH}/lib
8895
INTERFACE_INCLUDE_DIRECTORIES ${EXT_INCLUDE_DIRS}
8996
)

poetry.lock

Lines changed: 28 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ packages = [{include = "docling_parse"}]
3030
include = [
3131
{path = "docling_parse/*.so", format = "wheel"},
3232
{path = "docling_parse/*.pyd", format = "wheel"},
33+
{path = "docling_parse/*.dll", format = "wheel"},
3334
{path = "docling_parse/pdf_resources", format = ["sdist", "wheel"]},
3435
{path = "docling_parse/pdf_resources", format = ["sdist", "wheel"]},
3536
{path = "CMakeLists.txt", format = "sdist"},
@@ -47,6 +48,7 @@ build = "build.py"
4748
[tool.poetry.dependencies]
4849
python = "^3.9"
4950
tabulate = ">=0.9.0,<1.0.0"
51+
pywin32 = { version = "^306", markers = "sys_platform == 'win32'" }
5052

5153
[tool.poetry.group.dev.dependencies]
5254
pytest = "^7.4.2"

0 commit comments

Comments
 (0)