build: Conditionalize bsd_getopt() on macOS The system library provides a getopt() with BSD semantics.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
diff --git a/configure.ac b/configure.ac
index d6446a0..c759d4e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -309,6 +309,7 @@ AC_CHECK_FUNCS([\
])
need_arc4random=yes
+need_bsd_getopt=yes
need_md5=yes
need_nlist=yes
need_strl=yes
@@ -330,6 +331,7 @@ AS_CASE([$host_os],
# On macOS these are provided by the system, and libbsd has never built
# there, so we can avoid providing these with no ABI breakage.
need_arc4random=no
+ need_bsd_getopt=no
need_transparent_libmd=no
need_md5=no
need_nlist=no
@@ -345,6 +347,7 @@ AS_CASE([$host_os],
AM_CONDITIONAL([HAVE_GETENTROPY], [test "x$ac_cv_func_getentropy" = "xyes"])
AM_CONDITIONAL([NEED_ARC4RANDOM], [test "x$need_arc4random" = "xyes"])
+AM_CONDITIONAL([NEED_BSD_GETOPT], [test "x$need_bsd_getopt" = "xyes"])
AM_CONDITIONAL([NEED_TRANSPARENT_LIBMD], [test "x$need_transparent_libmd" = "xyes"])
AM_CONDITIONAL([NEED_MD5], [test "x$need_md5" = "xyes"])
AM_CONDITIONAL([NEED_NLIST], [test "x$need_nlist" = "xyes"])
diff --git a/include/bsd/unistd.h b/include/bsd/unistd.h
index 20b0993..f246ac5 100644
--- a/include/bsd/unistd.h
+++ b/include/bsd/unistd.h
@@ -47,6 +47,7 @@
#endif
__BEGIN_DECLS
+#if !defined(__APPLE__)
extern int optreset;
#ifdef LIBBSD_OVERLAY
@@ -55,6 +56,7 @@ extern int optreset;
#endif
int bsd_getopt(int argc, char * const argv[], const char *shortopts);
+#endif
mode_t getmode(const void *set, mode_t mode);
void *setmode(const char *mode_str);
diff --git a/src/Makefile.am b/src/Makefile.am
index c02561e..3e26159 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -75,7 +75,6 @@ EXTRA_libbsd_la_DEPENDENCIES += \
# EOL
endif
libbsd_la_SOURCES = \
- bsd_getopt.c \
closefrom.c \
dehumanize_number.c \
err.c \
@@ -116,6 +115,12 @@ libbsd_la_SOURCES = \
wcslcpy.c \
# EOL
+if NEED_BSD_GETOPT
+libbsd_la_SOURCES += \
+ bsd_getopt.c \
+ # EOL
+endif
+
if NEED_ARC4RANDOM
if !HAVE_GETENTROPY
libbsd_la_SOURCES += \