aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_cppext/setup.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-08-22 20:30:18 +0200
committerGitHub <noreply@github.com>2023-08-22 18:30:18 +0000
commit21dda09600848ac280481f7c64f8d9516dc69bb2 (patch)
tree7f07e637dfad29e825fc4f10c1aa313b39ba3d0f /Lib/test/test_cppext/setup.py
parentc1c9cd61da1c5b6318da9f7055d45ec82a9949ba (diff)
downloadcpython-21dda09600848ac280481f7c64f8d9516dc69bb2.tar.gz
cpython-21dda09600848ac280481f7c64f8d9516dc69bb2.zip
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.
Diffstat (limited to 'Lib/test/test_cppext/setup.py')
-rw-r--r--Lib/test/test_cppext/setup.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/Lib/test/test_cppext/setup.py b/Lib/test/test_cppext/setup.py
new file mode 100644
index 00000000000..6867094a420
--- /dev/null
+++ b/Lib/test/test_cppext/setup.py
@@ -0,0 +1,42 @@
+# 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
+import sys
+
+from setuptools import setup, Extension
+
+
+MS_WINDOWS = (sys.platform == 'win32')
+
+
+SOURCE = '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)
+ std = os.environ["CPYTHON_TEST_CPP_STD"]
+ name = os.environ["CPYTHON_TEST_EXT_NAME"]
+
+ 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()