aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_cppext/setup.py
diff options
context:
space:
mode:
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()