Currently FreeBSD support is broken because it has no configuration for atomic functions. The same method for Linux works with it:
// Free BSD
#elif __FreeBSD__
#define AS_BSD
#if defined(i386) && !defined(__LP64__)
#define AS_X86
#else
#define AS_MAX_PORTABILITY
#endif
#define AS_POSIX_THREADS
#if !( ( (__GNUC__ == 4) && (__GNUC_MINOR__ >= 1) || __GNUC__ > 4) )
// Only with GCC 4.1 was the atomic instructions available
#define AS_NO_ATOMIC
#endif
Then in as_atomic.cpp:
#elif defined(AS_LINUX) || defined(AS_BSD)
I've tested it using PC-BSD which is based on FreeBSD 7.2-pre
-Jeremy