@@ -24,22 +24,22 @@ this ``libdir`` in this guide) or to a location in ``site-packages`` within the
2424Python package install tree. All these scenarios are (or will be) supported,
2525with some caveats:
2626
27- +-----------------------+------------------+---------+-------+-------+
28- | shared library source | install location | Windows | macOS | Linux |
29- +=======================+==================+=========+=======+=======+
30- | internal | libdir | no (1) | ✓ | ✓ |
31- +-----------------------+------------------+---------+-------+-------+
32- | internal | site-packages | ✓ | ✓ | ✓ |
33- +-----------------------+------------------+---------+-------+-------+
34- | external | n/a | ✓ (2) | ✓ | ✓ |
35- +-----------------------+------------------+---------+-------+-------+
27+ +-----------------------+------------------+------------ +-------+-------+
28+ | shared library source | install location | Windows | macOS | Linux |
29+ +=======================+==================+============ +=======+=======+
30+ | internal | libdir | ✓ :sup: `1` | ✓ | ✓ |
31+ +-----------------------+------------------+------------ +-------+-------+
32+ | internal | site-packages | ✓ | ✓ | ✓ |
33+ +-----------------------+------------------+------------ +-------+-------+
34+ | external | --- | ✓ :sup: `2` | ✓ | ✓ |
35+ +-----------------------+------------------+------------ +-------+-------+
3636
3737.. TODO: add subproject as a source
3838
39- 1. Internal shared libraries on Windows cannot be automatically handled
40- correctly, and currently `` meson-python `` therefore raises an error for them.
41- ` PR meson-python#551 < https://github.com/mesonbuild/meson-python/pull/551 >`__
42- may improve that situation in the near future .
39+ 1. Support for internal shared libraries on Windows is enabled with the
40+ :option: ` allow-windows-internal-shared-libs ` option and requires cooperation
41+ from the package to extend the DLL search path or pre-load the required
42+ libraries. See below for more details .
4343
44442. External shared libraries require ``delvewheel `` usage on Windows (or some
4545 equivalent way, like amending the DLL search path to include the directory
@@ -91,23 +91,26 @@ the lack of RPATH support:
9191 :start-after: start-literalinclude
9292 :end-before: end-literalinclude
9393
94- If an internal shared library is not only used as part of a Python package, but
95- for example also as a regular shared library in a C/C++ project or as a
96- standalone library, then the method shown above won't work. The library is
97- then marked for installation into the system default ``libdir `` location.
98- Actually installing into ``libdir `` isn't possible with wheels, hence
99- ``meson-python `` will instead do the following *on platforms other than
100- Windows *:
94+ If an internal shared library is not only used as part of a Python package,
95+ but for example also as a regular shared library then the method shown above
96+ won't work. The library is then marked for installation into the system
97+ default ``libdir `` location. Actually installing into ``libdir `` isn't
98+ possible with wheels, hence ``meson-python `` will instead do the following:
10199
102- 1. Install the shared library to `` <project-name>.mesonpy.libs `` (i.e., a
100+ 1. Install the shared library to the `` . <project-name>.mesonpy.libs ``
103101 top-level directory in the wheel, which on install will end up in
104- ``site-packages ``).
105- 2. Rewrite RPATH entries for install targets that depend on the shared library
106- to point to that new install location instead.
102+ ``site-packages ``.
103+ 2. On platforms other than Windows, rewrite RPATH entries for install targets
104+ that depend on the shared library to point to that new install location
105+ instead.
107106
108- This will make the shared library work automatically, with no other action needed
109- from the package author. *However *, currently an error is raised for this situation
110- on Windows. This is documented also in :ref: `reference-limitations `.
107+ On platforms other than Windows, this will make the shared library work
108+ automatically, with no other action needed from the package author. On
109+ Windows, due to the lack of RPATH support, the ``.<project-name>.mesonpy.libs ``
110+ location search path needs to be added to the DLL search path, with code
111+ similar to the one presented above. For this reason, handling of internal
112+ shared libraries on Windows is conditional to setting the
113+ :option: `allow-windows-internal-shared-libs ` option.
111114
112115
113116External shared libraries
@@ -245,7 +248,7 @@ this will look something like:
245248 foo_dep = foo_subproj.get_variable('foo_dep')
246249
247250 Now we can use ``foo_dep `` like a normal dependency, ``meson-python `` will
248- include it into the wheel in ``<project-name>.mesonpy.libs `` just like an
251+ include it into the wheel in ``. <project-name>.mesonpy.libs `` just like an
249252internal shared library that targets ``libdir `` (see
250253:ref: `internal-shared-libraries `).
251254*Remember: this method doesn't support Windows (yet)! *
0 commit comments