aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/cmake/16 threads
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/cmake/16 threads
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/cmake/16 threads')
-rw-r--r--meson/test cases/cmake/16 threads/main.cpp9
-rw-r--r--meson/test cases/cmake/16 threads/meson.build12
-rw-r--r--meson/test cases/cmake/16 threads/meson_options.txt1
-rw-r--r--meson/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt15
-rw-r--r--meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp15
-rw-r--r--meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp21
-rw-r--r--meson/test cases/cmake/16 threads/subprojects/cmMod/main.cpp9
-rw-r--r--meson/test cases/cmake/16 threads/test.json11
8 files changed, 93 insertions, 0 deletions
diff --git a/meson/test cases/cmake/16 threads/main.cpp b/meson/test cases/cmake/16 threads/main.cpp
new file mode 100644
index 000000000..67ee110a3
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/main.cpp
@@ -0,0 +1,9 @@
+#include "cmMod.hpp"
+
+#include <cstdlib>
+
+int main() {
+ CmMod cc;
+ cc.asyncIncrement();
+ return cc.getNum() == 1 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/meson/test cases/cmake/16 threads/meson.build b/meson/test cases/cmake/16 threads/meson.build
new file mode 100644
index 000000000..5efd73ed5
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/meson.build
@@ -0,0 +1,12 @@
+project('cmMod', ['c', 'cpp'])
+
+cm = import('cmake')
+cmOpts = ['-DUSE_PTHREAD=@0@'.format(get_option('use_pthread'))]
+cmMod = cm.subproject('cmMod', cmake_options: cmOpts)
+cmModDep1 = cmMod.dependency('cmModLib')
+cmModDep2 = cmMod.dependency('cmModLib_shared')
+
+exe1 = executable('exe1', ['main.cpp'], dependencies: [cmModDep1])
+exe2 = executable('exe2', ['main.cpp'], dependencies: [cmModDep2])
+test('exe1_OK', exe1)
+test('exe2_OK', exe2)
diff --git a/meson/test cases/cmake/16 threads/meson_options.txt b/meson/test cases/cmake/16 threads/meson_options.txt
new file mode 100644
index 000000000..1fd9068e0
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/meson_options.txt
@@ -0,0 +1 @@
+option('use_pthread', type: 'combo', choices: ['ON', 'OFF', 'NOT_SET'], value: 'ON')
diff --git a/meson/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt b/meson/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt
new file mode 100644
index 000000000..4d61b0c37
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(cmMod C CXX)
+set (CMAKE_CXX_STANDARD 14)
+
+if(NOT USE_PTHREAD STREQUAL NOT_SET)
+ set(THREADS_PREFER_PTHREAD_FLAG ${USE_PTHREAD})
+endif()
+find_package(Threads)
+
+add_library(cmModLib STATIC cmMod.cpp)
+target_link_libraries(cmModLib PRIVATE Threads::Threads)
+
+add_library(cmModLib_shared SHARED cmMod.cpp)
+target_link_libraries(cmModLib_shared PUBLIC Threads::Threads)
diff --git a/meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp b/meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp
new file mode 100644
index 000000000..f971eeba0
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp
@@ -0,0 +1,15 @@
+#include "cmMod.hpp"
+
+#include <chrono>
+#include <thread>
+
+using namespace std::chrono_literals;
+
+void CmMod::asyncIncrement() {
+ std::thread t1([this]() {
+ std::this_thread::sleep_for(100ms);
+ num += 1;
+ });
+
+ t1.join();
+}
diff --git a/meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp b/meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp
new file mode 100644
index 000000000..81c5ec867
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#if defined _WIN32 || defined __CYGWIN__
+#define DLL_PUBLIC __declspec(dllexport)
+#else
+#if defined __GNUC__
+#define DLL_PUBLIC __attribute__((visibility("default")))
+#else
+#pragma message("Compiler does not support symbol visibility.")
+#define DLL_PUBLIC
+#endif
+#endif
+
+class DLL_PUBLIC CmMod {
+private:
+ int num = 0;
+
+public:
+ inline int getNum() const { return num; }
+ void asyncIncrement();
+};
diff --git a/meson/test cases/cmake/16 threads/subprojects/cmMod/main.cpp b/meson/test cases/cmake/16 threads/subprojects/cmMod/main.cpp
new file mode 100644
index 000000000..67ee110a3
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/subprojects/cmMod/main.cpp
@@ -0,0 +1,9 @@
+#include "cmMod.hpp"
+
+#include <cstdlib>
+
+int main() {
+ CmMod cc;
+ cc.asyncIncrement();
+ return cc.getNum() == 1 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/meson/test cases/cmake/16 threads/test.json b/meson/test cases/cmake/16 threads/test.json
new file mode 100644
index 000000000..db788b113
--- /dev/null
+++ b/meson/test cases/cmake/16 threads/test.json
@@ -0,0 +1,11 @@
+{
+ "matrix": {
+ "options": {
+ "use_pthread": [
+ { "val": "ON" },
+ { "val": "OFF" },
+ { "val": "NOT_SET" }
+ ]
+ }
+ }
+}