From ce48da9e027c9e8b685a74f04e9163952c5a5320 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 27 Apr 2014 09:05:07 +0200 Subject: build: use -pthread when available Our code currently tries to link -lpthread and adds stuff like -D_REENTRANT based on the target platform. GCC actually supports to just pass a -pthread compiler and linker flag that will automatically enable threading and define the correct symbols for the platform, so let's try to just use that as our first choice. clang also supports -pthread but it must be used only as a compiler flag, so we also take care of that scenario with this commit. --- waftools/checks/custom.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'waftools') diff --git a/waftools/checks/custom.py b/waftools/checks/custom.py index ce9735435d..20b18675db 100644 --- a/waftools/checks/custom.py +++ b/waftools/checks/custom.py @@ -8,7 +8,20 @@ __all__ = ["check_pthreads", "check_iconv", "check_lua", "check_oss_4front", pthreads_program = load_fragment('pthreads.c') +def check_pthread_flag(ctx, dependency_identifier): + checks = [ + check_cc(fragment = pthreads_program, cflags = '-pthread'), + check_cc(fragment = pthreads_program, cflags = '-pthread', + linkflags = '-pthread') ] + + for fn in checks: + if fn(ctx, dependency_identifier): + return True + return False + def check_pthreads(ctx, dependency_identifier): + if check_pthread_flag(ctx, dependency_identifier): + return True platform_cflags = { 'linux': '-D_REENTRANT', 'freebsd': '-D_THREAD_SAFE', -- cgit v1.2.3