Thanks to the work that's already been done, it was very easy to get NetBSD up and running. The attached patch is all that's needed to add NetBSD support to Parrot.

Steve Peters
[EMAIL PROTECTED]

+# Copyright: 2006 The Perl Foundation.  All Rights Reserved.
+# $Id$
+
+package init::hints::netbsd;
+
+use strict;
+
+sub runstep
+{
+    my ($self, $conf) = @_;
+
+    my $ccflags = $conf->data->get('ccflags');
+    if ($ccflags !~ /-pthread/) {
+        $ccflags .= ' -pthread';
+    }
+    $conf->data->set(ccflags => $ccflags);
+
+    my $libs = $conf->data->get('libs');
+    if ($libs !~ /-lpthread/) {
+        $libs .= ' -lpthread';
+    }
+    $conf->data->set(libs => $libs);
+}
+
+1;
--- /dev/null   2006-03-01 20:37:19.000000000 -0600
+++ config/gen/platform/netbsd/math.c   2006-03-01 20:15:46.000000000 -0600
@@ -0,0 +1,44 @@
+/*
+ * math stuff
+ */
+
+/*
+ * force atan2() to use IEEE behavior
+ */
+
+#include <math.h>
+
+_LIB_VERSION_TYPE _LIB_VERSION = _IEEE_;
+
+/*
+ * return true if the Numval has a negative sign
+ */
+#if DOUBLE_SIZE == 2 * INT_SIZE
+int
+Parrot_signbit(double x)
+{
+   union {
+       double d;
+       int i[2];
+   } u;
+   u.d = x;
+#if PARROT_BIGENDIAN
+   return u.i[0] < 0;
+#else
+   return u.i[1] < 0;
+#endif
+}
+#endif
+
+#if NUMVAL_SIZE == 12 && DOUBLE_SIZE == 3 * INT_SIZE && PARROT_LITTLE_ENDIAN
+int
+Parrot_signbit_l(long double x)
+{
+   union {
+       long double d;
+       int i[3];
+   } u;
+   u.d = x;
+   return u.i[2] < 0;
+}
+#endif

Reply via email to