./configure tools. Platform-specific toolsets can by used for development, but the GNU tools should at least work for basic distribution and configuration.
OS-specific headers take precedence over CPU-specific headers.
The JACK configure.host
script and its system-dependent header directories were adapted from the libstdc++-v3
component of the GNU Compiler Collective, <http://gcc.gnu.org>.
fakepoll.c
implementation for Mac OS X.
Whenever possible, OS dependencies should be auto-detected by configure
. Sometimes they can be isolated in OS-specific header files, found in subdirectories of config/os
and referenced with a <sysdeps/xxx.h>
name.
If conditional compilation must be used in mainline platform-independent code, avoid using the system name. Instead, #define
a descriptive name in <config.h>
, and test it like this:
\#ifdef JACK_USE_MACH_THREADS allocate_mach_serverport(engine, client); client->running = FALSE; \#endif
Be sure to place any generic implementation alternative in the #else
or use an #ifndef
, so no other code needs to know your conditional labels.
<sysdeps/atomicity.h>
is provided for every target processor architecture. There is also a generic implementation using POSIX spin locks, but that is not a good enough solution for serious use.
The GCC package provides versions that work on most modern hardware. We've tried to keep things as close to the original as possible, while removing a bunch of os-specific files that didn't seem relevant. A primary goal has been to avoid changing the CPU-dependent <sysdeps/atomicity.h>
headers.
The relevant GCC documentation provides some helpful background, especially the atomicity.h
discussion at <http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html>.
./configure options --host
and --build
. Usually,
./config.guess can print the appropriate canonical name for any system on which it runs.