Support SunOS 121. Check for ifaddrs in wscript for SunOS build.
authorRyan Dahl <ry@tinyclouds.org>
Wed, 6 Jul 2011 01:31:33 +0000 (18:31 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Wed, 6 Jul 2011 01:31:59 +0000 (18:31 -0700)
src/platform_sunos.cc
wscript

index 3a1cedb..76946fd 100644 (file)
 #include <net/if.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-#include <ifaddrs.h>
+
+#ifdef SUNOS_HAVE_IFADDRS
+# include <ifaddrs.h>
+#endif
 
 
 
@@ -297,6 +300,11 @@ int Platform::GetLoadAvg(Local<Array> *loads) {
 
 Handle<Value> Platform::GetInterfaceAddresses() {
   HandleScope scope;
+
+#ifndef SUNOS_HAVE_IFADDRS
+  return ThrowException(Exception::Error(String::New(
+    "This version of sunos doesn't support getifaddrs")));
+#else
   struct ::ifaddrs *addrs, *ent;
   struct ::sockaddr_in *in4;
   struct ::sockaddr_in6 *in6;
@@ -355,6 +363,8 @@ Handle<Value> Platform::GetInterfaceAddresses() {
   freeifaddrs(addrs);
 
   return scope.Close(ret);
+
+#endif  // SUNOS_HAVE_IFADDRS
 }
 
 
diff --git a/wscript b/wscript
index 1e35c0f..cdc1c88 100644 (file)
--- a/wscript
+++ b/wscript
@@ -351,6 +351,17 @@ def configure(conf):
     conf.env.append_value('CPPFLAGS', '-DHAVE_MONOTONIC_CLOCK=0')
 
   if sys.platform.startswith("sunos"):
+    code =  """
+      #include <ifaddrs.h>
+      int main(void) {
+        struct ifaddrs hello;
+        return 0;
+      }
+    """
+
+    if conf.check_cc(msg="Checking for ifaddrs on solaris", fragment=code):
+      conf.env.append_value('CPPFLAGS',  '-DSUNOS_HAVE_IFADDRS')
+
     if not conf.check(lib='socket', uselib_store="SOCKET"):
       conf.fatal("Cannot find socket library")
     if not conf.check(lib='nsl', uselib_store="NSL"):