CMake/Utilities/cmlibuv/CMakeLists.txt

237 lines
4.5 KiB
CMake

project(libuv C)
# Disable warnings to avoid changing 3rd party code.
if(CMAKE_C_COMPILER_ID MATCHES
"^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$")
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/inet.c
src/queue.h
src/threadpool.c
src/uv-common.c
src/uv-common.h
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.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/timer.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/timer.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
)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
list(APPEND uv_headers
include/uv-darwin.h
include/pthread-barrier.h
)
list(APPEND uv_defines
_DARWIN_USE_64_BIT_INODE=1
_DARWIN_UNLIMITED_SELECT=1
)
list(APPEND uv_sources
src/unix/darwin.c
src/unix/darwin-proctitle.c
src/unix/fsevents.c
src/unix/kqueue.c
src/unix/proctitle.c
src/unix/pthread-barrier.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/linux-core.c
src/unix/linux-inotify.c
src/unix/linux-syscalls.c
src/unix/linux-syscalls.h
src/unix/proctitle.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/freebsd.c
src/unix/kqueue.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/netbsd.c
src/unix/kqueue.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/openbsd.c
src/unix/kqueue.c
)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
list(APPEND uv_libraries
kstat
nsl
sendfile
socket
)
list(APPEND uv_headers
include/uv-sunos.h
)
list(APPEND uv_defines
__EXTENSIONS__
_XOPEN_SOURCE=500
)
list(APPEND uv_sources
src/unix/sunos.c
)
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)