configure.in 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. AC_INIT
  2. AC_CANONICAL_SYSTEM
  3. AM_INIT_AUTOMAKE(cyassl,1.8.8)
  4. AM_CONFIG_HEADER(ctaocrypt/include/config.h)
  5. dnl Include m4
  6. sinclude(lib_socket_nsl.m4)
  7. sinclude(acx_pthread.m4)
  8. # make sure configure doesn't add to CFLAGS
  9. CFLAGS="$CFLAGS $C_EXTRA_FLAGS"
  10. AC_PROG_CC
  11. AC_PROG_CC_C_O
  12. AM_PROG_AS
  13. AC_PROG_INSTALL
  14. AC_LIBTOOL_WIN32_DLL
  15. AC_PROG_LIBTOOL
  16. AC_PREFIX_DEFAULT(/usr/local/cyassl)
  17. AC_C_BIGENDIAN
  18. AC_CHECK_SIZEOF(long, 4)
  19. AC_CHECK_SIZEOF(long long, 8)
  20. AC_CHECK_LIB(network,socket)
  21. AC_CHECK_LIBM
  22. AC_CHECK_HEADERS(errno.h)
  23. OPTIMIZE_CFLAGS="-Os -fomit-frame-pointer"
  24. OPTIMIZE_FAST_CFLAGS="-O3 -fomit-frame-pointer"
  25. OPTIMIZE_HUGE_CFLAGS="-funroll-loops -DTFM_SMALL_SET"
  26. DEBUG_CFLAGS="-g -DDEBUG -DDEBUG_CYASSL"
  27. # DEBUG
  28. AC_ARG_ENABLE(debug,
  29. [ --enable-debug Enable CyaSSL debugging support (default: disabled)],
  30. [ ENABLED_DEBUG=$enableval ],
  31. [ ENABLED_DEBUG=no ]
  32. )
  33. if test "$ENABLED_DEBUG" = "yes"
  34. then
  35. # Full debug. Very slow in some cases
  36. CFLAGS="$DEBUG_CFLAGS $CFLAGS"
  37. else
  38. # Optimized version. No debug
  39. CFLAGS="$CFLAGS -DNDEBUG"
  40. fi
  41. # SMALL BUILD
  42. AC_ARG_ENABLE(small,
  43. [ --enable-small Enable smallest build (default: disabled)],
  44. [ ENABLED_SMALL=$enableval ],
  45. [ ENABLED_SMALL=no ]
  46. )
  47. if test "$ENABLED_SMALL" = "yes"
  48. then
  49. # make small no tls build with smallest cipher
  50. # if you only want server or client you can define NO_CYASSL_SERVER or
  51. # NO_CYASSL_CLIENT but then some of the examples and testsuite won't build
  52. # note that TLS needs HMAC
  53. CFLAGS="-DNO_TLS -DNO_HMAC -DNO_AES -DNO_DES3 -DNO_SHA256 -DNO_ERROR_STRINGS -DNO_HC128 -DNO_RABBIT -DNO_PSK -DNO_DSA -DNO_DH $CFLAGS"
  54. fi
  55. # SINGLE THREADED
  56. AC_ARG_ENABLE(singleThreaded,
  57. [ --enable-singleThreaded Enable CyaSSL single threaded (default: disabled)],
  58. [ ENABLED_SINGLETHREADED=$enableval ],
  59. [ ENABLED_SINGLETHREADED=no ]
  60. )
  61. if test "$ENABLED_SINGLETHREADED" = "yes"
  62. then
  63. CFLAGS="-DSINGLE_THREADED $CFLAGS"
  64. fi
  65. # DTLS
  66. AC_ARG_ENABLE(dtls,
  67. [ --enable-dtls Enable CyaSSL DTLS (default: disabled)],
  68. [ ENABLED_DTLS=$enableval ],
  69. [ ENABLED_DTLS=no ]
  70. )
  71. if test "$ENABLED_DTLS" = "yes"
  72. then
  73. CFLAGS="-DCYASSL_DTLS $CFLAGS"
  74. fi
  75. # OPENSSL Extra Compatibility
  76. AC_ARG_ENABLE(opensslExtra,
  77. [ --enable-opensslExtra Enable extra OpenSSL API, size+ (default: disabled)],
  78. [ ENABLED_OPENSSLEXTRA=$enableval ],
  79. [ ENABLED_OPENSSLEXTRA=no ]
  80. )
  81. if test "$ENABLED_OPENSSLEXTRA" = "yes"
  82. then
  83. CFLAGS="-DOPENSSL_EXTRA $CFLAGS"
  84. fi
  85. # IPv6 Test Apps
  86. AC_ARG_ENABLE(ipv6,
  87. [ --enable-ipv6 Enable testing of IPV6 (default: disabled)],
  88. [ ENABLED_IPV6=$enableval ],
  89. [ ENABLED_IPV6=no ]
  90. )
  91. if test "$ENABLED_IPV6" = "yes"
  92. then
  93. CFLAGS="$CFLAGS -DTEST_IPV6"
  94. fi
  95. # fastmath
  96. AC_ARG_ENABLE(fastmath,
  97. [ --enable-fastmath Enable fast math for BigInts(default: disabled)],
  98. [ ENABLED_FASTMATH=$enableval ],
  99. [ ENABLED_FASTMATH=no ]
  100. )
  101. if test "$ENABLED_FASTMATH" = "yes"
  102. then
  103. CFLAGS="$CFLAGS -DUSE_FAST_MATH"
  104. fi
  105. # fast HUGE math
  106. AC_ARG_ENABLE(fasthugemath,
  107. [ --enable-fasthugemath Enable fast math + huge code for BigInts(def: off)],
  108. [ ENABLED_FASTHUGEMATH=$enableval ],
  109. [ ENABLED_FASTHUGEMATH=no ]
  110. )
  111. if test "$ENABLED_FASTHUGEMATH" = "yes"
  112. then
  113. ENABLED_FASTMATH="yes"
  114. CFLAGS="$CFLAGS -DUSE_FAST_MATH"
  115. fi
  116. AM_CONDITIONAL([BUILD_FASTMATH], [test "x$ENABLED_FASTMATH" = "xyes"])
  117. # big cache
  118. AC_ARG_ENABLE(bigcache,
  119. [ --enable-bigcache Enable big session cache (default: disabled)],
  120. [ ENABLED_BIGCACHE=$enableval ],
  121. [ ENABLED_BIGCACHE=no ]
  122. )
  123. if test "$ENABLED_BIGCACHE" = "yes"
  124. then
  125. CFLAGS="$CFLAGS -DBIG_SESSION_CACHE"
  126. fi
  127. # HUGE cache
  128. AC_ARG_ENABLE(hugecache,
  129. [ --enable-hugecache Enable huge session cache (default: disabled)],
  130. [ ENABLED_HUGECACHE=$enableval ],
  131. [ ENABLED_HUGECACHE=no ]
  132. )
  133. if test "$ENABLED_HUGECACHE" = "yes"
  134. then
  135. CFLAGS="$CFLAGS -DHUGE_SESSION_CACHE"
  136. fi
  137. # SNIFFER
  138. AC_ARG_ENABLE(sniffer,
  139. [ --enable-sniffer Enable CyaSSL sniffer support (default: disabled)],
  140. [ ENABLED_SNIFFER=$enableval ],
  141. [ ENABLED_SNIFFER=no ]
  142. )
  143. if test "$ENABLED_SNIFFER" = "yes"
  144. then
  145. CFLAGS="$CFLAGS -DCYASSL_SNIFFER -DOPENSSL_EXTRA"
  146. fi
  147. AM_CONDITIONAL([BUILD_SNIFFER], [test "x$ENABLED_SNIFFER" = "xyes"])
  148. # AES-NI
  149. AC_ARG_ENABLE(aesni,
  150. [ --enable-aesni Enable CyaSSL AES-NI support (default: disabled)],
  151. [ ENABLED_AESNI=$enableval ],
  152. [ ENABLED_AESNI=no ]
  153. )
  154. if test "$ENABLED_AESNI" = "yes"
  155. then
  156. CFLAGS="$CFLAGS -DCYASSL_AESNI"
  157. if test "$GCC" = "yes"
  158. then
  159. # GCC needs these flags, icc doesn't
  160. CFLAGS="$CFLAGS -maes -msse4"
  161. fi
  162. fi
  163. AM_CONDITIONAL([BUILD_AESNI], [test "x$ENABLED_AESNI" = "xyes"])
  164. # RIPEMD
  165. AC_ARG_ENABLE(ripemd,
  166. [ --enable-ripemd Enable CyaSSL RIPEMD-160 support (default: disabled)],
  167. [ ENABLED_RIPEMD=$enableval ],
  168. [ ENABLED_RIPEMD=no ]
  169. )
  170. if test "$ENABLED_RIPEMD" = "yes"
  171. then
  172. CFLAGS="$CFLAGS -DCYASSL_RIPEMD"
  173. fi
  174. AM_CONDITIONAL([BUILD_RIPEMD], [test "x$ENABLED_RIPEMD" = "xyes"])
  175. # SHA512
  176. AC_ARG_ENABLE(sha512,
  177. [ --enable-sha512 Enable CyaSSL SHA-160 support (default: disabled)],
  178. [ ENABLED_SHA512=$enableval ],
  179. [ ENABLED_SHA512=no ]
  180. )
  181. if test "$ENABLED_SHA512" = "yes"
  182. then
  183. CFLAGS="$CFLAGS -DCYASSL_SHA512"
  184. fi
  185. AM_CONDITIONAL([BUILD_SHA512], [test "x$ENABLED_SHA512" = "xyes"])
  186. # SESSION CERTS
  187. AC_ARG_ENABLE(sessioncerts,
  188. [ --enable-sessioncerts Enable session cert storing (default: disabled)],
  189. [ ENABLED_SESSIONCERTS=$enableval ],
  190. [ ENABLED_SESSIONCERTS=no ]
  191. )
  192. if test "$ENABLED_SESSIONCERTS" = "yes"
  193. then
  194. CFLAGS="$CFLAGS -DSESSION_CERTS"
  195. fi
  196. # KEY GENERATION
  197. AC_ARG_ENABLE(keygen,
  198. [ --enable-keygen Enable key generation (default: disabled)],
  199. [ ENABLED_KEYGEN=$enableval ],
  200. [ ENABLED_KEYGEN=no ]
  201. )
  202. if test "$ENABLED_KEYGEN" = "yes"
  203. then
  204. CFLAGS="$CFLAGS -DCYASSL_KEY_GEN"
  205. fi
  206. # CERT GENERATION
  207. AC_ARG_ENABLE(certgen,
  208. [ --enable-certgen Enable cert generation (default: disabled)],
  209. [ ENABLED_CERTGEN=$enableval ],
  210. [ ENABLED_CERTGEN=no ]
  211. )
  212. if test "$ENABLED_CERTGEN" = "yes"
  213. then
  214. CFLAGS="$CFLAGS -DCYASSL_CERT_GEN"
  215. fi
  216. # HC128
  217. AC_ARG_ENABLE(hc128,
  218. [ --enable-hc128 Enable HC-128 (default: disabled)],
  219. [ ENABLED_HC128=$enableval ],
  220. [ ENABLED_HC128=no ]
  221. )
  222. if test "$ENABLED_HC128" = "no"
  223. then
  224. CFLAGS="$CFLAGS -DNO_HC128"
  225. fi
  226. AM_CONDITIONAL([BUILD_HC128], [test "x$ENABLED_HC128" = "xyes"])
  227. # PSK
  228. AC_ARG_ENABLE(psk,
  229. [ --enable-psk Enable PSK (default: disabled)],
  230. [ ENABLED_PSK=$enableval ],
  231. [ ENABLED_PSK=no ]
  232. )
  233. if test "$ENABLED_PSK" = "no"
  234. then
  235. CFLAGS="$CFLAGS -DNO_PSK"
  236. fi
  237. # ECC
  238. AC_ARG_ENABLE(ecc,
  239. [ --enable-ecc Enable ECC (default: disabled)],
  240. [ ENABLED_ECC=$enableval ],
  241. [ ENABLED_ECC=no ]
  242. )
  243. if test "$ENABLED_ECC" = "yes"
  244. then
  245. CFLAGS="$CFLAGS -DHAVE_ECC"
  246. fi
  247. AM_CONDITIONAL([BUILD_ECC], [test "x$ENABLED_ECC" = "xyes"])
  248. # NTRU
  249. ntruHome=`pwd`/NTRU_algorithm
  250. ntruInclude=$ntruHome/cryptolib
  251. ntruLib=$ntruHome
  252. AC_ARG_ENABLE(ntru,
  253. [ --enable-ntru Enable NTRU (default: disabled)],
  254. [ ENABLED_NTRU=$enableval ],
  255. [ ENABLED_NTRU=no ]
  256. )
  257. if test "$ENABLED_NTRU" = "yes"
  258. then
  259. CFLAGS="$CFLAGS -DHAVE_NTRU -I$ntruInclude"
  260. LDFLAGS="$LDFLAGS -L$ntruLib"
  261. LIBS="$LIBS -lntru_encrypt"
  262. fi
  263. AM_CONDITIONAL([BUILD_NTRU], [test "x$ENABLED_NTRU" = "xyes"])
  264. # LIBZ
  265. trylibzdir=""
  266. AC_ARG_WITH(libz,
  267. [ --with-libz=PATH PATH to libz install (default /usr/) ],
  268. [
  269. AC_MSG_CHECKING([for libz])
  270. CPPFLAGS="$CPPFLAGS -DHAVE_LIBZ"
  271. LIBS="$LIBS -lz"
  272. AC_TRY_LINK([#include <zlib.h>], [ deflateInit(NULL, 8); ],
  273. [ libz_linked=yes ], [ libz_linked=no ])
  274. if test "x$libz_linked" == "xno" ; then
  275. if test "x$withval" != "xno" ; then
  276. trylibzdir=$withval
  277. fi
  278. if test "x$withval" == "xyes" ; then
  279. trylibzdir="/usr"
  280. fi
  281. LDFLAGS="$LDFLAGS -L$trylibzdir/lib"
  282. CPPFLAGS="$CPPFLAGS -I$trylibzdir/include"
  283. AC_TRY_LINK([#include <zlib.h>], [ deflateInit(NULL, 8); ],
  284. [ libz_linked=yes ], [ libz_linked=no ])
  285. if test "x$libz_linked" == "xno" ; then
  286. AC_MSG_ERROR([libz isn't found.
  287. If it's already installed, specify its path using --with-libz=/dir/])
  288. fi
  289. AC_MSG_RESULT([yes])
  290. else
  291. AC_MSG_RESULT([yes])
  292. fi
  293. ]
  294. )
  295. # OPTIMIZE FLAGS
  296. if test "$GCC" = "yes"
  297. then
  298. CFLAGS="$CFLAGS -Wall -Wno-unused"
  299. if test "$ENABLED_DEBUG" = "no"
  300. then
  301. if test "$ENABLED_FASTMATH" = "yes"
  302. then
  303. CFLAGS="$CFLAGS $OPTIMIZE_FAST_CFLAGS"
  304. if test "$ENABLED_FASTHUGEMATH" = "yes"
  305. then
  306. CFLAGS="$CFLAGS $OPTIMIZE_HUGE_CFLAGS"
  307. fi
  308. else
  309. CFLAGS="$CFLAGS $OPTIMIZE_CFLAGS"
  310. fi
  311. fi
  312. fi
  313. ACX_PTHREAD
  314. LIBS="$PTHREAD_LIBS $LIBM $LIBS"
  315. CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
  316. LIB_SOCKET_NSL
  317. AC_SUBST(CFLAGS)
  318. AC_SUBST(LIBS)
  319. # FINAL
  320. AC_CONFIG_FILES(Makefile dnl
  321. ctaocrypt/Makefile dnl
  322. ctaocrypt/src/Makefile dnl
  323. ctaocrypt/test/Makefile dnl
  324. ctaocrypt/benchmark/Makefile dnl
  325. src/Makefile dnl
  326. examples/Makefile dnl
  327. examples/client/Makefile dnl
  328. examples/server/Makefile dnl
  329. examples/echoclient/Makefile dnl
  330. examples/echoserver/Makefile dnl
  331. testsuite/Makefile dnl
  332. sslSniffer/Makefile dnl
  333. sslSniffer/sslSnifferTest/Makefile)
  334. AC_OUTPUT