Macro: etr_socket_nsl

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

# etr_socket_nsl

## Synopsis

`ETR_SOCKET_NSL`

## Version

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

## 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