Skip to content

Commit

Permalink
Link statically also libdeflate
Browse files Browse the repository at this point in the history
Signed-off-by: Jose Luis Cercos-Pita <[email protected]>
  • Loading branch information
sanguinariojoe committed Jul 18, 2023
1 parent 569c68a commit f929767
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 19 deletions.
25 changes: 23 additions & 2 deletions .github/workflows/python-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,18 @@ jobs:
cmake --build ./ --config Release --clean-first &&
cmake --install ./ --config Release &&
cd .. &&
echo "Installing libDeflate..." &&
cd libdeflate.build &&
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../openexr.install -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_PREFIX_PATH=../openexr.install -DCMAKE_INSTALL_LIBDIR=lib -DLIBDEFLATE_BUILD_SHARED_LIB=OFF -DLIBDEFLATE_USE_SHARED_LIB=OFF -DBUILD_SHARED_LIBS=OFF ../libdeflate &&
cmake --build ./ --config Release --clean-first &&
cmake --install ./ --config Release &&
cd .. &&
echo "Installing Imath-3.1.9..." &&
cd imath.build &&
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../openexr.install -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_PREFIX_PATH=../openexr.install -DCMAKE_INSTALL_LIBDIR=lib -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF ../imath &&
cmake --build ./ --config Release --clean-first &&
cmake --install ./ --config Release &&
cd .. &&
ls ./openexr.install/lib/ &&
nm ./openexr.install/lib/libImath-3_1.a &&
echo "Installing OpenEXR..." &&
cd openexr.build &&
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../openexr.install -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_PREFIX_PATH=../openexr.install -DCMAKE_INSTALL_LIBDIR=lib -DBUILD_TESTING=OFF -DOPENEXR_INSTALL_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF ../ &&
Expand Down Expand Up @@ -58,6 +62,7 @@ jobs:
- name: Create folders
run: |
mkdir -p ${{github.workspace}}/zlib.build
mkdir -p ${{github.workspace}}/libdeflate.build
mkdir -p ${{github.workspace}}/imath.build
mkdir -p ${{github.workspace}}/openexr.build
mkdir -p ${{github.workspace}}/openexr.install
Expand All @@ -74,6 +79,22 @@ jobs:
mv zlib-1.2.13 zlib
rm zlib-1.2.13.tar.gz
- name: download libDeflate source code
uses: suisei-cn/[email protected]
with:
url: https://github.com/ebiggers/libdeflate/archive/refs/tags/v1.18.zip
target: ${{github.workspace}}/

- name: Extract libDeflate
run: |
tar -xvzf v1.18.tar.gz -C ${{github.workspace}}/
mv libdeflate-1.18 libdeflate
rm v1.18.tar.gz
- name: Patch libDeflate
run: |
patch -u libdeflate/CMakeLists.txt -i ${{github.workspace}}/src/wrappers/python/libdeflate.patch
- name: download Imath source code
uses: suisei-cn/[email protected]
with:
Expand Down
12 changes: 12 additions & 0 deletions src/wrappers/python/libdeflate.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--- CMakeLists.txt 2023-07-14 08:51:51.375958419 +0200
+++ CMakeLists.txt 2023-07-14 08:47:47.854104430 +0200
@@ -183,7 +183,8 @@
endif()
set_target_properties(libdeflate_static PROPERTIES
OUTPUT_NAME ${STATIC_LIB_NAME}
- PUBLIC_HEADER libdeflate.h)
+ PUBLIC_HEADER libdeflate.h
+ POSITION_INDEPENDENT_CODE ON)
target_include_directories(libdeflate_static PUBLIC ${LIB_INCLUDE_DIRS})
target_compile_definitions(libdeflate_static PRIVATE ${LIB_COMPILE_DEFINITIONS})
target_compile_options(libdeflate_static PRIVATE ${LIB_COMPILE_OPTIONS})
35 changes: 18 additions & 17 deletions src/wrappers/python/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,39 +25,40 @@
version_major, version_minor, version_patch = version
version = f"{version_major}.{version_minor}.{version_patch}"

libraries=[]
libraries_static=['z',
f'Imath-3_1',
f'Iex-{version_major}_{version_minor}',
f'OpenEXRCore-{version_major}_{version_minor}',
f'OpenEXR-{version_major}_{version_minor}',
f'OpenEXRUtil-{version_major}_{version_minor}',
f'IlmThread-{version_major}_{version_minor}']
libs=[]
libs_static=['z',
f'OpenEXR-{version_major}_{version_minor}',
f'IlmThread-{version_major}_{version_minor}',
f'Iex-{version_major}_{version_minor}',
f'Imath-3_1',
f'OpenEXRCore-{version_major}_{version_minor}',
f'deflate',
]
definitions = [('PYOPENEXR_VERSION_MAJOR', f'{version_major}'),
('PYOPENEXR_VERSION_MINOR', f'{version_minor}'),
('PYOPENEXR_VERSION_PATCH', f'{version_patch}'),]
if platform.system() == "Windows":
libraries_static[0]='zlibstatic'
libs_static = ['zlibstatic' if l == 'z' else l for l in libs_static]
definitions = [('PYOPENEXR_VERSION', f'\\"{version}\\"')]
extra_compile_args = []
if platform.system() == 'Darwin':
extra_compile_args += ['-std=c++11',
'-Wc++11-extensions',
'-Wc++11-long-long']

libraries_dir = "./openexr.install/lib/"
if not os.path.isdir(libraries_dir):
libraries_dir = "./openexr.install/lib64/"
libs_dir = "./openexr.install/lib/"
if not os.path.isdir(libs_dir):
libs_dir = "./openexr.install/lib64/"
if platform.system() == "Windows":
extra_link_args = [libraries_dir + lib + ".lib"
for lib in libraries_static]
extra_link_args = [libs_dir + lib + ".lib"
for lib in libs_static]
extra_link_args = extra_link_args + [
"ws2_32.lib", "dbghelp.lib", "psapi.lib", "kernel32.lib", "user32.lib",
"gdi32.lib", "winspool.lib", "shell32.lib", "ole32.lib",
"oleaut32.lib", "uuid.lib", "comdlg32.lib", "advapi32.lib"]
else:
extra_link_args = [libraries_dir + "lib" + lib + ".a"
for lib in libraries_static]
extra_link_args = [libs_dir + "lib" + lib + ".a"
for lib in libs_static]


setup(name='OpenEXR',
Expand All @@ -74,7 +75,7 @@
define_macros=definitions,
include_dirs=['./openexr.install/include/OpenEXR',
'./openexr.install/include/Imath',],
libraries=libraries,
libraries=libs,
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args,
)
Expand Down

0 comments on commit f929767

Please sign in to comment.