123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- 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/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.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
- src/unix/aix-common.c
- )
- endif()
- if(CMAKE_SYSTEM_NAME MATCHES "CYGWIN")
- 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
- include/pthread-barrier.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/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/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/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/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()
- 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)
|