mirror of
https://github.com/pybind/pybind11.git
synced 2024-12-01 09:27:12 +00:00
fix(cmake): add required emscripten flags (#5298)
* fix(cmake): add required emscripten flags Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * Update emscripten.yaml * fix(cmake): add required emscripten flags to headers target Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix(cmake): incorrect detection of Emscripten Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix(cmake): allow pybind11::headers to be modified Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix(cmake): hide a warning when building the tests standalone Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix(cmake): use explicit variable for is config Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * fix(cmake): go back to ALIAS target Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * chore: reduce overall diff Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * chore: reduce overall diff Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> * chore: shorten code a bit Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com> --------- Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
This commit is contained in:
parent
78e26321c6
commit
d8fcfe3416
4
.github/workflows/emscripten.yaml
vendored
4
.github/workflows/emscripten.yaml
vendored
@ -5,6 +5,8 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
- stable
|
||||||
|
- v*
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@ -23,8 +25,6 @@ jobs:
|
|||||||
- uses: pypa/cibuildwheel@v2.20
|
- uses: pypa/cibuildwheel@v2.20
|
||||||
env:
|
env:
|
||||||
PYODIDE_BUILD_EXPORTS: whole_archive
|
PYODIDE_BUILD_EXPORTS: whole_archive
|
||||||
CFLAGS: -fexceptions
|
|
||||||
LDFLAGS: -fexceptions
|
|
||||||
with:
|
with:
|
||||||
package-dir: tests
|
package-dir: tests
|
||||||
only: cp312-pyodide_wasm32
|
only: cp312-pyodide_wasm32
|
||||||
|
@ -10,6 +10,10 @@ name = "pybind11_tests"
|
|||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
dependencies = ["pytest", "pytest-timeout", "numpy", "scipy"]
|
dependencies = ["pytest", "pytest-timeout", "numpy", "scipy"]
|
||||||
|
|
||||||
|
[tool.scikit-build]
|
||||||
|
# Hide a warning while we also support CMake < 3.15
|
||||||
|
cmake.version = ">=3.15"
|
||||||
|
|
||||||
[tool.scikit-build.cmake.define]
|
[tool.scikit-build.cmake.define]
|
||||||
PYBIND11_FINDPYTHON = true
|
PYBIND11_FINDPYTHON = true
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Adds the following targets::
|
Adds the following targets::
|
||||||
|
|
||||||
pybind11::pybind11 - link to headers and pybind11
|
pybind11::pybind11 - link to Python headers and pybind11::headers
|
||||||
pybind11::module - Adds module links
|
pybind11::module - Adds module links
|
||||||
pybind11::embed - Adds embed links
|
pybind11::embed - Adds embed links
|
||||||
pybind11::lto - Link time optimizations (only if CMAKE_INTERPROCEDURAL_OPTIMIZATION is not set)
|
pybind11::lto - Link time optimizations (only if CMAKE_INTERPROCEDURAL_OPTIMIZATION is not set)
|
||||||
@ -75,6 +75,32 @@ set_property(
|
|||||||
APPEND
|
APPEND
|
||||||
PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11)
|
PROPERTY INTERFACE_LINK_LIBRARIES pybind11::pybind11)
|
||||||
|
|
||||||
|
# -------------- emscripten requires exceptions enabled -------------
|
||||||
|
# _pybind11_no_exceptions is a private mechanism to disable this addition.
|
||||||
|
# Please open an issue if you need to use it; it will be removed if no one
|
||||||
|
# needs it.
|
||||||
|
if(CMAKE_SYSTEM_NAME MATCHES Emscripten AND NOT _pybind11_no_exceptions)
|
||||||
|
if(CMAKE_VERSION VERSION_LESS 3.13)
|
||||||
|
message(WARNING "CMake 3.13+ is required to build for Emscripten. Some flags will be missing")
|
||||||
|
else()
|
||||||
|
if(_is_config)
|
||||||
|
set(_tmp_config_target pybind11::pybind11_headers)
|
||||||
|
else()
|
||||||
|
set(_tmp_config_target pybind11_headers)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(
|
||||||
|
TARGET ${_tmp_config_target}
|
||||||
|
APPEND
|
||||||
|
PROPERTY INTERFACE_LINK_OPTIONS -fexceptions)
|
||||||
|
set_property(
|
||||||
|
TARGET ${_tmp_config_target}
|
||||||
|
APPEND
|
||||||
|
PROPERTY INTERFACE_COMPILE_OPTIONS -fexceptions)
|
||||||
|
unset(_tmp_config_target)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# --------------------------- link helper ---------------------------
|
# --------------------------- link helper ---------------------------
|
||||||
|
|
||||||
add_library(pybind11::python_link_helper IMPORTED INTERFACE ${optional_global})
|
add_library(pybind11::python_link_helper IMPORTED INTERFACE ${optional_global})
|
||||||
@ -329,7 +355,7 @@ function(_pybind11_generate_lto target prefer_thin_lto)
|
|||||||
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le" OR CMAKE_SYSTEM_PROCESSOR MATCHES "mips64")
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le" OR CMAKE_SYSTEM_PROCESSOR MATCHES "mips64")
|
||||||
# Do nothing
|
# Do nothing
|
||||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES emscripten)
|
elseif(CMAKE_SYSTEM_NAME MATCHES Emscripten)
|
||||||
# This compile is very costly when cross-compiling, so set this without checking
|
# This compile is very costly when cross-compiling, so set this without checking
|
||||||
set(PYBIND11_LTO_CXX_FLAGS "-flto${thin}${cxx_append}")
|
set(PYBIND11_LTO_CXX_FLAGS "-flto${thin}${cxx_append}")
|
||||||
set(PYBIND11_LTO_LINKER_FLAGS "-flto${thin}${linker_append}")
|
set(PYBIND11_LTO_LINKER_FLAGS "-flto${thin}${linker_append}")
|
||||||
|
@ -84,7 +84,7 @@ you can either use the basic targets, or use the FindPython tools:
|
|||||||
|
|
||||||
# Python method:
|
# Python method:
|
||||||
Python_add_library(MyModule2 src2.cpp)
|
Python_add_library(MyModule2 src2.cpp)
|
||||||
target_link_libraries(MyModule2 pybind11::headers)
|
target_link_libraries(MyModule2 PUBLIC pybind11::headers)
|
||||||
set_target_properties(MyModule2 PROPERTIES
|
set_target_properties(MyModule2 PROPERTIES
|
||||||
INTERPROCEDURAL_OPTIMIZATION ON
|
INTERPROCEDURAL_OPTIMIZATION ON
|
||||||
CXX_VISIBILITY_PRESET ON
|
CXX_VISIBILITY_PRESET ON
|
||||||
|
Loading…
Reference in New Issue
Block a user