|
|
|
project(libuv C)
|
|
|
|
|
|
|
|
# Disable warnings to avoid changing 3rd party code.
|
|
|
|
if(CMAKE_C_COMPILER_ID MATCHES
|
|
|
|
"^(GNU|LCC|Clang|AppleClang|IBMClang|XLClang|XL|VisualAge|SunPro|HP|Intel|IntelLLVM|NVHPC)$")
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
|
|
|
|
elseif(CMAKE_C_COMPILER_ID STREQUAL "PathScale")
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
find_package(Threads)
|
|
|
|
|
|
|
|
set(uv_libraries ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
set(uv_includes include src)
|
|
|
|
set(uv_headers
|
|
|
|
include/uv.h
|
|
|
|
include/uv/errno.h
|
|
|
|
include/uv/threadpool.h
|
|
|
|
include/uv/version.h
|
|
|
|
)
|
|
|
|
set(uv_sources
|
|
|
|
src/fs-poll.c
|
|
|
|
src/heap-inl.h
|
|
|
|
src/idna.c
|
|
|
|
src/idna.h
|
|
|
|
src/inet.c
|
|
|
|
src/queue.h
|
|
|
|
src/strscpy.c
|
|
|
|
src/strscpy.h
|
|
|
|
src/strtok.c
|
|
|
|
src/strtok.h
|
|
|
|
src/threadpool.c
|
|
|
|
src/timer.c
|
|
|
|
src/uv-common.c
|
|
|
|
src/uv-common.h
|
|
|
|
src/uv-data-getter-setters.c
|
|
|
|
src/version.c
|
|
|
|
)
|
|
|
|
if(WIN32)
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
ws2_32
|
|
|
|
psapi
|
|
|
|
iphlpapi
|
|
|
|
shell32
|
|
|
|
userenv
|
|
|
|
)
|
|
|
|
list(APPEND uv_includes
|
|
|
|
src/win
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
WIN32_LEAN_AND_MEAN
|
|
|
|
_WIN32_WINNT=0x0600
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/win.h
|
|
|
|
include/tree.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/win/async.c
|
|
|
|
src/win/atomicops-inl.h
|
|
|
|
src/win/core.c
|
|
|
|
src/win/detect-wakeup.c
|
|
|
|
src/win/dl.c
|
|
|
|
src/win/error.c
|
|
|
|
src/win/fs-event.c
|
|
|
|
src/win/fs.c
|
|
|
|
src/win/getaddrinfo.c
|
|
|
|
src/win/getnameinfo.c
|
|
|
|
src/win/handle.c
|
|
|
|
src/win/handle-inl.h
|
|
|
|
src/win/internal.h
|
|
|
|
src/win/loop-watcher.c
|
|
|
|
src/win/pipe.c
|
|
|
|
src/win/poll.c
|
|
|
|
src/win/process-stdio.c
|
|
|
|
src/win/process.c
|
|
|
|
src/win/req-inl.h
|
|
|
|
src/win/signal.c
|
|
|
|
src/win/snprintf.c
|
|
|
|
src/win/stream.c
|
|
|
|
src/win/stream-inl.h
|
|
|
|
src/win/tcp.c
|
|
|
|
src/win/thread.c
|
|
|
|
src/win/tty.c
|
|
|
|
src/win/udp.c
|
|
|
|
src/win/util.c
|
|
|
|
src/win/winapi.c
|
|
|
|
src/win/winapi.h
|
|
|
|
src/win/winsock.c
|
|
|
|
src/win/winsock.h
|
|
|
|
)
|
|
|
|
else()
|
|
|
|
list(APPEND uv_includes
|
|
|
|
src/unix
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/unix.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/async.c
|
|
|
|
src/unix/atomic-ops.h
|
|
|
|
src/unix/core.c
|
|
|
|
src/unix/dl.c
|
|
|
|
src/unix/fs.c
|
|
|
|
src/unix/getaddrinfo.c
|
|
|
|
src/unix/getnameinfo.c
|
|
|
|
src/unix/internal.h
|
|
|
|
src/unix/loop-watcher.c
|
|
|
|
src/unix/loop.c
|
|
|
|
src/unix/pipe.c
|
|
|
|
src/unix/poll.c
|
|
|
|
src/unix/process.c
|
|
|
|
src/unix/signal.c
|
|
|
|
src/unix/spinlock.h
|
|
|
|
src/unix/stream.c
|
|
|
|
src/unix/tcp.c
|
|
|
|
src/unix/thread.c
|
|
|
|
src/unix/tty.c
|
|
|
|
src/unix/udp.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
perfstat
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/aix.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_ALL_SOURCE
|
|
|
|
_XOPEN_SOURCE=500
|
|
|
|
_LINUX_SOURCE_COMPAT
|
|
|
|
_THREAD_SAFE
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/aix.c
|
|
|
|
src/unix/aix-common.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "OS400")
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/posix.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_ALL_SOURCE
|
|
|
|
_XOPEN_SOURCE=500
|
|
|
|
_LINUX_SOURCE_COMPAT
|
|
|
|
_THREAD_SAFE
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/aix-common.c
|
|
|
|
src/unix/ibmi.c
|
|
|
|
src/unix/posix-poll.c
|
|
|
|
src/unix/no-fsevents.c
|
|
|
|
src/unix/no-proctitle.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME MATCHES "CYGWIN" OR CMAKE_SYSTEM_NAME MATCHES "MSYS")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/posix.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/cygwin.c
|
|
|
|
src/unix/bsd-ifaddrs.c
|
|
|
|
src/unix/no-fsevents.c
|
|
|
|
src/unix/no-proctitle.c
|
|
|
|
src/unix/posix-hrtime.c
|
|
|
|
src/unix/posix-poll.c
|
|
|
|
src/unix/procfs-exepath.c
|
|
|
|
src/unix/sysinfo-loadavg.c
|
|
|
|
src/unix/sysinfo-memory.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/darwin.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_DARWIN_USE_64_BIT_INODE=1
|
|
|
|
_DARWIN_UNLIMITED_SELECT=1
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/bsd-ifaddrs.c
|
|
|
|
src/unix/darwin.c
|
|
|
|
src/unix/darwin-proctitle.c
|
|
|
|
src/unix/fsevents.c
|
|
|
|
src/unix/kqueue.c
|
|
|
|
src/unix/proctitle.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
|
|
list(APPEND uv_libraries dl rt)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/linux.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines _GNU_SOURCE)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/epoll.c
|
|
|
|
src/unix/linux-core.c
|
|
|
|
src/unix/linux-inotify.c
|
|
|
|
src/unix/linux-syscalls.c
|
|
|
|
src/unix/linux-syscalls.h
|
|
|
|
src/unix/procfs-exepath.c
|
|
|
|
src/unix/proctitle.c
|
|
|
|
src/unix/sysinfo-loadavg.c
|
|
|
|
src/unix/sysinfo-memory.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
kvm
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/bsd.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/bsd-ifaddrs.c
|
|
|
|
src/unix/bsd-proctitle.c
|
|
|
|
src/unix/freebsd.c
|
|
|
|
src/unix/kqueue.c
|
|
|
|
src/unix/posix-hrtime.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
freebsd-glue
|
|
|
|
kvm
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/bsd.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/bsd-ifaddrs.c
|
|
|
|
src/unix/bsd-proctitle.c
|
|
|
|
src/unix/freebsd.c
|
|
|
|
src/unix/kqueue.c
|
|
|
|
src/unix/posix-hrtime.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "NetBSD")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
kvm
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/bsd.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/bsd-ifaddrs.c
|
|
|
|
src/unix/bsd-proctitle.c
|
|
|
|
src/unix/netbsd.c
|
|
|
|
src/unix/kqueue.c
|
|
|
|
src/unix/posix-hrtime.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
kvm
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/bsd.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/bsd-ifaddrs.c
|
|
|
|
src/unix/bsd-proctitle.c
|
|
|
|
src/unix/openbsd.c
|
|
|
|
src/unix/kqueue.c
|
|
|
|
src/unix/posix-hrtime.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
kstat
|
|
|
|
nsl
|
|
|
|
sendfile
|
|
|
|
socket
|
|
|
|
rt
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/sunos.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
__EXTENSIONS__
|
|
|
|
)
|
|
|
|
if(CMAKE_SYSTEM_VERSION STREQUAL "5.10")
|
|
|
|
set(CMAKE_C_STANDARD 90)
|
|
|
|
if(CMAKE_VERSION VERSION_LESS 3.8.20170504 AND CMAKE_C_COMPILER_ID STREQUAL "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.14)
|
|
|
|
# The running version of CMake does not know how to add this flag.
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c90")
|
|
|
|
endif()
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_XOPEN_SOURCE=500
|
|
|
|
)
|
|
|
|
else()
|
|
|
|
if(NOT CMAKE_C_STANDARD OR CMAKE_C_STANDARD EQUAL 90)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
|
|
endif()
|
|
|
|
if(CMAKE_VERSION VERSION_LESS 3.8.20170505 AND CMAKE_C_COMPILER_ID STREQUAL "SunPro" AND CMAKE_C_COMPILER_VERSION VERSION_LESS 5.14)
|
|
|
|
# The running version of CMake does not know how to add this flag.
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -xc99")
|
|
|
|
endif()
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_XOPEN_SOURCE=600
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/no-proctitle.c
|
|
|
|
src/unix/sunos.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "HP-UX")
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
rt
|
|
|
|
)
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/posix.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_XOPEN_SOURCE_EXTENDED
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/hpux.c
|
|
|
|
src/unix/no-fsevents.c
|
|
|
|
src/unix/posix-poll.c
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "QNX")
|
|
|
|
list(APPEND uv_headers
|
|
|
|
include/uv/posix.h
|
|
|
|
)
|
|
|
|
list(APPEND uv_defines
|
|
|
|
_XOPEN_SOURCE=700
|
|
|
|
)
|
|
|
|
list(APPEND uv_sources
|
|
|
|
src/unix/posix-hrtime.c
|
|
|
|
src/unix/posix-poll.c
|
|
|
|
src/unix/no-fsevents.c
|
|
|
|
src/unix/no-proctitle.c
|
|
|
|
)
|
|
|
|
list(APPEND uv_libraries
|
|
|
|
socket
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
include_directories(
|
|
|
|
${uv_includes}
|
|
|
|
${KWSYS_HEADER_ROOT}
|
|
|
|
)
|
|
|
|
add_library(cmlibuv STATIC ${uv_sources})
|
|
|
|
target_link_libraries(cmlibuv ${uv_libraries})
|
|
|
|
set_property(TARGET cmlibuv PROPERTY COMPILE_DEFINITIONS ${uv_defines})
|
|
|
|
|
|
|
|
install(FILES LICENSE DESTINATION ${CMAKE_DOC_DIR}/cmlibuv)
|