我目前僅僅在Mac上測試過而已(編譯了它所有的測試Demo),需要編譯的文件是參考它裏面其他的編譯腳本寫的,所以就是以gn格式抄一遍而已。
- 編譯靜態庫libuv,並public了它的頭文件目錄
- 寫了一個可執行程序的模板,可以編譯所有的測試Demo
- 目前僅僅在Mac平臺測試了一下可行而已,其他平臺參考改一下就好了
#----------------------------------------------------
# Author: [email protected]
# Time : Mon Mar 4 19:09:25 CST 2019
#----------------------------------------------------
# platform: win/mac/linux
config("libuv_public_config") {
include_dirs = [ "include" ]
}
static_library("libuv") {
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/threadpool.c",
"src/timer.c",
"src/uv-common.c",
"src/uv-common.h",
"src/uv-data-getter-setters.c",
"src/version.c",
]
defines = []
include_dirs = [
"include",
"src",
]
cflags = []
public_configs = [ ":libuv_public_config" ]
if (is_win) {
defines += [
"_LARGEFILE_SOURCE",
"_FILE_OFFSET_BITS=64",
"_WIN32_WINNT=0x0600",
"_GNU_SOURCE",
]
sources += [
"src/win/thread.c",
"src/win/async.c",
"src/win/process.c",
"src/win/pipe.c",
"src/win/util.c",
"src/win/loop-watcher.c",
"src/win/handle.c",
"src/win/poll.c",
"src/win/detect-wakeup.c",
"src/win/udp.c",
"src/win/fs.c",
"src/win/process-stdio.c",
"src/win/winsock.c",
"src/win/core.c",
"src/win/winapi.c",
"src/win/snprintf.c",
"src/win/tcp.c",
"src/win/getaddrinfo.c",
"src/win/error.c",
"src/win/getnameinfo.c",
"src/win/tty.c",
"src/win/fs-event.c",
"src/win/signal.c",
"src/win/dl.c",
"src/win/stream.c",
]
} else if (is_mac || is_linux) {
sources += [
"src/unix/async.c",
"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.c",
"src/unix/loop-watcher.c",
"src/unix/pipe.c",
"src/unix/poll.c",
"src/unix/process.c",
"src/unix/signal.c",
"src/unix/stream.c",
"src/unix/tcp.c",
"src/unix/thread.c",
"src/unix/tty.c",
"src/unix/udp.c",
]
if (is_mac) {
defines += [
"_DARWIN_USE_64_BIT_INODE=1",
"_DARWIN_UNLIMITED_SELECT=1",
]
sources += [
"src/unix/darwin.c",
"src/unix/fsevents.c",
"src/unix/proctitle.c",
"src/unix/darwin-proctitle.c",
"src/unix/kqueue.c",
"src/unix/bsd-ifaddrs.c",
]
} else if (is_linux) {
defines += [
"_POSIX_C_SOURCE=200112",
"_GNU_SOURCE",
]
sources += [
"src/unix/linux-core.c",
"src/unix/linux-inotify.c",
"src/unix/linux-syscalls.c",
"src/unix/procfs-exepath.c",
"src/unix/sysinfo-loadavg.c",
"src/unix/sysinfo-memory.c",
]
}
}
deps = [
"//webrtc/system_wrappers",
"//webrtc/system_wrappers:system_wrappers_default",
]
}
template("libuv_executable") {
target("executable", target_name) {
forward_variables_from(invoker, "*", [ "sources" ])
sources = invoker.sources
deps = [ ":libuv" ]
}
}
libuv_executable("uv-pipe-echo-server") { sources = [ "docs/code/pipe-echo-server/main.c" ] }
libuv_executable("uv-locks") { sources = [ "docs/code/locks/main.c" ] }
libuv_executable("uv-helloworld") { sources = [ "docs/code/helloworld/main.c" ] }
libuv_executable("uv-thread-create") { sources = [ "docs/code/thread-create/main.c" ] }
libuv_executable("uv-detach") { sources = [ "docs/code/detach/main.c" ] }
libuv_executable("uv-tty") { sources = [ "docs/code/tty/main.c" ] }
libuv_executable("uv-uvstop") { sources = [ "docs/code/uvstop/main.c" ] }
libuv_executable("uv-progress") { sources = [ "docs/code/progress/main.c" ] }
libuv_executable("uv-ref-timer") { sources = [ "docs/code/ref-timer/main.c" ] }
libuv_executable("uv-uvwget") { sources = [ "docs/code/uvwget/main.c" ] }
libuv_executable("uv-plugin") { sources = [ "docs/code/plugin/main.c" ] }
libuv_executable("uv-tcp-echo-server") { sources = [ "docs/code/tcp-echo-server/main.c" ] }
libuv_executable("uv-queue-cancel") { sources = [ "docs/code/queue-cancel/main.c" ] }
libuv_executable("uv-cgi") { sources = [ "docs/code/cgi/main.c" ] }
libuv_executable("uv-idle-compute") { sources = [ "docs/code/idle-compute/main.c" ] }
libuv_executable("uv-udp-dhcp") { sources = [ "docs/code/udp-dhcp/main.c" ] }
libuv_executable("uv-idle-basic") { sources = [ "docs/code/idle-basic/main.c" ] }
libuv_executable("uv-queue-work") { sources = [ "docs/code/queue-work/main.c" ] }
libuv_executable("uv-tty-gravity") { sources = [ "docs/code/tty-gravity/main.c" ] }
libuv_executable("uv-uvtee") { sources = [ "docs/code/uvtee/main.c" ] }
libuv_executable("uv-multi-echo-server") { sources = [ "docs/code/multi-echo-server/main.c" ] }
libuv_executable("uv-uvcat") { sources = [ "docs/code/uvcat/main.c" ] }
libuv_executable("uv-dns") { sources = [ "docs/code/dns/main.c" ] }
libuv_executable("uv-proc-streams") { sources = [ "docs/code/proc-streams/main.c" ] }
libuv_executable("uv-signal") { sources = [ "docs/code/signal/main.c" ] }
libuv_executable("uv-spawn") { sources = [ "docs/code/spawn/main.c" ] }
libuv_executable("uv-onchange") { sources = [ "docs/code/onchange/main.c" ] }
libuv_executable("uv-interfaces") { sources = [ "docs/code/interfaces/main.c" ] }