diff options
Diffstat (limited to 'deps/libeio/wscript')
-rw-r--r-- | deps/libeio/wscript | 127 |
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'); + |