#endif
'''
-if cxx.links(pthread_np_prefix + '''
- int main() {
- pthread_setname_np(pthread_self(), "foo");
- return 0;
- }
- ''',
- name: 'for 2-arg pthread_setname_np')
- conf.set('HAVE_PTHREAD_SETNAME_NP_2', 1, description: 'pthread_setname_np takes 2 arguments (Linux/glibc, QNX, IBM)')
-elif cxx.links(pthread_np_prefix + '''
- int main() {
- return pthread_set_name_np(pthread_self(), "foo");
- }
- ''',
- name: '2-arg pthread_set_name_np')
- conf.set('HAVE_PTHREAD_SET_NAME_NP_2', 1, description: 'pthread_set_name_np takes 2 arguments and does not return void (FreeBSD, OpenBSD)')
-elif cxx.links(pthread_np_prefix + '''
- int main() {
- pthread_set_name_np(pthread_self(), "foo");
- return 0;
- }
- ''',
- name: '2-arg void pthread_set_name_np')
- conf.set('HAVE_PTHREAD_SET_NAME_NP_2_VOID', 1, description: 'pthread_set_name_np takes 2 arguments and returns void (FreeBSD, OpenBSD)')
-elif cxx.links(pthread_np_prefix + '''
- int main() {
- return pthread_setname_np("foo");
- }
- ''',
- name: '1-arg pthread_setname_np')
- conf.set('HAVE_PTHREAD_SETNAME_NP_1', 1, description: 'pthread_setname_np takes 1 argument (Darwin, MacOS)')
-elif cxx.links(pthread_np_prefix + '''
- int main() {
- return pthread_setname_np(pthread_self(), "foo", NULL);
- }
- ''',
- name: '3-arg pthread_setname_np')
- conf.set('HAVE_PTHREAD_SETNAME_NP_3', 1, description: 'pthread_setname_np takes 3 arguments (NetBSD)')
-else
+variants = [
+ [
+ '2-arg pthread_setname_np', 'HAVE_PTHREAD_SETNAME_NP_2', 'pthread_setname_np takes 2 arguments (Linux/glibc, QNX, IBM)',
+ '''int main() { pthread_setname_np(pthread_self(), "foo"); return 0; }''',
+ ],
+ [
+ '2-arg pthread_set_name_np', 'HAVE_PTHREAD_SET_NAME_NP_2', 'pthread_set_name_np takes 2 arguments and does not return void (FreeBSD, OpenBSD)',
+ '''int main() { return pthread_set_name_np(pthread_self(), "foo"); }''',
+ ],
+ [
+ '2-arg void pthread_set_name_np', 'HAVE_PTHREAD_SET_NAME_NP_2_VOID', 'pthread_set_name_np takes 2 arguments and returns void (FreeBSD, OpenBSD)',
+ '''int main() { pthread_set_name_np(pthread_self(), "foo"); return 0; }''',
+ ],
+ [
+ '1-arg pthread_setname_np', 'HAVE_PTHREAD_SETNAME_NP_1', 'pthread_setname_np takes 1 argument (Darwin, MacOS)',
+ '''int main() { return pthread_setname_np("foo"); }''',
+ ],
+ [
+ '3-arg pthread_setname_np', 'HAVE_PTHREAD_SETNAME_NP_3', 'pthread_setname_np takes 3 arguments (NetBSD)',
+ '''int main() { return pthread_setname_np(pthread_self(), "foo", NULL); }''',
+ ],
+]
+
+found_variant = false
+foreach variant: variants
+ variant_name = variant[0]
+ variant_define = variant[1]
+ variant_description = variant[2]
+ variant_program = variant[3]
+
+ if cxx.links(pthread_np_prefix + variant_program, name: variant_name)
+ found_variant = true
+ conf.set(variant_define, 1, description: variant_description)
+ summary('pthread_setname', variant_define + ' - ' + variant_description, section: 'System')
+ break
+ endif
+endforeach
+
+if not found_variant
error('Could not find a suitable pthread_setname function')
endif