summaryrefslogtreecommitdiff
path: root/test cases/cmake/16 threads
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-12-28 13:37:31 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2019-12-29 19:02:24 +0200
commit4f6453bc327d91c29956459951a06bcdc73ba040 (patch)
tree2eecc6438dfa3399c67b67a0ea58ef8a49720481 /test cases/cmake/16 threads
parentd67423ab11bbcd0e81d81005608a97363804f6a2 (diff)
downloadmeson-4f6453bc327d91c29956459951a06bcdc73ba040.tar.gz
cmake: Use trace for missing link flags (fixes #6386)
This is neccessary for static libraries, since the CMake file API does not add link flags here.
Diffstat (limited to 'test cases/cmake/16 threads')
-rw-r--r--test cases/cmake/16 threads/main.cpp9
-rw-r--r--test cases/cmake/16 threads/meson.build8
-rw-r--r--test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt9
-rw-r--r--test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp15
-rw-r--r--test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp10
-rw-r--r--test cases/cmake/16 threads/subprojects/cmMod/main.cpp9
6 files changed, 60 insertions, 0 deletions
diff --git a/test cases/cmake/16 threads/main.cpp b/test cases/cmake/16 threads/main.cpp
new file mode 100644
index 000000000..67ee110a3
--- /dev/null
+++ b/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/test cases/cmake/16 threads/meson.build b/test cases/cmake/16 threads/meson.build
new file mode 100644
index 000000000..d7ade1c4a
--- /dev/null
+++ b/test cases/cmake/16 threads/meson.build
@@ -0,0 +1,8 @@
+project('cmMod', ['c', 'cpp'])
+
+cm = import('cmake')
+cmMod = cm.subproject('cmMod')
+cmModDep = cmMod.dependency('cmModLib')
+
+exe1 = executable('exe1', ['main.cpp'], dependencies: [cmModDep])
+test('exe1_OK', exe1)
diff --git a/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt b/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt
new file mode 100644
index 000000000..37d32c123
--- /dev/null
+++ b/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt
@@ -0,0 +1,9 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(cmMod CXX)
+set (CMAKE_CXX_STANDARD 14)
+
+find_package(Threads)
+
+add_library(cmModLib STATIC cmMod.cpp)
+target_link_libraries(cmModLib PRIVATE Threads::Threads)
diff --git a/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.cpp
new file mode 100644
index 000000000..f971eeba0
--- /dev/null
+++ b/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/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp
new file mode 100644
index 000000000..1c85a8b1a
--- /dev/null
+++ b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+class CmMod {
+private:
+ int num = 0;
+
+public:
+ inline int getNum() const { return num; }
+ void asyncIncrement();
+};
diff --git a/test cases/cmake/16 threads/subprojects/cmMod/main.cpp b/test cases/cmake/16 threads/subprojects/cmMod/main.cpp
new file mode 100644
index 000000000..67ee110a3
--- /dev/null
+++ b/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;
+}