summaryrefslogtreecommitdiff
path: root/test cases/cmake/26 dependency fallback/subprojects/cmMod
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-04-24 22:42:09 -0400
committerXavier Claessens <xclaesse@gmail.com>2023-09-22 15:50:26 -0400
commit49e7e3b9ccba7f9b0a135188f892b37d4e52cafc (patch)
treec2d7cce36113bc1fae778b3a55823672ee28e99f /test cases/cmake/26 dependency fallback/subprojects/cmMod
parentc0da998afa7466d58c12d8a54baf09d09ae3225e (diff)
downloadmeson-49e7e3b9ccba7f9b0a135188f892b37d4e52cafc.tar.gz
Allow to fallback to cmake subproject
The method can be overridden by setting the `method` key in the wrap file and always defaults to 'meson'. cmake.subproject() is still needed in case specific cmake options need to be passed. This also makes it easier to extend to other methods in the future e.g. cargo.
Diffstat (limited to 'test cases/cmake/26 dependency fallback/subprojects/cmMod')
-rw-r--r--test cases/cmake/26 dependency fallback/subprojects/cmMod/CMakeLists.txt20
-rw-r--r--test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.cpp15
-rw-r--r--test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.hpp18
-rw-r--r--test cases/cmake/26 dependency fallback/subprojects/cmMod/cpp_pch.hpp2
4 files changed, 55 insertions, 0 deletions
diff --git a/test cases/cmake/26 dependency fallback/subprojects/cmMod/CMakeLists.txt b/test cases/cmake/26 dependency fallback/subprojects/cmMod/CMakeLists.txt
new file mode 100644
index 000000000..d08e55cdf
--- /dev/null
+++ b/test cases/cmake/26 dependency fallback/subprojects/cmMod/CMakeLists.txt
@@ -0,0 +1,20 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(cmMod)
+set(CMAKE_CXX_STANDARD 14)
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+add_definitions("-DDO_NOTHING_JUST_A_FLAG=1")
+
+add_library(cmModLib++ SHARED cmMod.cpp)
+target_compile_definitions(cmModLib++ PRIVATE MESON_MAGIC_FLAG=21)
+target_compile_definitions(cmModLib++ INTERFACE MESON_MAGIC_FLAG=42)
+
+# Test PCH support
+if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0")
+ target_precompile_headers(cmModLib++ PRIVATE "cpp_pch.hpp")
+endif()
+
+include(GenerateExportHeader)
+generate_export_header(cmModLib++)
diff --git a/test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.cpp b/test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.cpp
new file mode 100644
index 000000000..f4cbea0ce
--- /dev/null
+++ b/test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.cpp
@@ -0,0 +1,15 @@
+#include "cmMod.hpp"
+
+using namespace std;
+
+#if MESON_MAGIC_FLAG != 21
+#error "Invalid MESON_MAGIC_FLAG (private)"
+#endif
+
+cmModClass::cmModClass(string foo) {
+ str = foo + " World";
+}
+
+string cmModClass::getStr() const {
+ return str;
+}
diff --git a/test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.hpp b/test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.hpp
new file mode 100644
index 000000000..4445e1f53
--- /dev/null
+++ b/test cases/cmake/26 dependency fallback/subprojects/cmMod/cmMod.hpp
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "cmmodlib++_export.h"
+#include <string>
+
+#if MESON_MAGIC_FLAG != 42 && MESON_MAGIC_FLAG != 21
+#error "Invalid MESON_MAGIC_FLAG"
+#endif
+
+class CMMODLIB___EXPORT cmModClass {
+private:
+ std::string str;
+
+public:
+ cmModClass(std::string foo);
+
+ std::string getStr() const;
+};
diff --git a/test cases/cmake/26 dependency fallback/subprojects/cmMod/cpp_pch.hpp b/test cases/cmake/26 dependency fallback/subprojects/cmMod/cpp_pch.hpp
new file mode 100644
index 000000000..aa7ceb361
--- /dev/null
+++ b/test cases/cmake/26 dependency fallback/subprojects/cmMod/cpp_pch.hpp
@@ -0,0 +1,2 @@
+#include <vector>
+#include <string>