pybind11_add_module(): OPT_SIZE target
diff --git a/tools/pybind11Common.cmake b/tools/pybind11Common.cmake
index 8f7f57b..96e958e 100644
--- a/tools/pybind11Common.cmake
+++ b/tools/pybind11Common.cmake
@@ -10,6 +10,7 @@
pybind11::python_link_helper - Adds link to Python libraries
pybind11::python2_no_register - Avoid warning/error with Python 2 + C++14/7
pybind11::windows_extras - MSVC bigobj and mp for building multithreaded
+ pybind11::opt_size - avoid optimizations that increase code size
Adds the following functions::
@@ -133,6 +134,23 @@
endif()
endif()
+# ----------------------- Optimize binary size --------------------------
+
+add_library(pybind11::opt_size IMPORTED INTERFACE ${optional_global})
+
+if(MSVC)
+ set(PYBIND11_OPT_SIZE /Os)
+else()
+ set(PYBIND11_OPT_SIZE -Os)
+endif()
+
+set_property(
+ TARGET pybind11::opt_size
+ APPEND
+ PROPERTY INTERFACE_COMPILE_OPTIONS $<$<CONFIG:Release>:${PYBIND11_OPT_SIZE}>
+ $<$<CONFIG:MinSizeRel>:${PYBIND11_OPT_SIZE}>
+ $<$<CONFIG:RelWithDebInfo>:${PYBIND11_OPT_SIZE}>)
+
# ----------------------- Legacy option --------------------------
# Warn or error if old variable name used