aboutsummaryrefslogtreecommitdiff
path: root/audio/csound/files/patch-Top_csound.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/csound/files/patch-Top_csound.c')
-rw-r--r--audio/csound/files/patch-Top_csound.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/audio/csound/files/patch-Top_csound.c b/audio/csound/files/patch-Top_csound.c
new file mode 100644
index 000000000000..2c612f114dfb
--- /dev/null
+++ b/audio/csound/files/patch-Top_csound.c
@@ -0,0 +1,64 @@
+--- Top/csound.c.orig 2013-01-07 12:49:34 UTC
++++ Top/csound.c
+@@ -70,11 +70,14 @@ extern "C" {
+ **** MAJOR PROBLEM: PTHREAD_SPINLOCK_INITIALIZER is not defined in
+ Linux or Haiku */
+
+-#if defined(linux) || defined(__HAIKU__)
++#if defined(linux) || defined(__HAIKU__) || defined(__FreeBSD__)
+ #define PTHREAD_SPINLOCK_INITIALIZER 0
+ #endif
+ #endif /* PARCS */
+
++#if defined(__FreeBSD__)
++#include <sys/sysctl.h>
++#endif
+ #if defined(USE_OPENMP)
+ #include <omp.h>
+ #endif /* USE_OPENMP */
+@@ -430,7 +433,7 @@ extern "C" {
+ NULL, /* csRandState */
+ 0, /* randSeed1 */
+ 0, /* randSeed2 */
+-#if defined(HAVE_PTHREAD_SPIN_LOCK) && (defined(PARCS))
++#if defined(__GNUC__) && defined(HAVE_PTHREAD_SPIN_LOCK) && (defined(PARCS))
+ PTHREAD_SPINLOCK_INITIALIZER, /* memlock */
+ #else
+ 0, /* memlock */
+@@ -2914,7 +2917,7 @@ void csoundNotifyFileOpened(CSOUND *csou
+ /* ------------------------------------ */
+
+ #if defined(HAVE_RDTSC)
+-#if !(defined(LINUX) && defined(__GNUC__) && defined(__i386__))
++#if !(defined(LINUX) && defined(__GNUC__) && defined(__i386__)) || !(defined(LINUX) && defined(__i386__))
+ #undef HAVE_RDTSC
+ #endif
+ #endif
+@@ -2927,6 +2930,12 @@ static double timeResolutionSeconds = -1
+ static int getTimeResolution(void)
+ {
+ #if defined(HAVE_RDTSC)
++#if defined(__FreeBSD__)
++ size_t size;
++ int timeResolutionSeconds;
++ size = sizeof timeResolutionSeconds;
++ sysctlbyname("hw.clockrate", &timeResolutionSeconds, &size, NULL, 0);
++#else
+ FILE *f;
+ char buf[256];
+
+@@ -2967,9 +2976,14 @@ static int getTimeResolution(void)
+ }
+ }
+ fclose(f);
++#endif /* __FreeBSD__ */
+ if (UNLIKELY(timeResolutionSeconds <= 0.0)) {
+ fprintf(stderr, Str("No valid CPU frequency entry "
++#if defined(__FreeBSD__)
++ "was found.\n"));
++#else
+ "was found in /proc/cpuinfo.\n"));
++#endif /* __FreeBSD__ */
+ return -1;
+ }
+ /* MHz -> seconds */