Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions recipes/recipes_emscripten/gdcm/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#!/bin/bash

mkdir build
cd build

BUILD_CONFIG=Release

if [[ ${PY3K} -eq 1 ]]; then
ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DPYTHON_VERSION_MAJOR=3 "
else
ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DPYTHON_VERSION_MAJOR=2 "
fi

mkdir -p "${PREFIX}/lib/pkgconfig"

cat > "${PREFIX}/lib/pkgconfig/openssl.pc" <<EOF
prefix=${PREFIX}
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: OpenSSL
Description: Secure Sockets Layer and cryptography libraries
Version: $(openssl version | awk '{print $2}')

Requires:
Libs: -L\${libdir} -lssl -lcrypto
Libs.private: -ldl -lpthread
Cflags: -I\${includedir}
EOF


cat > "${PREFIX}/lib/pkgconfig/uuid.pc" <<EOF
prefix=${PREFIX}
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include

Name: UUID
Description: Universally unique identifier library
Version: 1.0

Requires:
Libs: -L\${libdir} -luuid
Cflags: -I\${includedir}
EOF

export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH

# test pkg-config can find openssl
pkg-config --libs openssl


export CXX_FLAGS="${CXXFLAGS} -s SIDE_MODULE=1 -fPIC -fwasm-exceptions"
export C_FLAGS="${CFLAGS} -s SIDE_MODULE=1 -fPIC -fwasm-exceptions"


emcmake cmake .. $CMAKE_ARGS \
-Wno-dev \
-DCMAKE_PROJECT_INCLUDE=${RECIPE_DIR}/overwriteProp.cmake \
-DCMAKE_BUILD_TYPE=$BUILD_CONFIG \
-DCMAKE_PREFIX_PATH=${PREFIX} \
-DCMAKE_FIND_ROOT_PATH=$PREFIX \
-DCMAKE_INSTALL_PREFIX:PATH="$PREFIX" \
-DCMAKE_INSTALL_RPATH:PATH="$PREFIX/lib" \
-DGDCM_USE_SYSTEM_EXPAT:BOOL=ON \
-DGDCM_USE_SYSTEM_ZLIB:BOOL=ON \
-DGDCM_USE_SYSTEM_UUID:BOOL=ON \
-DGDCM_USE_SYSTEM_OPENJPEG:BOOL=ON \
-DGDCM_USE_SYSTEM_OPENSSL:BOOL=ON \
-DGDCM_USE_SYSTEM_JSON:BOOL=ON \
-DGDCM_BUILD_SHARED_LIBS:BOOL=ON \
-DGDCM_BUILD_APPLICATIONS:BOOL=OFF \
-DGDCM_BUILD_TESTING:BOOL=OFF \
-DGDCM_BUILD_EXAMPLES:BOOL=OFF \
-DGDCM_BUILD_APPLICATIONS=OFF \
-DGDCM_USE_VTK:BOOL=OFF \
-DGDCM_WRAP_PYTHON:BOOL=ON \
-DGDCM_DOCUMENTATION:BOOL=OFF \
-DGDCM_BUILD_DOCBOOK_MANPAGES:BOOL=OFF \
-DSWIG_EXECUTABLE:FILEPATH=${BUILD_PREFIX}/bin/swig \
-DGDCM_INSTALL_PYTHONMODULE_DIR:PATH=$SP_DIR \
-DGDCM_INSTALL_NO_DOCUMENTATION:BOOL=ON \
-DGDCM_INSTALL_NO_DEVELOPMENT:BOOL=ON \
-DOPENSSL_ROOT_DIR=${PREFIX} \
-DOPENSSL_INCLUDE_DIR=${PREFIX}/include \
-DOPENSSL_LIBRARY=${PREFIX}/lib/libssl.a \
-DOPENSSL_LIBRARIES=${PREFIX}/lib/libssl.a \
-DOPENSSL_SSL_LIBRARY=${PREFIX}/lib/libssl.a \
-DOPENSSL_SSL_LIBRARIES=${PREFIX}/lib/libssl.a \
-DOPENSSL_CRYPTO_LIBRARY=${PREFIX}/lib/libcrypto.a \
-DOPENSSL_CRYPTO_LIBRARIES=${PREFIX}/lib/libcrypto.a \
-DOPENSSL_USE_STATIC_LIBS=ON \
-DUUID_INCLUDE_DIR=${PREFIX}/include \
-DUUID_LIBRARY=${PREFIX}/lib/libuuid.a \
-DUUID_LIBRARIES=${PREFIX}/lib/libuuid.a \
-DEXPAT_INCLUDE_DIR=${PREFIX}/include \
-DEXPAT_LIBRARY=${PREFIX}/lib/libexpat.a \
-DEXPAT_LIBRARIES=${PREFIX}/lib/libexpat.a \
-DJSON_INCLUDE_DIR=${PREFIX}/include \
-DJSON_LIBRARY=${PREFIX}/lib/libjson-c.a \
-DJSON_LIBRARIES=${PREFIX}/lib/libjson-c.a \
-DPYTHON_LIBRARY=${PREFIX}/lib/libpython${PY_VER}.a \
-DPYTHON_INCLUDE_DIR=${PREFIX}/include/python${PY_VER} \
-DSWIG_PYTHON_LEGACY_BOOL=OFF \
$ADDITIONAL_CMAKE_FLAGS


find . -name "gdcmswigPYTHON_wrap.cxx" -exec sed -i \
's/PyEval_CallObject/PyObject_CallObject/g' {} +

emmake make -j$CPU_COUNT install
4 changes: 4 additions & 0 deletions recipes/recipes_emscripten/gdcm/overwriteProp.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-s SIDE_MODULE=1")
set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-s SIDE_MODULE=1")
set(CMAKE_STRIP FALSE) # used by default in pybind11 on .so modules
69 changes: 69 additions & 0 deletions recipes/recipes_emscripten/gdcm/recipe.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
context:
version: 3.2.2
name: gdcm

package:
name: ${{ name }}
version: ${{ version }}

source:
url: https://github.com/malaterre/GDCM/archive/refs/tags/v${{version}}.tar.gz
sha256: 133078bfff4fe850a1faaea44b0a907ba93579fd16f34c956f4d665b24b590e5

build:
number: 0

files:
exclude:
- '**/__pycache__/**'
- '**/*.pyc'
- '**/test_*.py'
python:
skip_pyc_compilation:
- '**/*.py'
requirements:
build:
- python
- crossenv >=1.2
- cross-python_emscripten-wasm32
- ${{ compiler("c") }}
- swig
- pkg-config
- cmake
- make
host:
- python
- libuuid
- zlib
- openjpeg
- expat
- json-c
- libpython
- libjpeg-turbo
- openssl
run:
- json-c
- python
- zlib

tests:
- script: pytester
requirements:
build:
- pytester
run:
- pytester-run
files:
recipe:
- test_gdcm.py


about:
homepage: https://sourceforge.net/p/gdcm/gdcm/
license: BSD-2-Clause
license_file: Copyright.txt
summary: Grassroots DICOM, cross-platform DICOM implementation.

extra:
recipe-maintainers:
- DerThorsten
5 changes: 5 additions & 0 deletions recipes/recipes_emscripten/gdcm/test_gdcm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import pytest


def test_gdcm():
import gdcm
2 changes: 1 addition & 1 deletion variant.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ jpeg:
libjpeg_turbo:
- 3
json_c:
- 0.15
- 0.18
jsoncpp:
- 1.9.5
kealib:
Expand Down
Loading