From b18127bc0ff43c993602050457237e26c9508196 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 12 May 2017 06:31:28 -0700 Subject: ffi: darwin port: missing types. * configure: detect clockid_t and loff_t, providing HAVE_CLOCKID_T and HAVE_LOFF_T config macros. * ffi.c (ffi_init_extra_types): Register clockid-t and loff-t types only if available. --- configure | 38 ++++++++++++++++++++++++++++++++++++++ ffi.c | 4 ++++ 2 files changed, 42 insertions(+) diff --git a/configure b/configure index a59cdaf9..c9b26f23 100755 --- a/configure +++ b/configure @@ -2825,6 +2825,44 @@ else printf "no\n" fi +printf "Checking for clockid_t ... " +cat > conftest.c < + +int main(void) +{ + clockid_t cid = CLOCK_REALTIME; + return 0; +} +! + +if conftest ; then + printf "yes\n" + printf "#define HAVE_CLOCKID_T 1\n" >> config.h + have_sys_types=y +else + printf "no\n" +fi + +printf "Checking for loff_t ... " +cat > conftest.c < + +int main(void) +{ + loff_t lo = 0; + return 0; +} +! + +if conftest ; then + printf "yes\n" + printf "#define HAVE_LOFF_T 1\n" >> config.h + have_sys_types=y +else + printf "no\n" +fi + # # Dependent variables # diff --git a/ffi.c b/ffi.c index ab640591..d34a1bb6 100644 --- a/ffi.c +++ b/ffi.c @@ -1779,8 +1779,10 @@ static void ffi_init_extra_types(void) type_by_size[(blkcnt_t) -1 > 0][sizeof (blkcnt_t)]); ffi_typedef(intern(lit("blksize-t"), user_package), type_by_size[(blksize_t) -1 > 0][sizeof (blksize_t)]); +#if HAVE_CLOCKID_T ffi_typedef(intern(lit("clockid-t"), user_package), type_by_size[(clockid_t) -1 > 0][sizeof (clockid_t)]); +#endif ffi_typedef(intern(lit("dev-t"), user_package), type_by_size[(dev_t) -1 > 0][sizeof (dev_t)]); ffi_typedef(intern(lit("fsblkcnt-t"), user_package), @@ -1795,8 +1797,10 @@ static void ffi_init_extra_types(void) type_by_size[(ino_t) -1 > 0][sizeof (ino_t)]); ffi_typedef(intern(lit("key-t"), user_package), type_by_size[(key_t) -1 > 0][sizeof (key_t)]); +#if HAVE_LOFF_T ffi_typedef(intern(lit("loff-t"), user_package), type_by_size[(loff_t) -1 > 0][sizeof (loff_t)]); +#endif ffi_typedef(intern(lit("mode-t"), user_package), type_by_size[(mode_t) -1 > 0][sizeof (mode_t)]); ffi_typedef(intern(lit("nlink-t"), user_package), -- cgit v1.2.3