]> The Tcpdump Group git mirrors - tcpdump/commitdiff
configure: special-case macOS /usr/bin/pcap-config as we do in CMake.
authorGuy Harris <[email protected]>
Tue, 3 Aug 2021 19:58:34 +0000 (12:58 -0700)
committerGuy Harris <[email protected]>
Tue, 3 Aug 2021 19:58:34 +0000 (12:58 -0700)
macOS's /usr/bin/pcap-config is incorrectly generated - pcap-config
--cflags includes -I/usr/local/include and pcap-config --libs includes
-L/usr/local/lib, even though it's the pcap-config file for the libpcap
that comes with the OS and should omit those.

aclocal.m4
configure

index c34a16b91e7f345d5ba426cfaeeb8905a28cddf1..a042d9c3a62f3653272e7a89b2aec766b687486f 100644 (file)
@@ -575,6 +575,32 @@ AC_DEFUN(AC_LBL_LIBPCAP,
                 # Found - use it to get the include flags for
                 # libpcap and the flags to link with libpcap.
                 #
+                # If this is a system-supplied pcap-config, which
+                # we define as being "a pcap-config in /usr/bin",
+                # there are some issues.  Work around them.
+                #
+                if test "$PCAP_CONFIG" = "/usr/bin/pcap-config" ; then
+                    #
+                    # It's /usr/bin/pcap-config.
+                    #
+                    case "$host_os" in
+
+                    darwin*)
+                        #
+                        # This is macOS or another Darwin-based OS.
+                        #
+                        # That means that /usr/bin/pcap-config it
+                        # may provide -I/usr/local/include with --cflags
+                        # and -L/usr/local/lib with --libs, rather than
+                        # pointing to the OS-supplied library and
+                        # Xcode-supplied headers.  Remember that, so we
+                        # ignore those values.
+                        #
+                        _broken_apple_pcap_config=yes
+                        ;;
+                    esac
+                fi
+                #
                 # Please read section 11.6 "Shell Substitutions"
                 # in the autoconf manual before doing anything
                 # to this that involves quoting.  Especially note
@@ -583,8 +609,30 @@ AC_DEFUN(AC_LBL_LIBPCAP,
                 # expressions (pfew!)."
                 #
                 cflags=`"$PCAP_CONFIG" --cflags`
+                #
+                # Work around macOS (and probably other Darwin) brokenness,
+                # by not adding /usr/local/include if it's from the broken
+                # Apple pcap-config.
+                #
+                if test "$_broken_apple_pcap_config" = "yes" ; then
+                    #
+                    # Strip -I/usr/local/include with sed.
+                    #
+                    cflags=`echo $cflags | sed 's;-I/usr/local/include;;'`
+                fi
                 $2="$cflags $$2"
                 libpcap=`"$PCAP_CONFIG" --libs`
+                #
+                # Work around macOS (and probably other Darwin) brokenness,
+                # by not adding /usr/local/lib if it's from the broken
+                # Apple pcap-config.
+                #
+                if test "$_broken_apple_pcap_config" = "yes" ; then
+                    #
+                    # Strip -L/usr/local/lib with sed.
+                    #
+                    libpcap=`echo $libpcap | sed 's;-L/usr/local/lib;;'`
+                fi
             else
                 #
                 # Not found; look for an installed pcap.
index d2a610d4e6d3f2abf9c9df74e3a607e5f5bfb497..017eb0ad280f28a59c239a0b759eb9ded6f6e4bb 100755 (executable)
--- a/configure
+++ b/configure
@@ -5489,6 +5489,32 @@ fi
                 # Found - use it to get the include flags for
                 # libpcap and the flags to link with libpcap.
                 #
+                # If this is a system-supplied pcap-config, which
+                # we define as being "a pcap-config in /usr/bin",
+                # there are some issues.  Work around them.
+                #
+                if test "$PCAP_CONFIG" = "/usr/bin/pcap-config" ; then
+                    #
+                    # It's /usr/bin/pcap-config.
+                    #
+                    case "$host_os" in
+
+                    darwin*)
+                        #
+                        # This is macOS or another Darwin-based OS.
+                        #
+                        # That means that /usr/bin/pcap-config it
+                        # may provide -I/usr/local/include with --cflags
+                        # and -L/usr/local/lib with --libs, rather than
+                        # pointing to the OS-supplied library and
+                        # Xcode-supplied headers.  Remember that, so we
+                        # ignore those values.
+                        #
+                        _broken_apple_pcap_config=yes
+                        ;;
+                    esac
+                fi
+                #
                 # Please read section 11.6 "Shell Substitutions"
                 # in the autoconf manual before doing anything
                 # to this that involves quoting.  Especially note
@@ -5497,8 +5523,30 @@ fi
                 # expressions (pfew!)."
                 #
                 cflags=`"$PCAP_CONFIG" --cflags`
+                #
+                # Work around macOS (and probably other Darwin) brokenness,
+                # by not adding /usr/local/include if it's from the broken
+                # Apple pcap-config.
+                #
+                if test "$_broken_apple_pcap_config" = "yes" ; then
+                    #
+                    # Strip -I/usr/local/include with sed.
+                    #
+                    cflags=`echo $cflags | sed 's;-I/usr/local/include;;'`
+                fi
                 V_INCLS="$cflags $V_INCLS"
                 libpcap=`"$PCAP_CONFIG" --libs`
+                #
+                # Work around macOS (and probably other Darwin) brokenness,
+                # by not adding /usr/local/lib if it's from the broken
+                # Apple pcap-config.
+                #
+                if test "$_broken_apple_pcap_config" = "yes" ; then
+                    #
+                    # Strip -L/usr/local/lib with sed.
+                    #
+                    libpcap=`echo $libpcap | sed 's;-L/usr/local/lib;;'`
+                fi
             else
                 #
                 # Not found; look for an installed pcap.