summaryrefslogtreecommitdiff
path: root/deps/libeio/wscript
diff options
context:
space:
mode:
Diffstat (limited to 'deps/libeio/wscript')
-rw-r--r--deps/libeio/wscript127
1 files changed, 127 insertions, 0 deletions
diff --git a/deps/libeio/wscript b/deps/libeio/wscript
new file mode 100644
index 0000000000..8b60e54425
--- /dev/null
+++ b/deps/libeio/wscript
@@ -0,0 +1,127 @@
+import Options
+import sys
+
+def set_options(opt):
+ pass
+ #opt.tool_options('compiler_cc')
+
+def configure(conf):
+ print "--- libeio ---"
+ #conf.check_tool('compiler_cc')
+
+ conf.check(lib='pthread', uselib_store='PTHREAD')
+ conf.check_cc(lib="pthread", header_name="pthread.h", function_name="pthread_create", mandatory=True)
+ if not sys.platform.startswith("cygwin"):
+ conf.check_cc(lib="pthread", header_name="pthread.h", function_name="pthread_atfork", mandatory=True)
+ else:
+ conf.check_cc(lib="pthread", header_name="unistd.h", function_name="pthread_atfork", mandatory=True)
+
+ conf.check_cc(msg="Checking for futimes(2)", define_name="HAVE_FUTIMES", fragment="""
+ #include <sys/types.h>
+ #include <sys/time.h>
+ #include <utime.h>
+ struct timeval tv[2];
+ int res;
+ int fd;
+ int main(void)
+ {
+ res = futimes (fd, tv);
+ return 0;
+ }
+ """)
+
+ conf.check_cc(msg="Checking for readahead(2)", define_name="HAVE_READAHEAD", fragment="""
+ #include <fcntl.h>
+ int main(void)
+ {
+ int fd = 0;
+ size_t count = 2;
+ ssize_t res;
+ res = readahead (fd, 0, count);
+ return 0;
+ }
+ """)
+
+ conf.check_cc(msg="Checking for fdatasync(2)", define_name="HAVE_FDATASYNC", fragment="""
+ #include <unistd.h>
+ int main(void)
+ {
+ int fd = 0;
+ fdatasync (fd);
+ return 0;
+ }
+ """)
+
+ conf.check_cc(msg="Checking for pread(2) and pwrite(2)", define_name="HAVE_PREADWRITE", fragment="""
+ #include <unistd.h>
+ int main(void)
+ {
+ int fd = 0;
+ size_t count = 1;
+ char buf;
+ off_t offset = 1;
+ ssize_t res;
+ res = pread (fd, &buf, count, offset);
+ res = pwrite (fd, &buf, count, offset);
+ return 0;
+ }
+ """)
+
+ conf.check_cc(msg="Checking for sendfile(2)" , define_name="HAVE_SENDFILE" , fragment="""
+ # include <sys/types.h>
+ #if __linux
+ # include <sys/sendfile.h>
+ #elif __FreeBSD__ || defined(__APPLE__)
+ # include <sys/socket.h>
+ # include <sys/uio.h>
+ #elif __hpux
+ # include <sys/socket.h>
+ #else
+ # error unsupported architecture
+ #endif
+ int main(void)
+ {
+ int fd = 0;
+ off_t offset = 1;
+ size_t count = 2;
+ ssize_t res;
+ #if __linux
+ res = sendfile (fd, fd, offset, count);
+ #elif __FreeBSD__
+ res = sendfile (fd, fd, offset, count, 0, &offset, 0);
+ #elif __APPLE__
+ res = sendfile (fd, fd, offset, &offset, 0, 0);
+ #elif __hpux
+ res = sendfile (fd, fd, offset, count, 0, 0);
+ #endif
+ return 0;
+ }
+ """)
+
+ conf.env.append_value("CCFLAGS", "-D_GNU_SOURCE")
+ conf.check_cc(msg="Checking for sync_file_range(2) ", fragment="""
+ #include <fcntl.h>
+ int main(void)
+ {
+ int fd = 0;
+ off64_t offset = 1;
+ off64_t nbytes = 1;
+ unsigned int flags = SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE|SYNC_FILE_RANGE_WAIT_AFTER;
+ ssize_t res;
+ res = sync_file_range (fd, offset, nbytes, flags);
+ return 0;
+ }
+ """, define_name="HAVE_SYNC_FILE_RANGE")
+
+def build(bld):
+ libeio = bld.new_task_gen("cc")
+ libeio.source = "eio.c"
+ libeio.target = 'eio'
+ libeio.name = 'eio'
+ libeio.includes = '. ../..'
+ libeio.uselib = "PTHREAD"
+ libeio.install_path = None
+ if bld.env["USE_DEBUG"]:
+ libeio.clone("debug");
+ bld.install_files('${PREFIX}/include/node/', 'eio.h');
+