Macro: etr_socket_nsl

Back to the Main Page. | # etr_socket_nsl | Download the M4 Source.

Synopsis

  `ETR_SOCKET_NSL`

Version

  1.1 (2001/07/26) Miscellaneous @ ac-archive-0.5.39

Author

  Warren Young <warren@etr-usa.com>

Description

  This macro figures out what libraries are required on this platform to link sockets programs. It's usually -lsocket and/or -lnsl or neither. We test for all three combinations.

M4 Source Code

      AC_DEFUN([ETR_SOCKET_NSL],
      [
      AC_CACHE_CHECK(for libraries containing socket functions,
      ac_cv_socket_libs, [
              oCFLAGS=$CFLAGS

              AC_TRY_LINK([
                              #include <sys/types.h>
                              #include <sys/socket.h>
                              #include <netinet/in.h>
                              #include <arpa/inet.h>
                      ],
                      [
                              struct in_addr add;
                              int sd = socket(AF_INET, SOCK_STREAM, 0);
                              inet_ntoa(add);
                      ],
                      ac_cv_socket_libs=-lc, ac_cv_socket_libs=no)

              if test x"$ac_cv_socket_libs" = "xno"
              then
                      CFLAGS="$oCFLAGS -lsocket"
                      AC_TRY_LINK([
                                      #include <sys/types.h>
                                      #include <sys/socket.h>
                                      #include <netinet/in.h>
                                      #include <arpa/inet.h>
                              ],
                              [
                                      struct in_addr add;
                                      int sd = socket(AF_INET, SOCK_STREAM, 0);
                                      inet_ntoa(add);
                              ],
                              ac_cv_socket_libs=-lsocket, ac_cv_socket_libs=no)
              fi

              if test x"$ac_cv_socket_libs" = "xno"
              then
                      CFLAGS="$oCFLAGS -lsocket -lnsl"
                      AC_TRY_LINK([
                                      #include <sys/types.h>
                                      #include <sys/socket.h>
                                      #include <netinet/in.h>
                                      #include <arpa/inet.h>
                              ],
                              [
                                      struct in_addr add;
                                      int sd = socket(AF_INET, SOCK_STREAM, 0);
                                      inet_ntoa(add);
                              ],
                              ac_cv_socket_libs="-lsocket -lnsl", ac_cv_socket_libs=no)
              fi

              CFLAGS=$oCFLAGS
      ])

              if test x"$ac_cv_socket_libs" = "xno"
              then
                      AC_MSG_ERROR([Cannot find socket libraries])
              elif test x"$ac_cv_socket_libs" = "x-lc"
              then
                      ETR_SOCKET_LIBS=""
              else
                      ETR_SOCKET_LIBS="$ac_cv_socket_libs"
              fi

              AC_SUBST(ETR_SOCKET_LIBS)
      ]) dnl ETR_SOCKET_NSL