diff options
-rw-r--r-- | test cases/cmake/16 threads/meson.build | 12 | ||||
-rw-r--r-- | test cases/cmake/16 threads/meson_options.txt | 1 | ||||
-rw-r--r-- | test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt | 6 | ||||
-rw-r--r-- | test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp | 13 | ||||
-rw-r--r-- | test cases/cmake/16 threads/test_matrix.json | 9 |
5 files changed, 36 insertions, 5 deletions
diff --git a/test cases/cmake/16 threads/meson.build b/test cases/cmake/16 threads/meson.build index d7ade1c..5efd73e 100644 --- a/test cases/cmake/16 threads/meson.build +++ b/test cases/cmake/16 threads/meson.build @@ -1,8 +1,12 @@ project('cmMod', ['c', 'cpp']) -cm = import('cmake') -cmMod = cm.subproject('cmMod') -cmModDep = cmMod.dependency('cmModLib') +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: [cmModDep]) +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/test cases/cmake/16 threads/meson_options.txt b/test cases/cmake/16 threads/meson_options.txt new file mode 100644 index 0000000..1fd9068 --- /dev/null +++ b/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/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt b/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt index 37d32c1..442a60e 100644 --- a/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt +++ b/test cases/cmake/16 threads/subprojects/cmMod/CMakeLists.txt @@ -3,7 +3,13 @@ cmake_minimum_required(VERSION 3.5) project(cmMod 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/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp index 1c85a8b..81c5ec8 100644 --- a/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp +++ b/test cases/cmake/16 threads/subprojects/cmMod/cmMod.hpp @@ -1,6 +1,17 @@ #pragma once -class CmMod { +#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; diff --git a/test cases/cmake/16 threads/test_matrix.json b/test cases/cmake/16 threads/test_matrix.json new file mode 100644 index 0000000..1c2c545 --- /dev/null +++ b/test cases/cmake/16 threads/test_matrix.json @@ -0,0 +1,9 @@ +{ + "options": { + "use_pthread": [ + { "val": "ON" }, + { "val": "OFF" }, + { "val": "NOT_SET" } + ] + } +} |