From 1e8d31c138395122df4cc2a3e0edd6cd3fad736c Mon Sep 17 00:00:00 2001
From: Peter Kjellerstedt <pkj@axis.com>
Date: Tue, 28 Apr 2020 02:05:33 +0200
Subject: [PATCH] Add options to configure the use of libbsd

Upstream-Status: Inappropriate [oe deterministic build specific]
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
 buildtools/wafsamba/wscript  |  7 +++++++
 lib/crypto/wscript_configure |  2 +-
 lib/replace/wscript          | 29 +++++++++++++++--------------
 lib/texpect/wscript          |  7 ++++++-
 4 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
index 7b8fb01..a8e4b0a 100644
--- a/buildtools/wafsamba/wscript
+++ b/buildtools/wafsamba/wscript
@@ -88,6 +88,13 @@ def options(opt):
                    help=("Disable use of gettext"),
                    action="store_true", dest='disable_gettext', default=False)
 
+    opt.add_option('--with-libbsd',
+                   help=("Enable use of libbsd"),
+                   action="store_true", dest='enable_libbsd')
+    opt.add_option('--without-libbsd',
+                   help=("Disable use of libbsd"),
+                   action="store_false", dest='enable_libbsd', default=False)
+
     gr = opt.option_group('developer options')
 
     gr.add_option('-C',
diff --git a/lib/crypto/wscript_configure b/lib/crypto/wscript_configure
index 09dfe04..e871718 100644
--- a/lib/crypto/wscript_configure
+++ b/lib/crypto/wscript_configure
@@ -2,7 +2,7 @@
 from waflib import Options
 from waflib import Errors, Logs
 
-if not conf.CHECK_FUNCS_IN('MD5Init', 'bsd', headers='bsd/md5.h',
+if not Options.options.enable_libbsd or not conf.CHECK_FUNCS_IN('MD5Init', 'bsd', headers='bsd/md5.h',
     checklibc=True):
     conf.CHECK_FUNCS_IN('MD5Init', 'md5', headers='sys/md5.h',
                         checklibc=True)
diff --git a/lib/replace/wscript b/lib/replace/wscript
index 0020d2a..cd9228f 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -407,20 +407,21 @@ def configure(conf):
 
     strlcpy_in_bsd = False
 
-    # libbsd on some platforms provides strlcpy and strlcat
-    if not conf.CHECK_FUNCS('strlcpy strlcat'):
-        if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',
-                               checklibc=True):
-            strlcpy_in_bsd = True
-    if not conf.CHECK_FUNCS('getpeereid'):
-        conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')
-    if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):
-        conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h')
-    if not conf.CHECK_FUNCS('setproctitle_init'):
-        conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h')
-
-    if not conf.CHECK_FUNCS('closefrom'):
-        conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h')
+    if Options.options.enable_libbsd:
+        # libbsd on some platforms provides strlcpy and strlcat
+        if not conf.CHECK_FUNCS('strlcpy strlcat'):
+            if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',
+                                   checklibc=True):
+                strlcpy_in_bsd = True
+        if not conf.CHECK_FUNCS('getpeereid'):
+            conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')
+        if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):
+            conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h')
+        if not conf.CHECK_FUNCS('setproctitle_init'):
+            conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h')
+
+        if not conf.CHECK_FUNCS('closefrom'):
+            conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h')
 
     conf.CHECK_CODE('''
                 struct ucred cred;
diff --git a/lib/texpect/wscript b/lib/texpect/wscript
index e14c048..a91de59 100644
--- a/lib/texpect/wscript
+++ b/lib/texpect/wscript
@@ -1,7 +1,12 @@
 #!/usr/bin/env python
+from waflib import Options
 
 def configure(conf):
-    conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers='pty.h util.h bsd/libutil.h libutil.h')
+    hdrs = 'pty.h util.h'
+    if Options.options.enable_libbsd:
+        hdrs += ' bsd/libutil.h'
+    hdrs += ' libutil.h'
+    conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers=hdrs)
 
 def build(bld):
     bld.SAMBA_BINARY('texpect', 'texpect.c', deps='popt util replace', install=False)
