Annotation of embedaddon/ntp/m4/ntp_openssl.m4, revision 1.1.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>