* src/atomic_ops.c: Include pthread.h only if not AO_NO_PTHREADS (new
macro).
* src/atomic_ops.c (AO_pt_lock): Define only unless AO_NO_PTHREADS.
* tests/test_atomic.c (main): Skip test_atomic_pthreads if both
AO_NO_PTHREADS and AO_USE_PTHREAD_DEFS are defined (preventing test
link failure if AO_NO_PTHREADS passed via CFLAGS).
#if !defined(_MSC_VER) && !defined(__MINGW32__) && !defined(__BORLANDC__) \
|| defined(AO_USE_NO_SIGNALS)
-#include <pthread.h>
+#ifndef AO_NO_PTHREADS
+# include <pthread.h>
+#endif
#ifndef AO_USE_NO_SIGNALS
# include <signal.h>
# include "atomic_ops/sysdeps/standard_ao_double_t.h"
#endif
-/*
- * Lock for pthreads-based implementation.
- */
-
-pthread_mutex_t AO_pt_lock = PTHREAD_MUTEX_INITIALIZER;
+/* Lock for pthreads-based implementation. */
+#ifndef AO_NO_PTHREADS
+ pthread_mutex_t AO_pt_lock = PTHREAD_MUTEX_INITIALIZER;
+#endif
/*
* Out of line compare-and-swap emulation based on test and set.
# include "config.h"
#endif
+#if defined(AO_NO_PTHREADS) && defined(AO_USE_PTHREAD_DEFS)
+# include <stdio.h>
+
+ int main(void)
+ {
+ printf("test skipped\n");
+ return 0;
+ }
+
+#else
#include "run_parallel.h"
# endif
return 0;
}
+
+#endif /* !AO_NO_PTHREADS || !AO_USE_PTHREAD_DEFS */