summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_cppext/setup.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-08-23 03:11:53 (GMT)
committerGitHub <noreply@github.com>2023-08-23 03:11:53 (GMT)
commita15396146f8b4f7196e858eba577730f66ac3fb6 (patch)
tree66f2388927b903d42cb0c9644c8b42e1bf9c5d01 /Lib/test/test_cppext/setup.py
parent12cad6155bb1291b4b6c111ef480bbc0e6a68941 (diff)
downloadcpython-a15396146f8b4f7196e858eba577730f66ac3fb6.zip
cpython-a15396146f8b4f7196e858eba577730f66ac3fb6.tar.gz
cpython-a15396146f8b4f7196e858eba577730f66ac3fb6.tar.bz2
[3.11] gh-108303: Add Lib/test/test_cppext/ sub-directory (#108325) (#108336)
gh-108303: Add Lib/test/test_cppext/ sub-directory (#108325) * Move test_cppext to its own directory * Rename setup_testcppext.py to setup.py * Rename _testcppext.cpp to extension.cpp * The source (extension.cpp) is now also copied by the test. (cherry picked from commit 21dda09600848ac280481f7c64f8d9516dc69bb2)
Diffstat (limited to 'Lib/test/test_cppext/setup.py')
-rw-r--r--Lib/test/test_cppext/setup.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/Lib/test/test_cppext/setup.py b/Lib/test/test_cppext/setup.py
new file mode 100644
index 0000000..dac3a96
--- /dev/null
+++ b/Lib/test/test_cppext/setup.py
@@ -0,0 +1,48 @@
+# gh-91321: Build a basic C++ test extension to check that the Python C API is
+# compatible with C++ and does not emit C++ compiler warnings.
+import os.path
+import sys
+
+from setuptools import setup, Extension
+
+
+MS_WINDOWS = (sys.platform == 'win32')
+
+
+SOURCE = os.path.join(os.path.dirname(__file__), 'extension.cpp')
+if not MS_WINDOWS:
+ # C++ compiler flags for GCC and clang
+ CPPFLAGS = [
+ # gh-91321: The purpose of _testcppext extension is to check that building
+ # a C++ extension using the Python C API does not emit C++ compiler
+ # warnings
+ '-Werror',
+ ]
+else:
+ # Don't pass any compiler flag to MSVC
+ CPPFLAGS = []
+
+
+def main():
+ cppflags = list(CPPFLAGS)
+ if '-std=c++03' in sys.argv:
+ sys.argv.remove('-std=c++03')
+ std = 'c++03'
+ name = '_testcpp03ext'
+ else:
+ # Python currently targets C++11
+ std = 'c++11'
+ name = '_testcpp11ext'
+
+ cppflags = [*CPPFLAGS, f'-std={std}']
+
+ cpp_ext = Extension(
+ name,
+ sources=[SOURCE],
+ language='c++',
+ extra_compile_args=cppflags)
+ setup(name='internal' + name, version='0.0', ext_modules=[cpp_ext])
+
+
+if __name__ == "__main__":
+ main()