diff options
author | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
---|---|---|
committer | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/cmake/16 threads | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/cmake/16 threads')
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" } + ] + } + } +} |