Commit Graph

97 Commits

Author SHA1 Message Date
Andrej730 c2badadfc4 cmake: skip compiled extensions when installing ifcwrap sources 2026-07-22 19:01:51 +05:00
Thomas Krijnen 7fc2d9a998 Merge remote-tracking branch 'origin/v0.8.0' into ifcviewer-wgpu 2026-07-09 13:21:39 +02:00
Thomas Krijnen d5bed316cd Option for ifcwrap cmake to run standalone #8165 2026-06-17 14:28:36 +02:00
Dion Moult 748b4e72a9 macOS: re-enable Python wrapper + stage IfcViewerMinimal.app bundle
Three coupled fixes that close the macOS bring-up loop:

## 1. ifcwrap: fix INSTALL_RPATH on Apple

The ifcopenshell_wrapper Python module had `INSTALL_RPATH "$ORIGIN"` set
for "NOT WIN32 AND NOT WASM_BUILD" — but `$ORIGIN` is a Linux ld.so
placeholder, not a macOS dyld one. macOS dyld doesn't expand it; it
bakes the literal string `$ORIGIN` into LC_RPATH, which resolves to
nothing at runtime. The wrapper's hard-link `@rpath/ifcopenshell
.document.rdb.dylib` then fails to load even though INSTALL(TARGETS …
LIBRARY DESTINATION "${python_package_dir}/ifcopenshell") above had
already dropped the plug-in dylib right next to the wrapper.

Split the rpath assignment: `@loader_path` on Apple (the dyld
equivalent of `$ORIGIN`), `$ORIGIN` elsewhere.

This is what b0ef47819 (the build_osx IFCOS_BUILD_PYTHON_WRAPPER=off
gate) was working around. The gate is removed below.

## 2. ifcviewer-minimal: stage IfcOpenShell + wgpu_native into the .app

IfcViewerMinimal.app was building on macOS via the cmake
`BUILD_BONSAIVIEWER → BUILD_BONSAIVIEWER_WGPU` promotion, but had no
bundle staging — Contents/Frameworks/ only contained the Qt
frameworks macdeployqt deposited, so the .app would refuse to start
("Library not loaded: @rpath/libwgpu_native.dylib").

Mirror what src/bonsaiviewer/CMakeLists.txt does for BonsaiViewer.app:

* Set INSTALL_RPATH to `@executable_path/../Frameworks` so the exe
  knows where to look for @rpath/* deps.
* install(FILES) libwgpu_native.dylib into the bundle's Frameworks/
  (globbed from WGPU_NATIVE_LIB_DIR rather than hard-coded so it
  covers any future versioned name).
* install(CODE) staging block that copies every `*.dylib` from
  <prefix>/lib/ into the bundle's Frameworks/, excluding the
  geometry-writer plug-ins (same EXCLUDE regex as BonsaiViewer.app —
  viewer doesn't need OBJ/glTF/DAE/STP/IGS/SVG/TTL export converters).

Same long-form rationale + caveats apply (macdeployqt doesn't follow
non-Qt @rpath deps, lib-prefixed core libs vs ifcopenshell.* plug-in
naming split, Linux's equivalent lives in build_rocky.yml workflow
bash via patchelf + stage_runtime_payload). See src/bonsaiviewer/
CMakeLists.txt for the full version.

## 3. build_osx.yml: drop IFCOS_BUILD_PYTHON_WRAPPER=off

With (1) fixed, the Python wrapper smoke test should pass again. The
gate goes away; the comment block in build_osx.yml is replaced with a
short note pointing at the ifcwrap rpath fix as the underlying change
that re-enables this.

Together, (1)+(2)+(3) close the standalone IfcViewerMinimal-on-macOS
gap (task #43) and re-enable IfcOpenShell-Python on the macOS arm64 CI.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-04 11:31:45 +10:00
Thomas Krijnen fde502daa1 svgfill as plug-in 2026-05-09 21:03:55 +02:00
Thomas Krijnen 98ff457fd6 Continue work on plug-in and tests 2026-05-06 21:17:57 +02:00
Thomas Krijnen ea4747ccb1 SIDE_MODULE=2 for plug-ins 2026-05-05 21:43:58 +02:00
Thomas Krijnen 782aa4f88f Copy more so to python module 2026-04-21 21:51:21 +02:00
Thomas Krijnen b022ca7e70 Some plug-in work 2026-04-21 16:18:59 +02:00
Thomas Krijnen b599ee1040 More work on isolating into plug-ins 2026-04-18 15:46:21 +02:00
Thomas Krijnen d2cc66fdf0 tree and document plug-ins 2026-04-17 11:24:09 +02:00
Thomas Krijnen 3824e7b449 First start plug-in architecture 2026-04-15 18:07:28 +02:00
Bruno Postle 1d5108f934 Fix linking for builds with -Wl,--as-needed 2026-02-06 16:51:41 +00:00
Andrej730 d41985f23a format cmake files 2025-12-22 18:44:42 +05:00
Andrej730 8ea4b9e38c Remove redundant links in 0555523c9 2025-12-05 20:24:00 +05:00
Andrej730 0555523c98 cmake - move all cgal related stuff to CGAL::CGAL target 2025-12-04 19:59:07 +05:00
Andrej730 52baba0fe0 cmake - don't use debug Python by default, move it to USE_DEBUG_PYTHON option 2025-12-02 16:11:38 +05:00
Esteban Dugueperoux 613015e37e cmake: Externalize OpenCascade config (#7365)
Co-authored-by: Andrej <azhilenkov@gmail.com>
2025-11-19 18:02:07 +05:00
Andrej730 ce0348518d cmake - note future cmake bug fixes 2025-10-31 18:50:52 +05:00
Andrej730 6bc4046b17 ifcwrap cmake - fix issue with debug build after migration to FindPython
In FindPython variable was renamed to Python_LIBRARY_DEBUG
2025-10-28 17:17:19 +05:00
Andrej730 1a83e52935 ifcwrap cmake - avoid using deprecated swig_link_libraries 2025-10-28 17:17:19 +05:00
Andrej730 f16d42ba14 ifcwrap cmake - use usual name for wrapper target 2025-10-28 17:17:19 +05:00
Andrej730 de89ab31cf ifcwrap cmake - move DEBUG_POSTFIX logic to one place 2025-10-28 17:17:19 +05:00
Andrej730 c8a4f1bbd2 cmake - build without Python libraries on Unix 2025-10-28 17:17:19 +05:00
Andrej730 5be1858767 ifcwrap cmake - accomodate bug in cmake makefiles generator 2025-10-28 17:17:19 +05:00
Andrej730 7ca44b5677 build-all.py wasm - move SIDE_MODULE=2 to cmake
Next to `EXPORTED_FUNCTIONS` and avoid possible issues with pyodide in the future (pyodide is using `SIDE_MODULE=1`, but currently not providing it libraries of type `MODULE`, only for shared ones).
2025-10-28 17:17:17 +05:00
Andrej730 a6921b83a1 ifcwrap cmake - provide correct suffix for wasm python extension 2025-10-28 17:17:17 +05:00
Andrej730 226581f76e build-all.py - provide exported functions to target explicitly
Otherwise it broke compilation in some cases when cmake would try to test that linker is working.
2025-10-28 17:17:17 +05:00
Andrej730 0a5388f386 ifcwrap cmake - migrate to FindPython
Also simplify run-cmake to just prefix the path, instead of providing 3 paths explicitly.
2025-10-28 17:17:15 +05:00
Thomas Krijnen 573e53ebfd Ugly workarounds to not depend on std::filesystem #7131 2025-09-29 11:29:07 +02:00
Thomas Krijnen 0d4819d6e7 dllimport/export #6926 2025-09-26 14:30:52 +02:00
Andrej730 aaf980b6b3 ifcwrap cmake - override _d interface suffix in debug builds (d004410cc)
https://discourse.cmake.org/t/a-correct-way-to-add-d-debug-prefix-for-debug-python-extensions-on-windows/15132
2025-09-02 18:27:59 +05:00
Andrej730 d004410ccb ifcwrap cmake - add _d debug postfix required on Windows 2025-08-29 19:44:03 +05:00
Andrej730 3cd2963b01 cmake - fix errors on older cmake #7023 2025-08-14 12:13:48 +05:00
Andrej730 41142c73bf cmake ifcwrap - fix CMP0148 warning
The policy is removing FindPythonInterp and FindPythonLibs, but it was introduced in 3.27, so just skip it not to break minimum cmake ver.
2025-08-13 19:45:35 +05:00
Andrej730 89c54291b0 Keep CMP0177 OLD (e54dce5dc) to avoid breaking min cmake version #7023 2025-08-13 19:45:35 +05:00
Chris Mayo 61fff3d2b4 Fix ifcwrap searching for headers in system directories #3883 (#5697) 2025-08-13 07:37:58 +00:00
Andrej730 3423e6b13d cmake - remove trailing spaces 2025-08-12 19:05:52 +05:00
Andrej730 a955d2bdee ifcwrap cmake - add hint about missing SWIG_EXECUTABLE 2025-08-12 19:05:52 +05:00
Andrej730 e54dce5dcf ifcwrap cmake - set CMP0177 to new
To fix 1k warnings running in cmake 3.30+
The new policy is that cmake is normalizing destination paths in `install` and warns if normalization has any effect on them. In our case paths after normalization should be fine, so switching it to `NEW`.
2025-08-11 18:39:20 +05:00
Thomas Krijnen 6d3612bd5b WASM build updates 2024-12-30 16:47:59 +01:00
Thomas Krijnen 9bbf345fd7 https://github.com/IfcOpenShell/svgfill/pull/8 2024-11-19 15:50:31 +01:00
Thomas Krijnen 83c40c7fb4 Don't try to install directories as files (some change in recent cmake?) 2024-10-03 10:30:53 +02:00
Andrej730 a7cac5c77b IfcWrap cmake - regenerate .py and .cxx on changes in ifcopenshell libs
Previously they wouldn't be regenerated unless you edit .i files or manually remove .py/.cxx.
2024-09-17 16:28:01 +05:00
Andrej730 1575696a8b ifcwrap cmake - use default CMP0078 policy
Something weird happened during merge in 7d90c31 and changes from 0055a5d were not applied
2024-09-17 16:28:01 +05:00
Andrej730 7d90c319f0 Merge branch 'test-cmake-policy-fix' into v0.8.0 2024-09-09 10:34:15 +05:00
Andrej730 0055a5dd82 ifcwrap cmake - use default CMP0078 policy 2024-09-06 19:58:52 +05:00
Andrej730 4ff0893a8b ifcwrap cmake - fix CMP0078 warning 2024-09-06 18:28:50 +05:00
Andrej730 791d098800 ifcwrap cmake - fix CMP0078 warning 2024-09-06 18:12:00 +05:00
Andrej730 7e5bd0ca83 ifcwrap cmake - rebuild if .i files changed 2024-09-05 15:08:36 +05:00