Add changes to allow uclibc to build
This commit is contained in:
parent
81310f5d8f
commit
9a835580a6
|
@ -14,6 +14,7 @@ fn main() {
|
||||||
let android = target.contains("android");
|
let android = target.contains("android");
|
||||||
let apple = target.contains("apple");
|
let apple = target.contains("apple");
|
||||||
let musl = target.contains("musl");
|
let musl = target.contains("musl");
|
||||||
|
let uclibc = target.contains("uclibc");
|
||||||
let freebsd = target.contains("freebsd");
|
let freebsd = target.contains("freebsd");
|
||||||
let dragonfly = target.contains("dragonfly");
|
let dragonfly = target.contains("dragonfly");
|
||||||
let mips = target.contains("mips");
|
let mips = target.contains("mips");
|
||||||
|
@ -126,7 +127,7 @@ fn main() {
|
||||||
if !musl {
|
if !musl {
|
||||||
cfg.header("sys/sysctl.h");
|
cfg.header("sys/sysctl.h");
|
||||||
|
|
||||||
if !netbsd && !openbsd {
|
if !netbsd && !openbsd && !uclibc {
|
||||||
cfg.header("execinfo.h");
|
cfg.header("execinfo.h");
|
||||||
cfg.header("xlocale.h");
|
cfg.header("xlocale.h");
|
||||||
}
|
}
|
||||||
|
@ -183,7 +184,9 @@ fn main() {
|
||||||
cfg.header("sys/sendfile.h");
|
cfg.header("sys/sendfile.h");
|
||||||
cfg.header("sys/vfs.h");
|
cfg.header("sys/vfs.h");
|
||||||
cfg.header("sys/syscall.h");
|
cfg.header("sys/syscall.h");
|
||||||
|
if !uclibc {
|
||||||
cfg.header("sys/sysinfo.h");
|
cfg.header("sys/sysinfo.h");
|
||||||
|
}
|
||||||
cfg.header("sys/reboot.h");
|
cfg.header("sys/reboot.h");
|
||||||
if !musl {
|
if !musl {
|
||||||
cfg.header("linux/netlink.h");
|
cfg.header("linux/netlink.h");
|
||||||
|
@ -225,8 +228,10 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if linux || freebsd || dragonfly || netbsd || apple {
|
if linux || freebsd || dragonfly || netbsd || apple {
|
||||||
|
if !uclibc {
|
||||||
cfg.header("aio.h");
|
cfg.header("aio.h");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cfg.type_name(move |ty, is_struct| {
|
cfg.type_name(move |ty, is_struct| {
|
||||||
match ty {
|
match ty {
|
||||||
|
@ -290,6 +295,8 @@ fn main() {
|
||||||
// sighandler_t is crazy across platforms
|
// sighandler_t is crazy across platforms
|
||||||
"sighandler_t" => true,
|
"sighandler_t" => true,
|
||||||
|
|
||||||
|
"locale_t" if uclibc => true,
|
||||||
|
|
||||||
_ => false
|
_ => false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -309,6 +316,9 @@ fn main() {
|
||||||
// This is actually a union, not a struct
|
// This is actually a union, not a struct
|
||||||
"sigval" => true,
|
"sigval" => true,
|
||||||
|
|
||||||
|
// These structs have changed sinced uClibc was developed
|
||||||
|
"stat" | "stat64" | "dqblk" if uclibc => true,
|
||||||
|
|
||||||
_ => false
|
_ => false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -387,6 +397,20 @@ fn main() {
|
||||||
"KERN_KDENABLE_BG_TRACE" if apple => true,
|
"KERN_KDENABLE_BG_TRACE" if apple => true,
|
||||||
"KERN_KDDISABLE_BG_TRACE" if apple => true,
|
"KERN_KDDISABLE_BG_TRACE" if apple => true,
|
||||||
|
|
||||||
|
// uClibc doesn't support a LOT of constants, because its latest release
|
||||||
|
// was before any of them existed
|
||||||
|
"F_GETPIPE_SZ" | "F_SETPIPE_SZ" |
|
||||||
|
"CLOCK_MONOTONIC_RAW" | "CLOCK_REALTIME_COARSE" | "CLOCK_MONOTONIC_COARSE" | "CLOCK_BOOTTIME" | "CLOCK_REALTIME_ALARM" | "CLOCK_BOOTTIME_ALARM" |
|
||||||
|
// or they weren't implemented yet
|
||||||
|
"LC_PAPER" | "LC_NAME" | "LC_ADDRESS" | "LC_TELEPHONE" | "LC_MEASUREMENT" | "LC_IDENTIFICATION" |
|
||||||
|
"LC_PAPER_MASK" | "LC_NAME_MASK" | "LC_ADDRESS_MASK" | "LC_TELEPHONE_MASK" | "LC_MEASUREMENT_MASK" | "LC_IDENTIFICATION_MASK" | "LC_ALL_MASK" |
|
||||||
|
"MS_DIRSYNC" | "MS_MOVE" | "MS_REC" | "MS_SILENT" | "MS_POSIXACL" | "MS_UNBINDABLE" | "MS_PRIVATE" | "MS_SLAVE" | "MS_SHARED" | "MS_RELATIME" | "MS_KERNMOUNT" | "MS_I_VERSION" | "MS_STRICTATIME" | "MS_ACTIVE" |
|
||||||
|
"QIF_BLIMITS" | "QIF_SPACE" | "QIF_ILIMITS" | "QIF_INODES" | "QIF_BTIME" | "QIF_ITIME" | "QIF_LIMITS" | "QIF_USAGE" | "QIF_TIMES" | "QIF_ALL" | "IP_TRANSPARENT" |
|
||||||
|
"Q_GETFMT" | "Q_GETINFO" | "Q_SETINFO" | "SHM_EXEC" | "RB_SW_SUSPEND" | "RB_KEXEC" | "RUSAGE_THREAD" |
|
||||||
|
// not entirely sure why these don't work...
|
||||||
|
"LC_CTYPE_MASK" | "LC_NUMERIC_MASK" | "LC_TIME_MASK" | "LC_COLLATE_MASK" | "LC_MONETARY_MASK" | "LC_MESSAGES_MASK" |
|
||||||
|
"MADV_MERGEABLE" | "MADV_UNMERGEABLE" | "MADV_HWPOISON" | "IPV6_ADD_MEMBERSHIP" | "IPV6_DROP_MEMBERSHIP" | "IPV6_MULTICAST_LOOP" | "IPV6_V6ONLY" |
|
||||||
|
"MAP_STACK" | "MAP_HUGETLB" | "RTLD_DEEPBIND" if uclibc => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -468,6 +492,13 @@ fn main() {
|
||||||
// it's in a header file?
|
// it's in a header file?
|
||||||
"endpwent" if android => true,
|
"endpwent" if android => true,
|
||||||
|
|
||||||
|
// These are either unimplemented or optionally built into uClibc
|
||||||
|
// or "sysinfo", where it's defined but the structs in linux/sysinfo.h and sys/sysinfo.h
|
||||||
|
// clash so it can't be tested, or they're tainted with an old struct definition, as in g"getnameinfo"
|
||||||
|
"mkostemp" | "mkostemps" | "mkstemps" | "futimes" | "setns" | "sysinfo" | "fallocate" | "posix_fallocate" | "preadv" | "pwritev" | "dup3" | "openpty" | "forkpty" |
|
||||||
|
"getloadavg" | "process_vm_readv" | "process_vm_writev" | "backtrace" | "posix_madvise" |
|
||||||
|
"newlocale" | "duplocale" | "freelocale" | "uselocale" | "nl_langinfo_l" | "wcslen" | "getnameinfo" if uclibc && linux => true,
|
||||||
|
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -505,7 +536,12 @@ fn main() {
|
||||||
// musl seems to define this as an *anonymous* bitfield
|
// musl seems to define this as an *anonymous* bitfield
|
||||||
(musl && struct_ == "statvfs" && field == "__f_unused") ||
|
(musl && struct_ == "statvfs" && field == "__f_unused") ||
|
||||||
// sigev_notify_thread_id is actually part of a sigev_un union
|
// sigev_notify_thread_id is actually part of a sigev_un union
|
||||||
(struct_ == "sigevent" && field == "sigev_notify_thread_id")
|
(struct_ == "sigevent" && field == "sigev_notify_thread_id") ||
|
||||||
|
|
||||||
|
// uClibc differs in signedness
|
||||||
|
(uclibc && struct_ == "sigaction" && field == "sa_flags") ||
|
||||||
|
// same here
|
||||||
|
(uclibc && struct_ == "msghdr" && field == "msg_iovlen")
|
||||||
});
|
});
|
||||||
|
|
||||||
cfg.fn_cname(move |name, cname| {
|
cfg.fn_cname(move |name, cname| {
|
||||||
|
|
Loading…
Reference in New Issue