From ac1a332ecf460120f7710ea8f9eeebd6ef84ed87 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 1 Oct 2024 15:40:12 +0100 Subject: [PATCH] Add a test-case showing a failure when -std=c++11 is not added to the C++ compiler arguments Signed-off-by: Kate --- test/blackbox-tests/test-cases/cxx-flags.t/cpp11.cpp | 8 ++++++++ test/blackbox-tests/test-cases/cxx-flags.t/cpp11.ml | 3 +++ test/blackbox-tests/test-cases/cxx-flags.t/dune | 9 +++++++++ test/blackbox-tests/test-cases/cxx-flags.t/run.t | 8 ++++++++ 4 files changed, 28 insertions(+) create mode 100644 test/blackbox-tests/test-cases/cxx-flags.t/cpp11.cpp create mode 100644 test/blackbox-tests/test-cases/cxx-flags.t/cpp11.ml diff --git a/test/blackbox-tests/test-cases/cxx-flags.t/cpp11.cpp b/test/blackbox-tests/test-cases/cxx-flags.t/cpp11.cpp new file mode 100644 index 000000000000..7f3c6eec3fb0 --- /dev/null +++ b/test/blackbox-tests/test-cases/cxx-flags.t/cpp11.cpp @@ -0,0 +1,8 @@ +#include +#include +#include + +extern "C" CAMLprim value cpp11(value _unit) { + std::cout << "Hi from C++11" << std::endl; + return Val_unit; +} diff --git a/test/blackbox-tests/test-cases/cxx-flags.t/cpp11.ml b/test/blackbox-tests/test-cases/cxx-flags.t/cpp11.ml new file mode 100644 index 000000000000..4d8f22206a22 --- /dev/null +++ b/test/blackbox-tests/test-cases/cxx-flags.t/cpp11.ml @@ -0,0 +1,3 @@ +external cpp11 : unit -> unit = "cpp11" + +let () = cpp11 () diff --git a/test/blackbox-tests/test-cases/cxx-flags.t/dune b/test/blackbox-tests/test-cases/cxx-flags.t/dune index a3c46259b87e..f9b2d5643cee 100644 --- a/test/blackbox-tests/test-cases/cxx-flags.t/dune +++ b/test/blackbox-tests/test-cases/cxx-flags.t/dune @@ -31,3 +31,12 @@ (= %{architecture} arm64))) (action (write-file extra_flags.sexp "(-ccopt -Wl,-no_warn_duplicate_libraries)"))) + +; will fail if :standard doesn't have -std=c++11 on OCaml >= 5.0 +(executable + (name cpp11) + (modules cpp11) + (foreign_stubs + (language cxx) + (names cpp11) + (flags -std=c++98 :standard))) diff --git a/test/blackbox-tests/test-cases/cxx-flags.t/run.t b/test/blackbox-tests/test-cases/cxx-flags.t/run.t index 4e7b80b83432..3a2d24daa302 100644 --- a/test/blackbox-tests/test-cases/cxx-flags.t/run.t +++ b/test/blackbox-tests/test-cases/cxx-flags.t/run.t @@ -143,3 +143,11 @@ one can extend link flags in env $ dune rules sub/main.exe --profile some-profile | tr -s '\n' ' ' | > grep -ce "Main.cmx$GCC_LF_LIB$OTHER\|Main.cmx$Clang_LF_LIB$OTHER\|Main.cmx$Msvc_LF_LIB$OTHER" 1 + +-std=c++11 is given on OCaml 5.0 +================================ + + $ dune clean + + $ dune exec ./cpp11.exe + Hi from C++11