Annotation of embedaddon/ntp/m4/ntp_openssl.m4, revision 1.1

1.1     ! misho       1: dnl ######################################################################
        !             2: dnl OpenSSL support shared by top-level and sntp/configure.ac
        !             3: AC_DEFUN([NTP_OPENSSL], [
        !             4:        
        !             5: AC_SUBST([OPENSSL])
        !             6: AC_SUBST([OPENSSL_INC])
        !             7: AC_SUBST([OPENSSL_LIB])
        !             8: 
        !             9: AC_MSG_CHECKING([for openssl library directory])
        !            10: AC_ARG_WITH(
        !            11:     [openssl-libdir],
        !            12:     [AS_HELP_STRING(
        !            13:        [--with-openssl-libdir], 
        !            14:        [+ =/something/reasonable]
        !            15:     )],
        !            16:     [ans=$withval],
        !            17:     [
        !            18:        case "$build" in
        !            19:         $host) ans=yes ;;
        !            20:         *)     ans=no ;;
        !            21:        esac
        !            22:     ]
        !            23: )
        !            24: case "$ans" in
        !            25:  no) 
        !            26:     ;;
        !            27:  yes) # Look in:
        !            28:     ans="/usr/lib /usr/lib/openssl /usr/sfw/lib /usr/local/lib /usr/local/ssl/lib /lib"
        !            29:     ;;
        !            30:  *) # Look where they said
        !            31:     ;;
        !            32: esac
        !            33: case "$ans" in
        !            34:  no)
        !            35:     ;;
        !            36:  *) # Look for libcrypto.a and libssl.a:
        !            37:     for i in $ans no
        !            38:     do
        !            39:        case "$host" in
        !            40:         *-*-darwin*)
        !            41:            test -f $i/libcrypto.dylib -a -f $i/libssl.dylib && break
        !            42:            ;;
        !            43:         *)
        !            44:            test -f $i/libcrypto.so -a -f $i/libssl.so && break
        !            45:            test -f $i/libcrypto.a -a -f $i/libssl.a && break
        !            46:            ;;
        !            47:        esac
        !            48:     done
        !            49:     case "$i" in
        !            50:      no)
        !            51:        ans=no
        !            52:        OPENSSL_LIB=
        !            53:        ;;
        !            54:      *) ans=$i
        !            55:        OPENSSL_LIB=$ans
        !            56:        ;;
        !            57:     esac
        !            58:     ;;
        !            59: esac
        !            60: AC_MSG_RESULT([$ans])
        !            61: 
        !            62: AC_MSG_CHECKING([for openssl include directory])
        !            63: AC_ARG_WITH(
        !            64:     [openssl-incdir],
        !            65:     [AS_HELP_STRING(
        !            66:        [--with-openssl-incdir],
        !            67:        [+ =/something/reasonable]
        !            68:     )],
        !            69:     [ans=$withval],
        !            70:     [
        !            71:        case "$build" in
        !            72:         $host) ans=yes ;;
        !            73:         *)     ans=no ;;
        !            74:        esac
        !            75:     ]
        !            76: )
        !            77: case "$ans" in
        !            78:  no)
        !            79:     ;;
        !            80:  yes) # look in:
        !            81:     ans="/usr/include /usr/sfw/include /usr/local/include /usr/local/ssl/include"
        !            82:     ;;
        !            83:  *) # Look where they said
        !            84:     ;;
        !            85: esac
        !            86: case "$ans" in
        !            87:  no)
        !            88:     ;;
        !            89:  *) # look for openssl/opensslconf.h:
        !            90:     for i in $ans no
        !            91:     do
        !            92:        test -f $i/openssl/opensslconf.h && break
        !            93:     done
        !            94:     case "$i" in
        !            95:      no)
        !            96:        ans=no
        !            97:        OPENSSL_INC=
        !            98:        ;;
        !            99:      *) ans=$i
        !           100:        OPENSSL_INC=$ans
        !           101:        ;;
        !           102:     esac
        !           103:     ;;
        !           104: esac
        !           105: AC_MSG_RESULT([$ans])
        !           106: 
        !           107: AC_MSG_CHECKING([if we will use crypto])
        !           108: AC_ARG_WITH(
        !           109:     [crypto],
        !           110:     [AS_HELP_STRING(
        !           111:        [--with-crypto],
        !           112:        [+ =openssl]
        !           113:     )],
        !           114:     [ans=$withval],
        !           115:     [ans=yes]
        !           116: )
        !           117: case "$ans" in
        !           118:  no)
        !           119:     ;;
        !           120:  yes|openssl)
        !           121:     if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INC"
        !           122:     then
        !           123:        ans=no
        !           124:     else
        !           125:        ans=yes
        !           126:     fi
        !           127: esac
        !           128: ntp_openssl=$ans
        !           129: AC_MSG_RESULT([$ans])
        !           130: 
        !           131: case "$ntp_openssl" in
        !           132:  yes)
        !           133:     # We have OpenSSL inc/lib - use them.
        !           134:     case "$OPENSSL_INC" in
        !           135:      /usr/include)
        !           136:        ;;
        !           137:      *)        
        !           138:        CPPFLAGS="$CPPFLAGS -I$OPENSSL_INC"
        !           139:        ;;
        !           140:     esac
        !           141:     case "$OPENSSL_LIB" in
        !           142:      /usr/lib)
        !           143:        ;;
        !           144:      *)        
        !           145:        LDFLAGS="$LDFLAGS -L$OPENSSL_LIB"
        !           146:        case "$need_dash_r" in
        !           147:         1)
        !           148:            LDFLAGS="$LDFLAGS -R$OPENSSL_LIB"
        !           149:        esac
        !           150:        ;;
        !           151:     esac
        !           152:     AC_SUBST([LCRYPTO], [-lcrypto])
        !           153:     AC_DEFINE([OPENSSL], [1], [Use OpenSSL?])
        !           154: esac
        !           155: 
        !           156: #
        !           157: # check for linking with -lcrypto failure, and try -lz -lcrypto.
        !           158: # Helps m68k-atari-mint
        !           159: #
        !           160: case "$ntp_openssl" in
        !           161:  yes)
        !           162:     NTPO_SAVED_LIBS="$LIBS"
        !           163:     LIBS="$NTPO_SAVED_LIBS $LCRYPTO"
        !           164:     AC_CACHE_CHECK(
        !           165:        [if linking with $LCRYPTO alone works],
        !           166:        [ntp_cv_bare_lcrypto],
        !           167:        [AC_LINK_IFELSE(
        !           168:            [AC_LANG_PROGRAM(
        !           169:                [[
        !           170:                    #include "openssl/err.h"
        !           171:                    #include "openssl/evp.h"
        !           172:                ]],
        !           173:                [[
        !           174:                    ERR_load_crypto_strings();
        !           175:                    OpenSSL_add_all_algorithms();
        !           176:                ]]
        !           177:            )],
        !           178:            [ntp_cv_bare_lcrypto=yes],
        !           179:            [ntp_cv_bare_lcrypto=no]
        !           180:        )]
        !           181:     )
        !           182:     case "$ntp_cv_bare_lcrypto" in
        !           183:      no)
        !           184:        LIBS="$NTPO_SAVED_LIBS $LCRYPTO -lz"
        !           185:        AC_CACHE_CHECK(
        !           186:            [if linking with $LCRYPTO -lz works],
        !           187:            [ntp_cv_lcrypto_lz],
        !           188:            [AC_LINK_IFELSE(
        !           189:                [AC_LANG_PROGRAM(
        !           190:                    [[
        !           191:                        #include "openssl/err.h"
        !           192:                        #include "openssl/evp.h"
        !           193:                    ]],
        !           194:                    [[
        !           195:                        ERR_load_crypto_strings();
        !           196:                        OpenSSL_add_all_algorithms();
        !           197:                    ]]
        !           198:                )],
        !           199:                [ntp_cv_lcrypto_lz=yes],
        !           200:                [ntp_cv_lcrypto_lz=no]
        !           201:            )]
        !           202:        )
        !           203:        case "$ntp_cv_lcrypto_lz" in
        !           204:         yes)
        !           205:             LCRYPTO="$LCRYPTO -lz"
        !           206:        esac
        !           207:     esac
        !           208:     LIBS="$NTPO_SAVED_LIBS"
        !           209:     AS_UNSET([NTPO_SAVED_LIBS])
        !           210: esac
        !           211: 
        !           212: #
        !           213: # Older OpenSSL headers have a number of callback prototypes inside
        !           214: # other function prototypes which trigger copious warnings with gcc's
        !           215: # -Wstrict-prototypes, which is included in -Wall.
        !           216: #
        !           217: # An example:
        !           218: #
        !           219: # int i2d_RSA_NET(const RSA *a, unsigned char **pp, 
        !           220: #                int (*cb)(), int sgckey);
        !           221: #                ^^^^^^^^^^^
        !           222: #
        !           223: # 
        !           224: #
        !           225: openssl_triggers_warnings=unknown
        !           226: SAVED_CFLAGS="$CFLAGS"
        !           227: 
        !           228: case "$GCC$ntp_openssl" in
        !           229:  yesyes)
        !           230:     CFLAGS="$CFLAGS -Werror"
        !           231:     AC_COMPILE_IFELSE(
        !           232:        [AC_LANG_PROGRAM(
        !           233:            [[
        !           234:            ]],
        !           235:            [[
        !           236:                /* see if -Werror breaks gcc */
        !           237:            ]]
        !           238:        )],
        !           239:        [gcc_handles_Werror=yes],
        !           240:        [gcc_handles_Werror=no]
        !           241:     )
        !           242:     case "$gcc_handles_Werror" in
        !           243:      no)
        !           244:        # if this gcc doesn't do -Werror go ahead and use
        !           245:        # -Wstrict-prototypes.
        !           246:        openssl_triggers_warnings=yes
        !           247:        ;;
        !           248:      yes)
        !           249:        CFLAGS="$CFLAGS -Wstrict-prototypes"
        !           250:        AC_COMPILE_IFELSE(
        !           251:            [AC_LANG_PROGRAM(
        !           252:                [[
        !           253:                    #include "openssl/asn1_mac.h"
        !           254:                    #include "openssl/bn.h"
        !           255:                    #include "openssl/err.h"
        !           256:                    #include "openssl/evp.h"
        !           257:                    #include "openssl/pem.h"
        !           258:                    #include "openssl/rand.h"
        !           259:                    #include "openssl/x509v3.h"
        !           260:                ]],
        !           261:                [[
        !           262:                    /* empty body */
        !           263:                ]]
        !           264:            )],
        !           265:            [openssl_triggers_warnings=no],
        !           266:            [openssl_triggers_warnings=yes]
        !           267:        )
        !           268:     esac
        !           269:     case "$openssl_triggers_warnings" in
        !           270:      yes)
        !           271:        CFLAGS="$SAVED_CFLAGS -Wno-strict-prototypes"
        !           272:        ;;
        !           273:      *)
        !           274:        CFLAGS="$SAVED_CFLAGS -Wstrict-prototypes"
        !           275:     esac
        !           276:     ;;
        !           277:  yesno)
        !           278:     # gcc without OpenSSL
        !           279:     CFLAGS="$SAVED_CFLAGS -Wstrict-prototypes"
        !           280: esac
        !           281: 
        !           282: ])
        !           283: dnl ======================================================================

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>