configure.ac 67 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005
  1. # This file is part of GNUnet.
  2. # (C) 2001--2019 GNUnet e.V.
  3. #
  4. # GNUnet is free software: you can redistribute it and/or modify it
  5. # under the terms of the GNU Affero General Public License as published
  6. # by the Free Software Foundation, either version 3 of the License,
  7. # or (at your option) any later version.
  8. #
  9. # GNUnet is distributed in the hope that it will be useful, but
  10. # WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. # Affero General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU Affero General Public License
  15. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. #
  17. # SPDX-License-Identifier: AGPL3.0-or-later
  18. #
  19. # Process this file with autoconf to produce a configure script.
  20. #
  21. #
  22. AC_PREREQ(2.61)
  23. # Checks for programs.
  24. AC_INIT([gnunet], [0.11.6], [bug-gnunet@gnu.org])
  25. AC_CONFIG_AUX_DIR([build-aux])
  26. # check for legacy option that is no longer supported (#5627) and fail hard
  27. AC_ARG_WITH(nssdir,
  28. [ --with-nssdir=DIR legacy switch, no longer supported, do not use],
  29. [AC_MSG_RESULT([$with_nssdir])
  30. AS_CASE([$with_nssdir],
  31. [no],[],
  32. [AC_MSG_ERROR([--with-nssdir is no longer supported])])
  33. ])
  34. AC_CANONICAL_TARGET
  35. AC_CANONICAL_HOST
  36. AC_CANONICAL_SYSTEM
  37. AM_INIT_AUTOMAKE
  38. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [AM_DEFAULT_VERBOSITY=1 AC_SUBST(AM_DEFAULT_VERBOSITY)])
  39. AC_CONFIG_HEADERS([gnunet_config.h])
  40. AH_TOP([#define _GNU_SOURCE 1])
  41. AC_CONFIG_MACRO_DIR([m4])
  42. AC_PROG_AWK
  43. AC_PROG_CC_C99
  44. AC_PROG_CPP
  45. AC_PROG_CXX
  46. AC_PROG_OBJC
  47. AC_PROG_INSTALL
  48. AC_PROG_LN_S
  49. AC_PROG_MAKE_SET
  50. AM_PROG_CC_C_O
  51. LT_INIT([disable-static dlopen win32-dll])
  52. AC_SUBST(MKDIR_P)
  53. # allow for different autotools
  54. AS_AUTOTOOLS_ALTERNATE
  55. # large file support
  56. AC_SYS_LARGEFILE
  57. AC_FUNC_FSEEKO
  58. CFLAGS="-Wall $CFLAGS"
  59. AC_MSG_CHECKING(whether cc can use -fno-strict-aliasing)
  60. # use '-fno-strict-aliasing', but only if the compiler can take it
  61. AS_IF([$CC -fno-strict-aliasing -S -o /dev/null -xc /dev/null >/dev/null 2>&1],
  62. [CFLAGS="-fno-strict-aliasing $CFLAGS"])
  63. # A helper which allows us to check cflags if compiler
  64. AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
  65. AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
  66. [ac_save_CFLAGS="$CFLAGS"
  67. CFLAGS="$CFLAGS $1 -Werror"
  68. AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return 0; }])],
  69. [eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
  70. [eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
  71. CFLAGS="$ac_save_CFLAGS"
  72. ])
  73. AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
  74. [$2], [$3])
  75. ])
  76. # CC_CHECK_CFLAG_APPEND(FLAG, [action-if-found], [action-if-not-found])
  77. # Check for CFLAG and appends them to CFLAGS if supported
  78. AC_DEFUN([CC_CHECK_CFLAG_APPEND], [
  79. AC_CACHE_CHECK([if $CC supports -Wno-$1 flag],
  80. AS_TR_SH([cc_cv_cflags_-W$1]),
  81. CC_CHECK_CFLAGS_SILENT([-W$1]) #gcc is stupid. It does not fail with the -W-no option for backwards compat but then shows the error "in case something goes wrong".
  82. )
  83. AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_-W$1])[ = xyes],
  84. [CFLAGS="$CFLAGS -Wno-$1"; $2], [$3])
  85. ])
  86. # We make heavy use of this, llvm/gcc and gcc-9 give warnings so disable.
  87. CC_CHECK_CFLAG_APPEND([address-of-packed-member])
  88. # Use Linux interface name unless the OS has a different preference
  89. DEFAULT_INTERFACE="\"eth0\""
  90. funcstocheck="getnameinfo gethostname gethostbyname gethostbyaddr getaddrinfo getaddrinfo_a"
  91. # Srcdir in a form that native compiler understands (i.e. DOS path on W32)
  92. native_srcdir=$srcdir
  93. OLD_LDFLAGS="$LDFLAGS"
  94. LDFLAGS="$LDFLAGS -Wl,--unresolved-symbols=report-all"
  95. # Check system type
  96. AS_CASE(["$host_os"],
  97. [*darwin* | *rhapsody* | *macosx*],[
  98. AC_DEFINE_UNQUOTED(DARWIN,1,[This is an Apple Darwin system])
  99. CPPFLAGS="-D_APPLE_C_SOURCE $CPPFLAGS"
  100. CFLAGS="-fno-common $CFLAGS"
  101. LDFLAGS="$OLD_LDFLAGS"
  102. AC_MSG_WARN([WARNING: The VPN application cannot be compiled on your OS])
  103. AC_CHECK_LIB(intl, gettext)
  104. build_target="darwin"
  105. DEFAULT_INTERFACE="\"en0\""
  106. LIBPREFIX=
  107. DLLDIR=lib
  108. UNIXONLY="#"
  109. ],
  110. [linux*],[
  111. AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
  112. build_target="linux"
  113. LIBPREFIX=
  114. DLLDIR=lib
  115. UNIXONLY="#"
  116. AC_PATH_XTRA
  117. ],
  118. [*freebsd*],[
  119. AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
  120. AC_DEFINE_UNQUOTED(FREEBSD,1,[This is a FreeBSD system])
  121. CFLAGS="-D_THREAD_SAFE $CFLAGS"
  122. build_target="freebsd"
  123. LIBPREFIX=
  124. DLLDIR=lib
  125. UNIXONLY="#"
  126. ],
  127. [*openbsd*],[
  128. AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
  129. AC_DEFINE_UNQUOTED(OPENBSD,1,[This is an OpenBSD system])
  130. LIBS=`echo $LIBS | sed -e "s/-ldl//"`
  131. build_target="openbsd"
  132. LIBPREFIX=
  133. DLLDIR=lib
  134. UNIXONLY="#"
  135. ],
  136. [*netbsd*],[
  137. AC_DEFINE_UNQUOTED(SOMEBSD,1,[This is a BSD system])
  138. AC_DEFINE_UNQUOTED(NETBSD,1,[This is a NetBSD system])
  139. build_target="netbsd"
  140. LIBPREFIX=
  141. DLLDIR=lib
  142. UNIXONLY="#"
  143. ],
  144. [*solaris*],[
  145. AC_DEFINE_UNQUOTED(SOLARIS,1,[This is a Solaris system])
  146. AC_DEFINE_UNQUOTED(_REENTRANT,1,[Need with solaris or errno doesnt work])
  147. AC_CHECK_LIB(resolv, res_init)
  148. AC_CHECK_LIB(rt, nanosleep)
  149. build_target="solaris"
  150. LIBPREFIX=
  151. DLLDIR=lib
  152. UNIXONLY="#"
  153. ],
  154. [*arm-linux*],[
  155. AC_DEFINE_UNQUOTED(LINUX,1,[This is a Linux kernel])
  156. CFLAGS="-D_REENTRANT -fPIC -pipe $CFLAGS"
  157. build_target="linux"
  158. LIBPREFIX=
  159. DLLDIR=lib
  160. UNIXONLY="#"
  161. ],
  162. [gnu*],[
  163. AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
  164. build_target="gnu"
  165. UNIXONLY="#"
  166. ],
  167. [
  168. AC_MSG_RESULT(Unrecognised OS $host_os)
  169. AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
  170. UNIXONLY=""
  171. ])
  172. AC_DEFINE_UNQUOTED([GNUNET_DEFAULT_INTERFACE], $DEFAULT_INTERFACE, [This should be the default choice for the name of the first network interface])
  173. AC_SUBST(DEFAULT_INTERFACE)
  174. # Disable TCP-based IPC on systems that support UNIX domain
  175. # sockets in default configuratin:
  176. AC_SUBST(UNIXONLY)
  177. AC_MSG_CHECKING([for build target])
  178. AM_CONDITIONAL(DARWIN, test "$build_target" = "darwin")
  179. AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
  180. AM_CONDITIONAL(XNETBSD, test "$build_target" = "netbsd")
  181. AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
  182. AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
  183. AM_CONDITIONAL(LINUX, test "$build_target" = "linux")
  184. AM_CONDITIONAL(GNU, test "$build_target" = "gnu")
  185. AC_MSG_RESULT([$build_target])
  186. AC_SUBST(build_target)
  187. AM_CONDITIONAL([am__fastdepOBJC], false)
  188. AC_UNALIGNED_64_ACCESS
  189. # some other checks for standard libs
  190. AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
  191. AC_SEARCH_LIBS([memrchr], [],
  192. AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
  193. AC_SEARCH_LIBS([memset_s], [],
  194. AC_DEFINE(HAVE_MEMSET_S,1,[memset_s supported]), [])
  195. AC_SEARCH_LIBS([memset_s], [],
  196. AC_DEFINE(HAVE_EXPLICIT_BZERO,1,[explicit_bzero supported]), [])
  197. AC_CHECK_LIB(socket, socket)
  198. AC_CHECK_LIB(m, log)
  199. AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
  200. AC_CHECK_PROG(VAR_GETOPT_BINARY, getopt, true, false)
  201. AM_CONDITIONAL(HAVE_GETOPT_BINARY, $VAR_GETOPT_BINARY)
  202. AC_CHECK_PROG(VAR_SSH_BINARY, ssh, true, false)
  203. AM_CONDITIONAL(HAVE_SSH_BINARY, $VAR_SSH_BINARY)
  204. AM_CONDITIONAL(HAVE_SSH_KEY, ssh -D 12345 -o "BatchMode yes" -o "UserKnownHostsFile /tmp/gnunet_test_cosks_ssh_garbage" -o "StrictHostKeyChecking no" 127.0.0.1 echo -n)
  205. rm -f /tmp/gnunet_test_cosks_ssh_garbage
  206. # autotools' m4 for python has no maximum version!
  207. # python3.4 - python3.7 for tests
  208. m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python3.4 python3.5 python3.6 python3.7 python])
  209. AM_PATH_PYTHON([3.4],, [:])
  210. AC_SUBST([PYTHON])
  211. AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
  212. # perl
  213. AC_PATH_PROG( PERL, perl, ,
  214. $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
  215. AC_SUBST([PERL])
  216. # iptables is a soft requirement to run tests
  217. AC_PATH_TARGET_TOOL(VAR_IPTABLES_BINARY, iptables, false)
  218. AS_IF([test x"$VAR_IPTABLES_BINARY" = x"false"],
  219. [AS_IF([test -x "/sbin/iptables"],
  220. [VAR_IPTABLES_BINARY="/sbin/iptables"],
  221. [AS_IF([test -x "/usr/sbin/iptables"],
  222. [VAR_IPTABLES_BINARY="/usr/sbin/iptables"])])])
  223. AS_IF([test x"$VAR_IPTABLES_BINARY" != x"false"],
  224. [AC_DEFINE_UNQUOTED([IPTABLES], "$VAR_IPTABLES_BINARY", [Path to iptables])],
  225. [AC_MSG_WARN([warning: 'iptables' not found.])])
  226. # ip6tables is a soft requirement for some features
  227. AC_PATH_TARGET_TOOL(VAR_IP6TABLES_BINARY, ip6tables, false)
  228. AS_IF([test x"$VAR_IP6TABLES_BINARY" = x"false"],
  229. [AS_IF([test -x "/sbin/ip6tables"],
  230. [VAR_IP6TABLES_BINARY="/sbin/ip6tables"],
  231. [AS_IF([test -x "/usr/sbin/ip6tables"],
  232. [VAR_IP6TABLES_BINARY="/usr/sbin/ip6tables"])])])
  233. AS_IF([test x"$VAR_IP6TABLES_BINARY" != x"false"],
  234. [AC_DEFINE_UNQUOTED([IP6TABLES], "$VAR_IP6TABLES_BINARY", [Path to ip6tables])],
  235. [AC_MSG_WARN([warning: 'ip6tables' not found.])])
  236. # ip is a soft requirement for some features
  237. AC_PATH_TARGET_TOOL(VAR_IP_BINARY, ip, false)
  238. AS_IF([test x"$VAR_IP_BINARY" = x"false"],
  239. [AS_IF([test -x "/sbin/ip"],
  240. [VAR_IP_BINARY="/sbin/ip"],
  241. [AS_IF([test -x "/usr/sbin/ip"],
  242. [VAR_IP_BINARY="/usr/sbin/ip"])])])
  243. AS_IF([test x"$VAR_IP_BINARY" != x"false"],
  244. [AC_DEFINE_UNQUOTED([PATH_TO_IP], "$VAR_IP_BINARY", [Path to ip])],
  245. [AC_MSG_WARN([warning: 'ip' not found.])])
  246. # locate 'ifconfig'
  247. AC_PATH_TARGET_TOOL(VAR_IFCONFIG_BINARY, ifconfig, false)
  248. AC_CHECK_PROG(VAR_IFCONFIG_BINARY, ifconfig, true, false)
  249. AS_IF([test x"$VAR_IFCONFIG_BINARY" = x"false"],
  250. [AS_IF([test -x "/sbin/ifconfig"],
  251. [VAR_IFCONFIG_BINARY="/sbin/ifconfig"],
  252. [AS_IF([test -x "/usr/sbin/ifconfig"],
  253. [VAR_IFCONFIG_BINARY="/usr/sbin/ifconfig"])])])
  254. AS_IF([test x"$VAR_IFCONFIG_BINARY" != x"false"],
  255. [AC_DEFINE_UNQUOTED([IFCONFIG], "$VAR_IFCONFIG_BINARY", [Path to ifconfig])],
  256. [AC_MSG_WARN(['ifconfig' not found.])])
  257. AC_PATH_TARGET_TOOL(VAR_SYSCTL_BINARY, sysctl, false)
  258. AC_CHECK_PROG(VAR_SYSCTL_BINARY, sysctl, true, false)
  259. AS_IF([test x"$VAR_SYSCTL_BINARY" = x"false"],
  260. [AS_IF([test -x "/sbin/sysctl"],
  261. [VAR_SYSCTL_BINARY="/sbin/sysctl"],
  262. [AS_IF([test -x "/usr/sbin/sysctl"],
  263. [VAR_SYSCTL_BINARY="/usr/sbin/sysctl"])])])
  264. AS_IF([test x"$VAR_SYSCTL_BINARY" != x"false"],
  265. [AC_DEFINE_UNQUOTED([SYSCTL], "$VAR_SYSCTL_BINARY", [Path to sysctl])],
  266. [AC_MSG_WARN(['sysctl' not found.])])
  267. # miniupnpc / upnpc binary is a soft runtime requirement
  268. AC_PATH_TARGET_TOOL(VAR_UPNPC_BINARY, upnpc, false)
  269. AS_IF([test x"$VAR_UPNPC_BINARY" != x"false"],
  270. [AC_DEFINE_UNQUOTED([UPNPC], "$VAR_UPNPC_BINARY", [Path to upnpc binary])],
  271. [AC_MSG_WARN([warning: 'upnpc' binary not found.])])
  272. AC_CHECK_MEMBER(struct tm.tm_gmtoff,
  273. [AC_DEFINE(HAVE_TM_GMTOFF, 1,
  274. [Define if struct tm has the tm_gmtoff member.])],
  275. ,
  276. [#include <time.h>])
  277. # 'save' libs; only those libs found so far will be
  278. # linked against _everywhere_. For the others, we
  279. # will be more selective!
  280. SAVE_LIBS=$LIBS
  281. have_addrinfo_a=0
  282. AC_CHECK_LIB(anl,
  283. getaddrinfo_a,
  284. [have_addrinfo_a=1 AC_DEFINE(HAVE_GETADDRINFO_A,
  285. 1,
  286. [getaddrinfo_a supported])])
  287. AM_CONDITIONAL(HAVE_GETADDRINFO_A,
  288. [test "$have_addrinfo_a" = 1])
  289. # libgcrypt
  290. gcrypt=0
  291. NEED_LIBGCRYPT_API=1
  292. NEED_LIBGCRYPT_VERSION=1.6.0
  293. AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION", gcrypt=1)
  294. AC_CHECK_DECLS([gcry_mpi_set_opaque_copy], [], [], [[#include <gcrypt.h>]])
  295. AS_IF([test $gcrypt = 0],
  296. [
  297. AC_MSG_ERROR([[
  298. ***
  299. *** You need libgcrypt to build this program.
  300. ** This library is for example available at
  301. *** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
  302. *** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
  303. *** is required.)
  304. ***]])
  305. ])
  306. AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], "$NEED_LIBGCRYPT_VERSION", [required libgcrypt version])
  307. AC_CHECK_DECLS([struct in6_ifreq], [], [], [[#include <linux/if_tun.h>]])
  308. # should the build process be building the documentation?
  309. AC_MSG_CHECKING(whether to build documentation)
  310. AC_ARG_ENABLE([documentation],
  311. [AS_HELP_STRING([--disable-documentation],
  312. [do not build the documentation])],
  313. [documentation=${enableval}],
  314. [documentation=yes])
  315. AC_MSG_RESULT($documentation)
  316. AS_IF([test "x$documentation" = "xyes"],
  317. [AM_CONDITIONAL([DOCUMENTATION],
  318. true)
  319. AC_DEFINE([DOCUMENTATION],
  320. [1],
  321. [Building the documentation])],
  322. [AM_CONDITIONAL([DOCUMENTATION],
  323. false)
  324. AC_DEFINE([DOCUMENTATION],
  325. [0],
  326. [Not building the documentation])])
  327. # COMMENT: Check wether to transpile texinfo to mdoc.
  328. # COMMENT: This is TRUE when --enable-texi2mdoc-generation
  329. # COMMENT: but ERRORS when texi2mdoc binary is missing in your $PATH
  330. # COMMENT: and makes the configure fail if it is missing.
  331. # COMMENT: Consequential the DEFINE and CONDITIONAL are set to true.
  332. # COMMENT: This is FALSE when --disable-texi2mdoc-generation was set
  333. # COMMENT: or nothing was set (this is the default).
  334. # COMMENT: There are 2 nested AS_IFs because we need to catch the
  335. # COMMENT: potential non-existence of the texi2mdoc binary.
  336. # COMMENT: Default return value / setting: no
  337. AC_MSG_CHECKING(wether to include generated texi2mdoc output in installation)
  338. AC_ARG_ENABLE([texi2mdoc-generation],
  339. [AS_HELP_STRING([--enable-texi2mdoc-generation],
  340. [include generated texi2mdoc output in installation])],
  341. [texi2mdoc_generation=${enableval}],
  342. [texi2mdoc_generation=no])
  343. AC_MSG_RESULT($texi2mdoc_generation)
  344. AS_IF([test "x$texi2mdoc_generation" = "xyes"],
  345. [AS_IF([test "$texi2mdoc" = 0],
  346. [AC_MSG_WARN([ERROR: transpiled mdoc output requires texi2mdoc.])
  347. AC_MSG_WARN([ERROR: texi2mdoc can be obtained via your Operating System])
  348. AC_MSG_WARN([ERROR: package manager or from https://mandoc.bsd.lv/texi2mdoc/])],
  349. [AM_CONDITIONAL([TEXI2MDOC_GENERATION],true)
  350. AC_DEFINE([TEXI2MDOC_GENERATION],
  351. [1],
  352. [Building section 7 mdoc output])])],
  353. [AM_CONDITIONAL([TEXI2MDOC_GENERATION],
  354. false)
  355. AC_DEFINE([TEXI2MDOC_GENERATION],
  356. [0],
  357. [Not building section 7 mdoc output])])
  358. # should the build process be building only the documentation?
  359. AC_MSG_CHECKING(whether to build only documentation)
  360. AC_ARG_ENABLE([documentation-only],
  361. [AS_HELP_STRING([--enable-documentation-only], [build only the documentation])],
  362. [documentation_only=${enableval}],
  363. [documentation_only=no])
  364. AC_MSG_RESULT($documentation_only)
  365. AS_IF([test "x$documentation_only" = "xyes"],
  366. [
  367. AM_CONDITIONAL([DOCUMENTATION_ONLY],true)
  368. AC_DEFINE([DOCUMENTATION_ONLY],[1],[Building only the documentation])
  369. ],[
  370. AM_CONDITIONAL([DOCUMENTATION_ONLY],false)
  371. # TODO: Double negation might be a bit hard to parse for some
  372. # TODO: people reading the output.
  373. AC_DEFINE([DOCUMENTATION_ONLY],[0],[Not building only the documentation])
  374. ])
  375. # should the build process be including the manpages? (default: yes)
  376. AC_MSG_CHECKING(whether to include man pages)
  377. AC_ARG_ENABLE([include-manpages],
  378. [AS_HELP_STRING([--disable-include-manpages], [Do not include the man pages in build and installation])],
  379. [include_manpages=${enableval}],
  380. [include_manpages=yes])
  381. AC_MSG_RESULT($include_manpages)
  382. AS_IF([test "x$include_manpages" = "xyes"],
  383. [
  384. AM_CONDITIONAL([INCLUDE_MANPAGES],true)
  385. AC_DEFINE([INCLUDE_MANPAGES],[1],[Including the man pages in the build and installation])
  386. ],[
  387. AM_CONDITIONAL([INCLUDE_MANPAGES],false)
  388. AC_DEFINE([INCLUDE_MANPAGES],[0],[Not including the man pages in the build and installation])
  389. ])
  390. # Do we have texinfo4? If yes, it is used to set texinfo4 specific switches
  391. # (not syntax!) to the commandline tools which generate the html. If not,
  392. # texinfo5 switches are used. This comes with no version checks, is
  393. # enabled only at distributors action (ie defaults to "no").
  394. # Mantis #3914 for more details (https://bugs.gnunet.org/view.php?id=3914)
  395. AC_MSG_CHECKING(whether to enable texinfo4 switches)
  396. AC_ARG_ENABLE([texinfo4],
  397. [AS_HELP_STRING([--enable-texinfo4], [Use texinfo version 4 specific switches])],
  398. [activate_texinfo4=${enableval}],
  399. [activate_texinfo4=no])
  400. AC_MSG_RESULT($activate_texinfo4)
  401. AS_IF([test "x$activate_texinfo4" = "xyes"],
  402. [
  403. AM_CONDITIONAL([ACTIVATE_TEXINFO4],true)
  404. AC_DEFINE([ACTIVATE_TEXINFO4],[1],[Using texinfo version 4 specific switches])
  405. ],[
  406. AM_CONDITIONAL([ACTIVATE_TEXINFO4],false)
  407. AC_DEFINE([INCLUDE_MANPAGES],[0],[Using texinfo version 5 or later switches])
  408. ])
  409. # Adam shostack suggests the following for Windows:
  410. # -D_FORTIFY_SOURCE=2 -fstack-protector-all
  411. AC_ARG_ENABLE(gcc-hardening,
  412. AS_HELP_STRING(--enable-gcc-hardening, enable compiler security checks),
  413. [AS_IF([test x$enableval = xyes],[
  414. CFLAGS="$CFLAGS -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all"
  415. CFLAGS="$CFLAGS -fwrapv -fPIE -Wstack-protector"
  416. CFLAGS="$CFLAGS --param ssp-buffer-size=1"
  417. LDFLAGS="$LDFLAGS -pie"
  418. ])])
  419. # Linker hardening options
  420. # Currently these options are ELF specific - you can't use this with MacOSX
  421. AC_ARG_ENABLE(linker-hardening,
  422. AS_HELP_STRING(--enable-linker-hardening, enable linker security fixups),
  423. [AS_IF([test x$enableval = xyes],
  424. [LDFLAGS="$LDFLAGS -z relro -z now"])])
  425. AC_ARG_ENABLE(sanitizer,
  426. AS_HELP_STRING(--enable-sanitizer, enable Address Sanitizer and Undefined Behavior Sanitizer),
  427. [AS_IF([test x$enableval = xyes],[
  428. LDFLAGS="$CFLAGS -fsanitize=address,undefined -fno-omit-frame-pointer"
  429. ])])
  430. extra_logging=GNUNET_NO
  431. AC_ARG_ENABLE([logging],
  432. AS_HELP_STRING([--enable-logging@<:@=value@:>@],[Enable logging calls. Possible values: yes,no,verbose,veryverbose ('yes' is the default)]),
  433. [AS_IF([test "x$enableval" = "xyes"], [],
  434. [test "x$enableval" = "xno"], [AC_DEFINE([GNUNET_CULL_LOGGING],[],[Define to cull all logging calls])],
  435. [test "x$enableval" = "xverbose"], [extra_logging=GNUNET_YES]
  436. [test "x$enableval" = "xveryverbose"], [extra_logging=\(GNUNET_YES+1\)])
  437. ], [])
  438. AC_DEFINE_UNQUOTED([GNUNET_EXTRA_LOGGING],[$extra_logging],[1 if extra logging is enabled, 2 for very verbose extra logging, 0 otherwise])
  439. # should memory poisoning be enabled?
  440. AC_MSG_CHECKING(whether to poison freed memory)
  441. AC_ARG_ENABLE([poisoning],
  442. [AS_HELP_STRING([--enable-poisoning], [enable poisoning of freed memory (good for debugging)])],
  443. [enable_poisoning=${enableval}],
  444. [
  445. AS_IF([test "x$extra_logging" != "xGNUNET_NO"],
  446. [enable_poisoning="defaults to yes (extra logging is enabled)"],
  447. [enable_poisoning=no])
  448. ])
  449. AC_MSG_RESULT($enable_poisoning)
  450. AS_IF([test ! "x$enable_poisoning" = "xno"],
  451. [enable_poisoning=1],
  452. [enable_poisoning=0])
  453. AC_DEFINE_UNQUOTED([ENABLE_POISONING],[$enable_poisoning],[1 if freed memory should be poisoned, 0 otherwise])
  454. AS_IF([test $build = $target],
  455. [
  456. AC_MSG_CHECKING([for working HMAC])
  457. AC_LANG_PUSH(C)
  458. LIBS="$LIBS $LIBGCRYPT_LIBS"
  459. CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
  460. AC_RUN_IFELSE(
  461. [AC_LANG_PROGRAM([#include <gcrypt.h>
  462. #include <stdio.h>], [[
  463. gcry_md_hd_t mac;
  464. unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3, 0x93, 0xa7, 0x72,
  465. 0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81, 0xbe,
  466. 0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
  467. unsigned char key[] = { 0xfc, 0x62, 0x76, 0x35 };
  468. unsigned char result[] = {0xa2, 0xb, 0x1, 0xd9, 0xc0, 0x8b, 0x5a, 0x12, 0x80,
  469. 0xd5, 0x50, 0x12, 0x8e, 0xd0, 0x5b, 0xb6, 0x5c, 0x87, 0x24, 0xe2, 0xd0,
  470. 0xd2, 0xaf, 0x63, 0xae, 0xd1, 0xd6, 0x64, 0x14, 0xe3, 0x6e, 0x61, 0x5b,
  471. 0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d, 0xeb,
  472. 0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29, 0x3b,
  473. 0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
  474. if (!gcry_check_version (GCRYPT_VERSION))
  475. {
  476. fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version (NULL), GCRYPT_VERSION);
  477. return 1;
  478. }
  479. gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
  480. gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
  481. if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) != GPG_ERR_NO_ERROR)
  482. {
  483. fprintf (stderr, "gcry_md_open error\n");
  484. return 2;
  485. }
  486. gcry_md_setkey (mac, key, sizeof (key));
  487. gcry_md_write (mac, data, sizeof (data));
  488. if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen (gcry_md_get_algo (mac))) != 0)
  489. {
  490. fprintf (stderr, "memcmp error\n");
  491. return 3;
  492. }
  493. gcry_md_close (mac);
  494. return 0;
  495. ]])],
  496. [AC_MSG_RESULT([yes])],
  497. [
  498. RESULT=$?
  499. if test $RESULT = 3
  500. then
  501. AC_MSG_FAILURE([HMAC test vector does not match. This is a known problem with libgcrypt 1.2.2 on Windows and fixed in 1.4.6.])
  502. fi
  503. if test $RESULT = 2
  504. then
  505. AC_MSG_FAILURE([HMAC test failed])
  506. fi
  507. if test $RESULT = 1
  508. then
  509. AC_MSG_FAILURE([libgcrypt header version does not match library version])
  510. fi
  511. ],
  512. [AC_MSG_RESULT([cross compiling, test skipped])])
  513. AC_LANG_POP(C)
  514. ]) # $build = $target
  515. # check for bluetooth library
  516. bluetooth=0
  517. CHECK_LIBHEADER(BLUETOOTH, bluetooth, ba2str, bluetooth/bluetooth.h,bluetooth=1,)
  518. AM_CONDITIONAL(HAVE_LIBBLUETOOTH, [test "$bluetooth" = 1])
  519. AS_IF([test "$bluetooth" = 1],
  520. [AC_DEFINE([HAVE_LIBBLUETOOTH],[1],[Have bluetooth library])],
  521. [AC_DEFINE([HAVE_LIBBLUETOOTH],[0],[Lacking bluetooth library])])
  522. # check for zbar library
  523. zbar=0
  524. AC_MSG_CHECKING(for libzbar)
  525. AC_ARG_WITH(zbar,
  526. [ --with-zbar=PREFIX (base of libzbar installation)],
  527. [AC_MSG_RESULT([$with_zbar])
  528. AS_CASE([$with_zbar],
  529. [no],[],
  530. [yes],[CHECK_LIBHEADER(ZBAR, zbar, zbar_processor_create, zbar.h,zbar=1,,)],
  531. [
  532. LDFLAGS="-L$with_zbar/lib $LDFLAGS"
  533. CPPFLAGS="-I$with_zbar/include $CPPFLAGS"
  534. AC_CHECK_HEADERS(zbar.h,
  535. AC_CHECK_LIB([zbar], [zbar_processor_create],
  536. EXT_LIB_PATH="-L$with_zbar/lib $EXT_LIB_PATH"
  537. zbar=1))
  538. ])
  539. ],
  540. [AC_MSG_RESULT([--with-zbar not specified])
  541. CHECK_LIBHEADER(ZBAR, zbar, zbar_processor_create, zbar.h,zbar=1,,)])
  542. AM_CONDITIONAL(HAVE_ZBAR, [test "$zbar" = 1])
  543. AS_IF([test "x$zbar" = x1],
  544. [AC_DEFINE([HAVE_ZBAR],[1],[Have zbar library])],
  545. [AC_DEFINE([HAVE_ZBAR],[0],[Lacking zbar library])])
  546. # check for jansson library
  547. jansson=0
  548. AC_MSG_CHECKING(for libjansson)
  549. AC_ARG_WITH(jansson,
  550. [ --with-jansson=PREFIX (base of libjansson installation)],
  551. [AC_MSG_RESULT([$with_jansson])
  552. AS_CASE([$with_jansson],
  553. [no],[],
  554. [yes],[
  555. CHECK_LIBHEADER(JANSSON, jansson, json_loads, jansson.h,jansson=1,)
  556. ],[
  557. LDFLAGS="-L$with_jansson/lib $LDFLAGS"
  558. CPPFLAGS="-I$with_jansson/include $CPPFLAGS"
  559. AC_CHECK_HEADERS(jansson.h,
  560. AC_CHECK_LIB([jansson], [json_loads],
  561. EXT_LIB_PATH="-L$with_jansson/lib $EXT_LIB_PATH"
  562. jansson=1))
  563. ])
  564. ],
  565. [AC_MSG_RESULT([--with-jansson not specified])
  566. CHECK_LIBHEADER(JANSSON, jansson, json_loads, jansson.h,jansson=1,)])
  567. AM_CONDITIONAL(HAVE_JANSSON, [test "$jansson" = 1])
  568. AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
  569. AS_IF([test "x$jansson" = x1],
  570. [AC_DEFINE([HAVE_JANSSON],[1],[Have jansson library])],
  571. [AC_DEFINE([HAVE_JANSSON],[0],[Lacking jansson library])])
  572. # check for libpulse(audio) library
  573. pulse=0
  574. libpulse_msg="no"
  575. CHECK_LIBHEADER(LIBPULSE, pulse, pa_stream_peek, pulse/simple.h,pulse=1,)
  576. AS_IF([test "$pulse" = 1],
  577. [AC_DEFINE([HAVE_PULSE],[1],[Have libpulse(audio) library])
  578. libpulse_msg="yes"])
  579. # check for libopus(audio) library
  580. opus=0
  581. libopus_msg="no"
  582. CHECK_LIBHEADER(LIBOPUS,
  583. opus,
  584. opus_decode_float,
  585. opus/opus.h,
  586. AC_CHECK_DECL([OPUS_SET_GAIN],[opus=1],[],[[#include <opus/opus.h>]]))
  587. AS_IF([test "x$opus" = x1],
  588. [AC_DEFINE([HAVE_OPUS],[1],[Have libopus library])
  589. libopus_msg="yes"])
  590. # libogg
  591. AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
  592. [AC_CHECK_HEADERS([ogg/ogg.h],
  593. AM_CONDITIONAL(HAVE_OGG, true)
  594. ogg=1
  595. AC_DEFINE(HAVE_OGG,1,[Have ogg]),
  596. AM_CONDITIONAL(HAVE_OGG, false)
  597. ogg=0
  598. AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
  599. AM_CONDITIONAL(HAVE_OGG, false)
  600. ogg=0)
  601. PKG_CHECK_MODULES([GLIB],
  602. [glib-2.0],
  603. [# check for pbc library
  604. pbc=0
  605. AC_CHECK_HEADER([pbc/pbc.h],pbc=1)
  606. AC_CHECK_HEADER([gabe.h],abe=1)
  607. AM_CONDITIONAL(HAVE_PBC, [test "x$pbc" = x1])
  608. AM_CONDITIONAL(HAVE_ABE, [test "x$abe" = x1])
  609. AS_IF([test "x$pbc" = x1],
  610. [AC_DEFINE([HAVE_PBC],[1],[Have pbc library])],
  611. [AC_DEFINE([HAVE_PBC],[0],[Lacking pbc library])])
  612. AS_IF([test "x$abe" = x1],
  613. [AC_DEFINE([HAVE_ABE],[1],[Have ABE library])],
  614. [AC_DEFINE([HAVE_ABE],[0],[Lacking ABE library])])],
  615. [# glib-2 not found
  616. AM_CONDITIONAL(HAVE_PBC, [false])
  617. AM_CONDITIONAL(HAVE_ABE, [false])
  618. AC_DEFINE([HAVE_PBC],[0],[Lacking glib library])])
  619. gst=0
  620. gstreamer_msg="no"
  621. PKG_CHECK_MODULES(
  622. [GST],
  623. [glib-2.0 gobject-2.0 gstreamer-1.0 gstreamer-app-1.0 gstreamer-audio-1.0],
  624. [gst=1
  625. gstreamer_msg="yes"],
  626. [gst=0])
  627. # Pulse Audio
  628. AS_IF([test "x$pulse" != "x1" -o "x$opus" != "x1" -o "x$ogg" != "x1"],[
  629. AS_IF([test "x$gst" != "x1"],[
  630. conversation_backend=none
  631. AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
  632. AM_CONDITIONAL(BUILD_GST_HELPERS, false)
  633. AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
  634. ],[
  635. conversation_backend=gst
  636. AM_CONDITIONAL(BUILD_PULSE_HELPERS, false)
  637. AM_CONDITIONAL(BUILD_GST_HELPERS, true)
  638. AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
  639. ])
  640. ],[
  641. conversation_backend=pulse
  642. AM_CONDITIONAL(BUILD_PULSE_HELPERS, true)
  643. AM_CONDITIONAL(BUILD_GST_HELPERS, false)
  644. AM_CONDITIONAL(BUILD_EXPERIMENTAL_HELPERS, false)
  645. ])
  646. AS_IF([test "x$conversation_backend" = "xnone"],
  647. AM_CONDITIONAL(BUILD_CONVERSATION, false),
  648. AM_CONDITIONAL(BUILD_CONVERSATION, true))
  649. # libgnurl
  650. LIBGNURL_CHECK_CONFIG(,7.34.0,gnurl=1,gnurl=0)
  651. SAVE_CPPFLAGS=$CPPFLAGS
  652. CPPFLAGS="$LIBGNURL_CPPFLAGS $LIBCURL_CPPFLAGS $CPPFLAGS"
  653. LIBS="$LIBGNURL $LIBCURL $LIBS"
  654. # libcurl-gnutls
  655. LIBCURL_CHECK_CONFIG(,7.34.0,[curl=true],[curl=false])
  656. AS_IF([test "x$curl" = xtrue],[
  657. AC_CHECK_HEADER([curl/curl.h],
  658. AC_CHECK_DECLS(CURLINFO_TLS_SESSION,[curl=true],[curl=false],[[#include <curl/curl.h>]]),
  659. [curl=false])
  660. # need libcurl-gnutls.so, everything else is not acceptable
  661. AC_CHECK_LIB([curl-gnutls],[curl_easy_getinfo],,[curl=false])
  662. # cURL must support CURLINFO_TLS_SESSION, version >= 7.34
  663. ])
  664. # libcurl and libgnurl should be mutually exclusive
  665. AS_IF([test "$gnurl" = 1],
  666. [AM_CONDITIONAL(HAVE_LIBGNURL, true)
  667. AC_DEFINE([HAVE_LIBGNURL],[1],[Have libgnurl])
  668. AM_CONDITIONAL(HAVE_LIBCURL, false)
  669. AC_DEFINE([HAVE_LIBCURL],[0],[Lacking libcurl])],
  670. [AS_IF([test "$curl" = true],
  671. [AM_CONDITIONAL(HAVE_LIBGNURL, false)
  672. AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
  673. AM_CONDITIONAL(HAVE_LIBCURL, true)
  674. AC_DEFINE([HAVE_LIBCURL],[1],[Have libcurl])],
  675. [AC_MSG_WARN([ERROR: GNUnet requires libcurl-gnutls or gnurl >= 7.34])
  676. AM_CONDITIONAL(HAVE_LIBGNURL, false)
  677. AC_DEFINE([HAVE_LIBGNURL],[0],[Lacking libgnurl])
  678. AM_CONDITIONAL(HAVE_LIBCURL, false)
  679. AC_DEFINE([HAVE_LIBCURL],[0],[Lacking libcurl])])])
  680. AC_SEARCH_LIBS(__atomic_load_8, atomic, [have_libatomic=1 AC_DEFINE(HAVE_LIBATOMIC,1,[external libatomic])])
  681. AM_CONDITIONAL(HAVE_LIBATOMIC, [test "$have_libatomic" = 1])
  682. # restore LIBS & CPPFLAGS
  683. LIBS=$SAVE_LIBS
  684. CPPFLAGS=$SAVE_CPPFLAGS
  685. AC_CHECK_HEADERS([glpk.h],[glpk=true],[glpk=false])
  686. # GLPK must support glpk_init_env, version >= 4.43
  687. AC_CHECK_LIB([glpk],[glp_init_env],,[glpk=false])
  688. # GLPK must support atm MLP presolving, version >= 4.32
  689. AC_CHECK_MEMBERS(glp_iocp.presolve,,[glpk=false],[[#include <glpk.h>]])
  690. AS_IF([test "x$glpk" = xfalse],
  691. [
  692. AM_CONDITIONAL(HAVE_LIBGLPK, false)
  693. AC_MSG_WARN([ERROR: GNUnet requires GLPK >= 4.32])
  694. ],[
  695. AM_CONDITIONAL(HAVE_LIBGLPK, true)
  696. AC_DEFINE([HAVE_LIBGLPK],[1],[Have GLPK])
  697. ])
  698. AC_CHECK_HEADERS([nss.h],[nss=true],[nss=false])
  699. AS_IF([test x$nss = xfalse],
  700. [
  701. AM_CONDITIONAL(HAVE_GLIBCNSS, false)
  702. AC_MSG_WARN([No GNU libc nss header, will not build NSS plugin])
  703. ],[
  704. NSS_INCLUDES="
  705. #include <nss.h>
  706. "
  707. AC_CHECK_DECL([NSS_STATUS_UNAVAIL],
  708. [AM_CONDITIONAL(HAVE_GLIBCNSS, true)],
  709. [AM_CONDITIONAL(HAVE_GLIBCNSS, false)
  710. AC_MSG_WARN([No nss header fails to define NSS_STATUS_UNAVAIl, will not build NSS plugin])],
  711. [$NSS_INCLUDES])
  712. ])
  713. # test for kvm and kstat (for CPU stats under BSD/Solaris)
  714. AC_CHECK_LIB([kvm],[kvm_open])
  715. AC_CHECK_LIB([kstat],[kstat_open])
  716. # should the build process be restricted to the code required
  717. # for GNU Taler wallets?
  718. AC_MSG_CHECKING(whether to compile GNU Taler Wallet library ONLY)
  719. AC_ARG_ENABLE([taler-wallet],
  720. [AS_HELP_STRING([--enable-taler-wallet], [only compile for Taler wallet])],
  721. [taler_only=${enableval}],
  722. [taler_only=no])
  723. AC_MSG_RESULT($taler_only)
  724. AS_IF([test "x$taler_only" = "xyes"],
  725. [
  726. AM_CONDITIONAL([TALER_ONLY],true)
  727. AC_DEFINE([TALER_WALLET_ONLY],[1],[Compiling for Taler wallet])
  728. ],[
  729. AM_CONDITIONAL([TALER_ONLY],false)
  730. AC_DEFINE([TALER_WALLET_ONLY],[0],[Canonical compilation])
  731. ])
  732. # test for libextractor
  733. extractor=0
  734. AC_MSG_CHECKING(for libextractor)
  735. AC_ARG_WITH(extractor,
  736. [ --with-extractor=PREFIX (base of libextractor installation)],
  737. [AC_MSG_RESULT([$with_extractor])
  738. AS_CASE([$with_extractor],
  739. [no],[],
  740. [yes],[
  741. AC_CHECK_HEADERS([extractor.h],
  742. AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
  743. extractor=1))
  744. ],[
  745. LDFLAGS="-L$with_extractor/lib $LDFLAGS"
  746. CPPFLAGS="-I$with_extractor/include $CPPFLAGS"
  747. AC_CHECK_HEADERS([extractor.h],
  748. AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
  749. EXT_LIB_PATH="-L$with_extractor/lib $EXT_LIB_PATH"
  750. extractor=1))
  751. ])
  752. ],
  753. [AC_MSG_RESULT([--with-extractor not specified])
  754. AC_CHECK_HEADERS([extractor.h],
  755. AC_CHECK_LIB([extractor], [EXTRACTOR_plugin_add_defaults],
  756. extractor=1))])
  757. # restore LIBS
  758. LIBS=$SAVE_LIBS
  759. AS_IF([test "$extractor" != 1],
  760. [
  761. AM_CONDITIONAL(HAVE_LIBEXTRACTOR, false)
  762. AC_DEFINE([HAVE_LIBEXTRACTOR],[0],[Lacking libextractor])
  763. ],[
  764. AM_CONDITIONAL(HAVE_LIBEXTRACTOR, true)
  765. AC_DEFINE([HAVE_LIBEXTRACTOR],[1],[Have libextractor])
  766. ])
  767. AS_IF([test "$taler_only" != yes],[
  768. # Check for libltdl header (#2999)
  769. ltdl=0
  770. AC_MSG_CHECKING(for libltdl)
  771. AC_ARG_WITH(ltdl,
  772. [AS_HELP_STRING([--with-ltdl=PREFIX],[base of libltdl installation])],
  773. [AC_MSG_RESULT([$with_ltdl])
  774. AS_CASE([$with_ltdl],
  775. [no],[],
  776. [yes],[
  777. AC_CHECK_HEADERS(ltdl.h,
  778. AC_CHECK_LIB([ltdl], [lt_dlopenext],
  779. ltdl=1))
  780. ],[
  781. LDFLAGS="-L$with_ltdl/lib $LDFLAGS"
  782. CPPFLAGS="-I$with_ltdl/include $CPPFLAGS"
  783. AC_CHECK_HEADERS(ltdl.h,
  784. AC_CHECK_LIB([ltdl], [lt_dlopenext],
  785. EXT_LIB_PATH="-L$with_ltdl/lib $EXT_LIB_PATH"
  786. ltdl=1))
  787. ])
  788. ],
  789. [AC_MSG_RESULT([--with-ltdl not specified])
  790. AC_CHECK_HEADERS(ltdl.h,
  791. AC_CHECK_LIB([ltdl], [lt_dlopenext],
  792. ltdl=1))])
  793. AS_IF([test x$ltdl = x1],
  794. [
  795. AC_MSG_RESULT([libltdl found])
  796. ],[
  797. AC_MSG_ERROR([GNUnet requires libltdl (from GNU libtool), try installing libltdl-dev])
  798. ])
  799. # restore LIBS
  800. LIBS=$SAVE_LIBS
  801. # libidn and libidn2. The ideal goal is this:
  802. # check for libidn2, if it doesn't exist check for libidn
  803. # if both exist, prefer libidn2
  804. # if none exist, fail and message that libidn or libidn2
  805. # is required with a preference for libidn2.
  806. # TODO: What we have right here can probably be improved.
  807. my_with_libidn=1
  808. AC_ARG_WITH(libidn,
  809. AS_HELP_STRING([--with-libidn=pathname],
  810. [Support IDN (needs libidn)]),
  811. [],
  812. [withval="yes"])
  813. AS_IF([test x_$withval = x_yes],
  814. [AC_CHECK_HEADERS([idna.h],
  815. AC_MSG_NOTICE([Found idna.h]),
  816. AC_CHECK_HEADERS([idn/idna.h],
  817. AC_MSG_NOTICE([Found idn/idna.h]),
  818. my_with_libidn=0))],
  819. [AS_IF([test x_$withval != x_no],
  820. [CFLAGS="$CFLAGS -I$withval/include"
  821. LDFLAGS="$LDFLAGS -L$withval/lib"
  822. AC_CHECK_HEADERS([idna.h],
  823. AC_MSG_NOTICE([Found idna.h]),
  824. [AC_MSG_NOTICE([Failed to find idna.h])
  825. my_with_libidn=0])],
  826. [my_with_libidn=0])])
  827. my_with_libidn2=1
  828. AC_ARG_WITH(libidn2,
  829. AS_HELP_STRING([--with-libidn2=pathname],
  830. [Support IDN (needs libidn2)]),
  831. [],
  832. [withval="yes"])
  833. AS_IF([test x_$withval = x_yes],
  834. [AC_CHECK_HEADERS([idn2.h],
  835. AC_MSG_NOTICE([Found idn2.h]),
  836. AC_CHECK_HEADERS([idn2/idn2.h],
  837. AC_MSG_NOTICE([Found idn2/idn2.h]),
  838. [AC_MSG_NOTICE([Failed to find idn2.h])
  839. my_with_libidn2=0]))],
  840. [AS_IF([test x_$withval != x_no],
  841. [CFLAGS="$CFLAGS -I$withval/include"
  842. LDFLAGS="$LDFLAGS -L$withval/lib"],
  843. [my_with_libidn2=0])])
  844. AC_MSG_CHECKING([if libidn can be used])
  845. # Check for LIBIDNs
  846. there_can_only_be_one=1
  847. working_libidn1=0
  848. working_libidn2=0
  849. AS_IF([test x$my_with_libidn2 = x1],
  850. [AC_MSG_NOTICE([Checking for libidn2])
  851. AC_CHECK_LIB([idn2],
  852. [idn2_to_unicode_8z8z],
  853. [working_libidn2=1
  854. LIBS="-lidn2 $LIBS"
  855. AC_DEFINE_UNQUOTED([HAVE_LIBIDN2],
  856. [1],
  857. [Define to 1 if you have 'libidn2' (-lidn2).])],
  858. [MISSING_DEPS="${MISSING_DEPS}${MISSING_SEP}libidn2"
  859. MISSING_SEP=", "])])
  860. AM_CONDITIONAL(HAVE_LIBIDN2,
  861. test x$working_libidn2 = x1)
  862. AS_IF([test x$working_libidn2 = x0],
  863. [AS_IF([test x$my_with_libidn = x1],
  864. [AC_MSG_NOTICE([Checking for libidn])
  865. AC_CHECK_LIB([idn],
  866. [idna_to_ascii_8z],
  867. [working_libidn1=1
  868. LIBS="-lidn $LIBS"
  869. AC_DEFINE_UNQUOTED([HAVE_LIBIDN],
  870. [1],
  871. [Define to 1 if you have 'libidn' (-lidn).])],
  872. [there_can_only_be_one=0])],
  873. [AS_IF([test x$my_with_libidn2 = x1],
  874. [there_can_only_be_one=0
  875. AC_MSG_FAILURE([* There can only be one libidn.
  876. * Provide either libidn >= 1.13
  877. * or
  878. * libidn2 to the configure
  879. * script via
  880. * --with-libidn2
  881. * --with-libidn])])])])
  882. AM_CONDITIONAL(HAVE_LIBIDN, test x$working_libidn1 = x1)
  883. AS_IF([test "$working_libidn1" = 0 -a "$working_libidn2" = 0],
  884. [AC_MSG_ERROR([GNUnet requires libidn (or libidn2)])])
  885. AS_IF([test x$there_can_only_be_one = x0],
  886. [AC_MSG_FAILURE([Missing dependencies: $MISSING_DEPS])])
  887. # test for zlib
  888. SAVE_LDFLAGS=$LDFLAGS
  889. SAVE_CPPFLAGS=$CPPFLAGS
  890. AC_ARG_WITH(zlib,
  891. [ --with-zlib[[=DIR]] use libz in DIR],
  892. [AS_IF([test "$withval" = "no"],
  893. [AC_MSG_ERROR([GNUnet requires zlib])],
  894. [test "$withval" != "yes"],
  895. [Z_DIR=$withval
  896. CPPFLAGS="${CPPFLAGS} -I$withval/include"
  897. LDFLAGS="${LDFLAGS} -L$withval/lib"])])
  898. AC_CHECK_HEADER(zlib.h,
  899. [],
  900. [AC_MSG_ERROR([GNUnet requires zlib])])
  901. AC_CHECK_LIB(z,
  902. compress2,
  903. [AC_DEFINE([HAVE_ZLIB],
  904. [],
  905. [Have compression library])
  906. if test "x${Z_DIR}" != "x"; then
  907. Z_CFLAGS="-I${Z_DIR}/include"
  908. Z_LIBS="-L${Z_DIR}/lib -lz"
  909. else
  910. Z_LIBS="-lz"
  911. fi],
  912. [AC_MSG_ERROR([GNUnet requires zlib])])
  913. AC_SUBST(Z_CFLAGS)
  914. AC_SUBST(Z_LIBS)
  915. AS_IF([test "$enable_shared" = "no"],
  916. [AC_MSG_ERROR([GNUnet only works with shared libraries. Sorry.])])
  917. # restore LIBS
  918. LIBS=$SAVE_LIBS
  919. # end of taler-only being false
  920. ])
  921. # check for iconv
  922. AM_ICONV
  923. # test for libunistring
  924. gl_LIBUNISTRING
  925. AS_IF([test $HAVE_LIBUNISTRING != yes],
  926. [AC_MSG_ERROR([GNUnet requires libunistring])])
  927. # under emscripten, $gl_libunistring_hexversion is undefined
  928. if test "$taler_only" != yes; then
  929. AS_IF([test "x$gl_libunistring_hexversion" = "x" || test "$gl_libunistring_hexversion" -le 2305],
  930. [AC_MSG_ERROR([GNUnet requires libunistring >= 0.9.1.1])])
  931. fi
  932. AC_CHECK_HEADERS([unistr.h],
  933. ,
  934. AC_MSG_ERROR([Compiling GNUnet requires unistr.h (from libunistring) to be installed]))
  935. # restore LIBS
  936. LIBS=$SAVE_LIBS
  937. # Checks for standard header files.
  938. AC_HEADER_DIRENT
  939. AC_HEADER_STDC
  940. # Check for headers that are ALWAYS required
  941. AC_CHECK_HEADERS([fcntl.h math.h errno.h ctype.h limits.h stdio.h stdlib.h string.h unistd.h stdarg.h signal.h locale.h sys/stat.h sys/types.h],,AC_MSG_ERROR([Compiling GNUnet requires standard UNIX headers files: fcntl.h math.h errno.h ctype.h limits.h stdio.h stdlib.h string.h unistd.h stdarg.h signal.h locale.h sys/stat.h sys/types.h]))
  942. # Checks for headers that are only required on some systems or
  943. # opional (and where we do NOT abort if they are not there)
  944. AC_CHECK_HEADERS([stdatomic.h malloc.h malloc/malloc.h malloc/malloc_np.h langinfo.h sys/param.h sys/mount.h sys/statvfs.h sys/select.h sockLib.h sys/mman.h sys/msg.h sys/vfs.h arpa/inet.h fcntl.h libintl.h netdb.h netinet/in.h sys/ioctl.h sys/socket.h sys/time.h unistd.h kstat.h sys/sysinfo.h kvm.h sys/file.h sys/resource.h ifaddrs.h mach/mach.h stddef.h sys/timeb.h argz.h ucred.h sys/ucred.h endian.h sys/endian.h execinfo.h byteswap.h])
  945. # FreeBSD requires this for netinet/in_systm.h and netinet/ip.h
  946. AC_CHECK_HEADERS([sys/types.h netinet/in_systm.h netinet/in.h netinet/ip.h],,,
  947. [#ifdef HAVE_SYS_TYPES_H
  948. #include <sys/types.h>
  949. #endif
  950. #ifdef HAVE_NETINET_IN_SYSTM_H
  951. #include <netinet/in_systm.h>
  952. #endif
  953. #ifdef HAVE_NETINET_IN_H
  954. #include <netinet/in.h>
  955. #endif
  956. ])
  957. SAVE_LDFLAGS=$LDFLAGS
  958. SAVE_CPPFLAGS=$CPPFLAGS
  959. # test for sqlite
  960. sqlite=false
  961. AC_MSG_CHECKING(for SQLite)
  962. AC_ARG_WITH(sqlite,
  963. [ --with-sqlite=PFX base of SQLite installation],
  964. [AC_MSG_RESULT("$with_sqlite")
  965. AS_CASE([$with_sqlite],
  966. [no],[],
  967. [yes],[
  968. AC_CHECK_HEADERS(sqlite3.h,
  969. sqlite=true)],
  970. [
  971. LDFLAGS="-L$with_sqlite/lib $LDFLAGS"
  972. CPPFLAGS="-I$with_sqlite/include $CPPFLAGS"
  973. AC_CHECK_HEADERS(sqlite3.h,
  974. EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH"
  975. SQLITE_LDFLAGS="-L$with_sqlite/lib"
  976. SQLITE_CPPFLAGS="-I$with_sqlite/include"
  977. sqlite=true)
  978. LDFLAGS=$SAVE_LDFLAGS
  979. CPPFLAGS=$SAVE_CPPFLAGS
  980. ])
  981. ],
  982. [AC_MSG_RESULT([--with-sqlite not specified])
  983. AC_CHECK_HEADERS(sqlite3.h, sqlite=true)])
  984. AM_CONDITIONAL(HAVE_SQLITE, test x$sqlite = xtrue)
  985. AC_SUBST(SQLITE_CPPFLAGS)
  986. AC_SUBST(SQLITE_LDFLAGS)
  987. LDFLAGS=$SAVE_LDFLAGS
  988. CPPFLAGS=$SAVE_CPPFLAGS
  989. # test for postgres
  990. postgres=false
  991. # even running the check for postgres breaks emscripten ...
  992. AS_IF([test "$taler_only" != yes],
  993. [AX_LIB_POSTGRESQL([9.5],
  994. [CPPFLAGS="$CPPFLAGS $POSTGRESQL_CPPFLAGS"
  995. AC_CHECK_HEADERS([libpq-fe.h],
  996. postgres=true)
  997. ],
  998. [AC_MSG_RESULT([no postgres])])])
  999. AM_CONDITIONAL(HAVE_POSTGRESQL, test x$postgres = xtrue)
  1000. LDFLAGS=$SAVE_LDFLAGS
  1001. CPPFLAGS=$SAVE_CPPFLAGS
  1002. # mysql & windows
  1003. AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
  1004. AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
  1005. # test for mysql
  1006. mysql=false
  1007. mysqlfail=false
  1008. SAVE_LDFLAGS=$LDFLAGS
  1009. SAVE_CPPFLAGS=$CPPFLAGS
  1010. AC_MSG_CHECKING(for mysql)
  1011. AC_ARG_WITH(mysql,
  1012. [ --with-mysql=PFX base of MySQL installation],
  1013. [AC_MSG_RESULT([$with_mysql])
  1014. AS_CASE([$with_mysql],
  1015. [no],[],
  1016. [yes|""],[
  1017. AC_CHECK_HEADERS(mysql/mysql.h,
  1018. AC_CHECK_LIB(mysqlclient, mysql_init,
  1019. mysql=true), [], [])
  1020. ],[
  1021. LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
  1022. CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
  1023. AC_CHECK_HEADERS(mysql/mysql.h,
  1024. AC_CHECK_LIB(mysqlclient, mysql_init,
  1025. MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
  1026. MYSQL_CPPFLAGS="-I$with_mysql/include"
  1027. mysql=true), [], [])
  1028. ])
  1029. ],
  1030. [AC_MSG_RESULT([--with-mysql not specified])
  1031. if test -d "/usr/lib64/mysql"; then
  1032. MYSQL_LIBDIR="/usr/lib64/mysql"
  1033. elif test -d "/usr/lib/mysql"; then
  1034. MYSQL_LIBDIR="/usr/lib/mysql"
  1035. else
  1036. MYSQL_LIBDIR="/usr/lib"
  1037. fi
  1038. LDFLAGS="-L$MYSQL_LIBDIR $LDFLAGS $ZLIBS"
  1039. AC_CHECK_LIB(mysqlclient, mysql_init,
  1040. [AC_CHECK_HEADERS(mysql/mysql.h,
  1041. MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
  1042. mysql=true
  1043. , [], [])])
  1044. ])
  1045. AC_SUBST(MYSQL_LDFLAGS)
  1046. AC_SUBST(MYSQL_CPPFLAGS)
  1047. # additional version check for mysql
  1048. AC_ARG_ENABLE(mysql-version-check, [ --disable-mysql-version-check do not check MySQL version],, enable_mysql_version_check=yes)
  1049. AS_IF([test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"],
  1050. [
  1051. AC_MSG_CHECKING(mysql version)
  1052. AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
  1053. [[
  1054. #include <mysql/mysql.h>]],
  1055. [[
  1056. #if (MYSQL_VERSION_ID < 40100)
  1057. #error needs at least version >= 4.1
  1058. #endif
  1059. int main () { return 0; }
  1060. ]])
  1061. ],mysql=true,mysql=false)
  1062. AS_IF([test "$mysql" = "false"],
  1063. [
  1064. mysqlfail=true
  1065. AC_MSG_RESULT([fail, >= 4.1 required])
  1066. ],[
  1067. AC_MSG_RESULT(ok)
  1068. ])
  1069. ])
  1070. AM_CONDITIONAL(HAVE_MYSQL, test x$mysql = xtrue)
  1071. AM_CONDITIONAL(HAVE_MYSQLE, false)
  1072. # restore LIBS
  1073. LIBS=$SAVE_LIBS
  1074. LDFLAGS=$SAVE_LDFLAGS
  1075. CPPFLAGS=$SAVE_CPPFLAGS
  1076. AS_IF([test "$sqlite" = 0 -a "$mysql" = 0],
  1077. [
  1078. AC_MSG_ERROR([GNUnet requires SQLite or MySQL])
  1079. ])
  1080. # libmicrohttpd
  1081. lmhd=0
  1082. m4_define([MHD_MODULE], [libmicrohttpd >= 0.9.63])
  1083. AC_ARG_WITH(microhttpd,
  1084. [AS_HELP_STRING([--with-microhttpd[[=PFX]]],
  1085. [base of libmicrohttpd installation])],
  1086. [],
  1087. [with_microhttpd=check])
  1088. AS_CASE([$with_microhttpd],
  1089. [no], [],
  1090. [yes], [PKG_CHECK_MODULES([MHD], [MHD_MODULE], [lmhd=1])],
  1091. [check], [PKG_CHECK_MODULES([MHD], [MHD_MODULE],
  1092. [lmhd=1],
  1093. [AC_MSG_WARN([Building without libmicrohttpd])])],
  1094. [SAVE_PKG_CONFIG_PATH=$PKG_CONFIG_PATH
  1095. PKG_CONFIG_PATH=$with_microhttpd/lib/pkgconfig
  1096. export PKG_CONFIG_PATH
  1097. PKG_CHECK_MODULES([MHD], [MHD_MODULE], [lmhd=1])
  1098. PKG_CONFIG_PATH=$SAVE_PKG_CONFIG_PATH])
  1099. AM_CONDITIONAL(HAVE_MHD, test x$lmhd = x1)
  1100. AC_DEFINE_UNQUOTED([HAVE_MHD], $lmhd, [We have libmicrohttpd])
  1101. AM_CONDITIONAL(HAVE_JSON, [test x$jansson = x1])
  1102. # restore LIBS
  1103. LIBS=$SAVE_LIBS
  1104. # check for gettext
  1105. AM_GNU_GETTEXT([external])
  1106. AM_GNU_GETTEXT_VERSION([0.18.1])
  1107. # Checks for standard typedefs, structures, and compiler characteristics.
  1108. AC_TYPE_PID_T
  1109. AC_TYPE_SIZE_T
  1110. AC_TYPE_MODE_T
  1111. AC_HEADER_TIME
  1112. AC_HEADER_STAT
  1113. AC_HEADER_STDBOOL
  1114. AC_STRUCT_TM
  1115. AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
  1116. [ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
  1117. ],
  1118. [],
  1119. [
  1120. #include <sys/types.h>
  1121. #include <sys/socket.h>
  1122. #include <netinet/in.h>
  1123. ])
  1124. AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
  1125. [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN,
  1126. 1,
  1127. [Do we have sockaddr_un.sun_len?])],
  1128. [],
  1129. [
  1130. #include <sys/types.h>
  1131. #include <sys/socket.h>
  1132. #include <sys/un.h>
  1133. ])
  1134. # Checks for library functions.
  1135. AC_FUNC_CLOSEDIR_VOID
  1136. AC_FUNC_FORK
  1137. AC_PROG_GCC_TRADITIONAL
  1138. AC_FUNC_MEMCMP
  1139. AC_FUNC_SELECT_ARGTYPES
  1140. AC_FUNC_CHOWN
  1141. AC_TYPE_SIGNAL
  1142. AC_FUNC_STAT
  1143. AC_FUNC_STRFTIME
  1144. AC_FUNC_VPRINTF
  1145. AC_HEADER_SYS_WAIT
  1146. AC_TYPE_OFF_T
  1147. AC_TYPE_UID_T
  1148. AC_CHECK_FUNCS([atoll stat64 strnlen mremap getrlimit setrlimit sysconf initgroups strndup gethostbyname2 getpeerucred getpeereid setresuid $funcstocheck getifaddrs freeifaddrs getresgid mallinfo malloc_size malloc_usable_size getrusage random srandom stat statfs statvfs wait4])
  1149. # restore LIBS
  1150. LIBS=$SAVE_LIBS
  1151. GN_INTLINCL=""
  1152. GN_LIBINTL="$LTLIBINTL"
  1153. AC_ARG_ENABLE(framework,
  1154. [AS_HELP_STRING([--enable-framework],[enable Mac OS X framework build helpers])],
  1155. enable_framework_build=$enableval)
  1156. AM_CONDITIONAL(WANT_FRAMEWORK,
  1157. test x$enable_framework_build = xyes)
  1158. AS_IF([test x$enable_framework_build = xyes],
  1159. [AC_DEFINE([FRAMEWORK_BUILD],
  1160. 1,
  1161. [Build a Mac OS X Framework])
  1162. GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
  1163. GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework CoreFoundation'
  1164. AC_LIB_APPENDTOVAR([CPPFLAGS],
  1165. [$GN_INTLINCL])])
  1166. GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
  1167. GN_PLUGIN_LDFLAGS="-export-dynamic -avoid-version -module -no-undefined"
  1168. AC_SUBST(GN_LIB_LDFLAGS)
  1169. AC_SUBST(GN_PLUGIN_LDFLAGS)
  1170. AC_SUBST(GN_INTLINCL)
  1171. AC_SUBST(GN_LIBINTL)
  1172. AC_SUBST(CPPFLAGS)
  1173. AC_SUBST(LIBS)
  1174. AC_SUBST(LDFLAGS)
  1175. AC_SUBST(EXT_LIB_PATH)
  1176. AC_SUBST(EXT_LIBS)
  1177. AC_SUBST(LIBPREFIX)
  1178. AC_SUBST(DLLDIR)
  1179. AC_SUBST(EXT_LIB_PATH)
  1180. DATAROOTDIR=$datarootdir
  1181. AC_SUBST(DATAROOTDIR)
  1182. # test for sudo
  1183. # TODO: do we need to change anything for "doas" on openbsd?
  1184. AC_MSG_CHECKING(for sudo)
  1185. AC_ARG_WITH(sudo,
  1186. [ --with-sudo=PATH path to sudo binary (or just yes)],
  1187. [AC_MSG_RESULT("$with_sudo")
  1188. AS_CASE([$with_sudo],
  1189. [no],[SUDO_BINARY=],
  1190. [yes],[SUDO_BINARY=sudo],
  1191. [SUDO_BINARY=$with_sudo])],
  1192. [AC_MSG_RESULT([no])])
  1193. AC_SUBST(SUDO_BINARY)
  1194. AM_CONDITIONAL([HAVE_SUDO],
  1195. [test "x$SUDO_BINARY" != "x" -o -w /])
  1196. # test for gnunetdns group name
  1197. GNUNETDNS_GROUP=gnunetdns
  1198. AC_MSG_CHECKING(for gnunetdns group name)
  1199. AC_ARG_WITH(gnunetdns,
  1200. [ --with-gnunetdns=GRPNAME name for gnunetdns group],
  1201. [AC_MSG_RESULT("$with_gnunetdns")
  1202. AS_CASE([$with_gnunetdns],
  1203. [no],[GNUNETDNS_GROUP=gnunet],
  1204. [yes],[GNUNETDNS_GROUP=gnunetdns],
  1205. [GNUNETDNS_GROUP=$with_gnunetdns])],
  1206. [AC_MSG_RESULT([gnunetdns])])
  1207. AC_SUBST(GNUNETDNS_GROUP)
  1208. # gnutls
  1209. gnutls=0
  1210. gnutls_dane=0
  1211. AC_MSG_CHECKING(for gnutls)
  1212. AC_ARG_WITH(gnutls,
  1213. [ --with-gnutls=PFX base of gnutls installation],
  1214. [AC_MSG_RESULT([$with_gnutls])
  1215. AS_CASE([$with_gnutls],
  1216. [no],[],
  1217. [yes],
  1218. [AC_CHECK_HEADERS([gnutls/abstract.h],
  1219. AC_CHECK_LIB([gnutls],
  1220. [gnutls_priority_set],
  1221. gnutls=true))
  1222. AC_CHECK_HEADERS([gnutls/dane.h],
  1223. AC_CHECK_LIB([gnutls-dane],
  1224. [dane_verify_crt_raw],
  1225. gnutls_dane=1))],
  1226. [LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
  1227. CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
  1228. AC_CHECK_HEADERS([gnutls/abstract.h],
  1229. AC_CHECK_LIB([gnutls], [gnutls_priority_set],
  1230. EXT_LIB_PATH="-L$with_gnutls/lib $EXT_LIB_PATH"
  1231. gnutls=true))
  1232. AC_CHECK_HEADERS([gnutls/dane.h],
  1233. AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
  1234. gnutls_dane=1))
  1235. ])
  1236. ],
  1237. [AC_MSG_RESULT([--with-gnutls not specified])
  1238. AC_CHECK_HEADERS([gnutls/abstract.h],
  1239. AC_CHECK_LIB([gnutls], [gnutls_priority_set],
  1240. gnutls=true))
  1241. AC_CHECK_HEADERS([gnutls/dane.h],
  1242. AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
  1243. gnutls_dane=1))
  1244. ])
  1245. AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
  1246. AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
  1247. AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
  1248. AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE support])
  1249. # Test if we are building for superMUC
  1250. AC_MSG_CHECKING(if GNUnet is being configured to run on the SuperMUC)
  1251. AC_ARG_ENABLE([supermuc],
  1252. [AS_HELP_STRING([--enable-supermuc],
  1253. [build GNUnet with support to run on the SuperMUC (default is NO)])],
  1254. [AS_IF([test "x$enable_supermuc" = "xno"],
  1255. [supermuc=0],
  1256. [supermuc=1])],
  1257. [supermuc=0
  1258. enable_supermuc=no])
  1259. AC_MSG_RESULT($enable_SUPERMUC)
  1260. AM_CONDITIONAL([ENABLE_SUPERMUC], [test "x$supermuc" = "x1"])
  1261. AC_DEFINE_UNQUOTED([ENABLE_SUPERMUC], [$supermuc], [Build with support for SuperMUC])
  1262. # Check if NSE has to send timestamp information to testbed logger for
  1263. # generating histogram of messages received
  1264. AC_MSG_CHECKING(if NSE has to send timestamp information to testbed logger)
  1265. AC_ARG_ENABLE([nse-histogram],
  1266. [AS_HELP_STRING([--enable-nse-histogram],
  1267. [have NSE send timestamp information to testbed logger for generating
  1268. histogram of received messages. NOT useful for production (default is
  1269. NO)])],
  1270. [AS_IF([test "x$enableval" = "xno"],
  1271. [nse_histogram=0],
  1272. [nse_histogram=1])],
  1273. [nse_histogram=0
  1274. enable_nse_histogram=no])
  1275. AC_MSG_RESULT($enable_nse_histogram)
  1276. AM_CONDITIONAL([ENABLE_NSE_HISTOGRAM], [test "x$nse_histogram" = "x1"])
  1277. AC_DEFINE_UNQUOTED([ENABLE_NSE_HISTOGRAM], [$nse_histogram],
  1278. [have NSE send timestamp information to testbed logger])
  1279. # should 'make check' run tests?
  1280. AC_MSG_CHECKING(whether to run tests)
  1281. AC_ARG_ENABLE([testruns],
  1282. [AS_HELP_STRING([--disable-testruns], [disable running tests on make check (default is YES)])],
  1283. [enable_tests_run=${enableval}],
  1284. [enable_tests_run=yes])
  1285. AC_MSG_RESULT($enable_test_run)
  1286. AM_CONDITIONAL([ENABLE_TEST_RUN], [test "x$enable_tests_run" = "xyes"])
  1287. AC_MSG_CHECKING([whether to compile in benchmarks (currently for http and crypto)])
  1288. AC_ARG_ENABLE([benchmark],
  1289. [AS_HELP_STRING([--enable-benchmark], [enable benchmarking])],
  1290. [enable_benchmark=${enableval}],
  1291. [enable_benchmark=no])
  1292. AC_MSG_RESULT($enable_benchmark)
  1293. AS_IF([test "x$enable_benchmark" = "xyes"],
  1294. [AC_DEFINE_UNQUOTED(ENABLE_BENCHMARK,1,[Benchmarks are enabled])])
  1295. AM_CONDITIONAL([ENABLE_BENCHMARK], [test "x$enable_benchmark" = "xyes"])
  1296. # should expensive tests be run?
  1297. AC_MSG_CHECKING(whether to run expensive tests)
  1298. AC_ARG_ENABLE([expensivetests],
  1299. [AS_HELP_STRING([--enable-expensivetests], [enable running expensive testcases])],
  1300. [enable_expensive=${enableval}],
  1301. [enable_expensive=no])
  1302. AC_MSG_RESULT($enable_expensive)
  1303. AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [test "x$enable_expensive" = "xyes"])
  1304. # should ports be open for Java services?
  1305. AC_MSG_CHECKING(whether to enable ports for gnunet-java)
  1306. AC_ARG_ENABLE([javaports],
  1307. [AS_HELP_STRING([--enable-javaports], [use non-zero ports for services with Java bindings (default is NO)])],
  1308. [enable_java_ports=${enableval}],
  1309. [enable_java_ports=no])
  1310. AC_MSG_RESULT($enable_java_ports)
  1311. AS_IF([test "x$enable_java_ports" = "xyes"],
  1312. [JAVAPORT=""],
  1313. [JAVAPORT="$UNIXONLY"])
  1314. AC_SUBST(JAVAPORT)
  1315. # should benchmarks be run?
  1316. AC_MSG_CHECKING(whether to run benchmarks during make check)
  1317. AC_ARG_ENABLE([benchmarks],
  1318. [AS_HELP_STRING([--enable-benchmarks], [enable running benchmarks during make check])],
  1319. [enable_benchmarks=${enableval}],
  1320. [enable_benchmarks=no])
  1321. AC_MSG_RESULT($enable_benchmarks)
  1322. AM_CONDITIONAL([HAVE_BENCHMARKS], [test "x$enable_benchmarks" = "xyes"])
  1323. # should gnunet-testing be compiled
  1324. AC_MSG_CHECKING(wether to compile gnunet-testing)
  1325. AC_ARG_ENABLE([testing],
  1326. [AS_HELP_STRING([--disable-testing], [do not build gnunet-testing])],
  1327. [enable_testing=${enableval}],
  1328. [enable_testing=yes])
  1329. AC_MSG_RESULT($enable_testing)
  1330. AM_CONDITIONAL([HAVE_TESTING], [test "x$enable_testing" = "xyes"])
  1331. # should experimental code be compiled (code that may not yet compile)?
  1332. AC_MSG_CHECKING(whether to compile experimental code)
  1333. AC_ARG_ENABLE([experimental],
  1334. [AS_HELP_STRING([--enable-experimental], [enable compiling experimental code])],
  1335. [enable_experimental=${enableval}],
  1336. [enable_experimental=no])
  1337. AC_MSG_RESULT($enable_experimental)
  1338. AM_CONDITIONAL([HAVE_EXPERIMENTAL], [test "x$enable_experimental" = "xyes"])
  1339. # should malicious code be compiled (should only be used for testing)?
  1340. AC_MSG_CHECKING(whether to compile malicious code)
  1341. AC_ARG_ENABLE([malicious],
  1342. [AS_HELP_STRING([--enable-malicious], [enable compiling malicious code])],
  1343. [AS_IF([test "x$enableval" = "xno"],
  1344. [malicious=0],
  1345. [malicious=1])],
  1346. [malicious=0
  1347. enable_malicious=no])
  1348. AC_MSG_RESULT($enable_malicious)
  1349. AM_CONDITIONAL([ENABLE_MALICIOUS], [test 1=$malicious])
  1350. AC_DEFINE_UNQUOTED([ENABLE_MALICIOUS], [$malicious],
  1351. [enable compilation of malicious code])
  1352. # should services be started on demand when needed?
  1353. # Some services may choose to never start by default
  1354. # and it is up to the service/module developer to decide
  1355. # by having "START_ON_DEMAND = NO" instead of
  1356. # "START_ON_DEMAND = @START_ON_DEMAND@"
  1357. # in the service/module's conf.in file.
  1358. # See also IMMEDIATE_START for an unconditional immediate start.
  1359. START_ON_DEMAND="YES"
  1360. AC_MSG_CHECKING(whether to start peer's services on demand by default)
  1361. AC_ARG_ENABLE([autostart],
  1362. [AS_HELP_STRING([--disable-autostart], [do not start peer's services by default])],
  1363. [enable_autostart=${enableval}
  1364. AS_IF([test "x$enable_autostart" = "xno"],
  1365. [START_ON_DEMAND="NO"])
  1366. ],
  1367. [enable_autostart=yes])
  1368. AC_MSG_RESULT($enable_autostart)
  1369. #AM_CONDITIONAL([HAVE_START_ON_DEMAND], [test "x$enable_autostart" = "xyes"])
  1370. AC_SUBST(START_ON_DEMAND)
  1371. # should memory statistics be kept (very expensive CPU-wise!)
  1372. AC_MSG_CHECKING(whether to create expensive statistics on memory use)
  1373. AC_ARG_ENABLE([heapstats],
  1374. [AS_HELP_STRING([--enable-heapstats], [enable expensive heap statistics])],
  1375. [enable_heapstats=1],
  1376. [enable_heapstats=0])
  1377. AC_MSG_RESULT($enable_heapstats)
  1378. AC_DEFINE_UNQUOTED([ENABLE_HEAP_STATISTICS],$enable_heapstats,[enable expensive heap statistics])
  1379. # Check if the __thread storage class for
  1380. # thread-local storage is available.
  1381. AC_MSG_CHECKING(whether __thread is supported)
  1382. AC_LINK_IFELSE(
  1383. [AC_LANG_PROGRAM([#include <stdlib.h>
  1384. #undef __thread
  1385. static __thread int a = 1;],
  1386. [exit(a-1);])],
  1387. [have_thread_local_gcc=1],[have_thread_local_gcc=0])
  1388. AC_DEFINE_UNQUOTED([HAVE_THREAD_LOCAL_GCC],$have_thread_local_gcc,[Define this if __thread is supported])
  1389. AS_IF([test "x$have_thread_local_gcc" = "x1"],
  1390. [AC_MSG_RESULT(yes)],
  1391. [AC_MSG_RESULT(no)])
  1392. # gcov compilation
  1393. AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
  1394. AC_ARG_ENABLE([coverage],
  1395. AS_HELP_STRING([--enable-coverage],
  1396. [compile the library with code coverage support]),
  1397. [use_gcov=${enableval}],
  1398. [use_gcov=no])
  1399. AC_MSG_RESULT($use_gcov)
  1400. AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
  1401. # version info
  1402. # TODO: git blame says this predates our switch to git.
  1403. # git-svn should be adjusted to simply git, or
  1404. # an external script that does the job.
  1405. AC_PATH_PROG(svnversioncommand, svnversion)
  1406. AC_PATH_PROG(gitcommand, git)
  1407. AC_MSG_CHECKING(for source being under a VCS)
  1408. # version info
  1409. AC_PATH_PROG(gitcommand, git)
  1410. AC_MSG_CHECKING(for source being under a VCS)
  1411. git_version=
  1412. AS_IF([test ! "X$gitcommand" = "X"],
  1413. [
  1414. git_version=$(cd $srcdir ; git rev-list --full-history --all --abbrev-commit | head -n 1 2>/dev/null)
  1415. ])
  1416. AS_IF([test "X$git_version" = "X"],
  1417. [
  1418. vcs_name="no"
  1419. vcs_version="\"release\""
  1420. ],
  1421. [
  1422. vcs_name="yes, git-svn"
  1423. vcs_version="\"git-$git_version\""
  1424. ])
  1425. AC_MSG_RESULT($vcs_name)
  1426. AC_MSG_CHECKING(VCS version)
  1427. AC_MSG_RESULT($vcs_version)
  1428. AC_DEFINE_UNQUOTED(VCS_VERSION, [$vcs_version], [VCS revision/hash or tarball version])
  1429. AC_CONFIG_FILES([
  1430. Makefile
  1431. contrib/Makefile
  1432. contrib/hellos/Makefile
  1433. contrib/services/Makefile
  1434. contrib/services/openrc/Makefile
  1435. contrib/services/systemd/Makefile
  1436. contrib/scripts/Makefile
  1437. contrib/scripts/gnunet-logread/Makefile
  1438. doc/Makefile
  1439. doc/man/Makefile
  1440. doc/doxygen/Makefile
  1441. doc/handbook/Makefile
  1442. doc/tutorial/Makefile
  1443. lint/Makefile
  1444. m4/Makefile
  1445. po/Makefile.in
  1446. src/Makefile
  1447. src/arm/Makefile
  1448. src/arm/arm.conf
  1449. src/ats/Makefile
  1450. src/ats/ats.conf
  1451. src/ats-tool/Makefile
  1452. src/ats-tests/Makefile
  1453. src/auction/Makefile
  1454. src/block/Makefile
  1455. src/cadet/Makefile
  1456. src/cadet/cadet.conf
  1457. src/core/Makefile
  1458. src/core/core.conf
  1459. src/consensus/Makefile
  1460. src/consensus/consensus.conf
  1461. src/conversation/Makefile
  1462. src/conversation/conversation.conf
  1463. src/curl/Makefile
  1464. src/datacache/Makefile
  1465. src/datastore/Makefile
  1466. src/datastore/datastore.conf
  1467. src/dht/Makefile
  1468. src/dht/dht.conf
  1469. src/dns/Makefile
  1470. src/dns/dns.conf
  1471. src/exit/Makefile
  1472. src/fragmentation/Makefile
  1473. src/fs/Makefile
  1474. src/fs/fs.conf
  1475. src/gns/Makefile
  1476. src/gns/gns.conf
  1477. src/gns/nss/Makefile
  1478. src/gnsrecord/Makefile
  1479. src/hello/Makefile
  1480. src/identity/Makefile
  1481. src/identity/identity.conf
  1482. src/credential/Makefile
  1483. src/credential/credential.conf
  1484. src/include/Makefile
  1485. src/integration-tests/Makefile
  1486. src/json/Makefile
  1487. src/hostlist/Makefile
  1488. src/my/Makefile
  1489. src/mysql/Makefile
  1490. src/namecache/Makefile
  1491. src/namecache/namecache.conf
  1492. src/namestore/Makefile
  1493. src/namestore/namestore.conf
  1494. src/nat/Makefile
  1495. src/nat/nat.conf
  1496. src/nat-auto/Makefile
  1497. src/nat-auto/nat-auto.conf
  1498. src/nse/Makefile
  1499. src/nse/nse.conf
  1500. src/nt/Makefile
  1501. src/peerinfo/Makefile
  1502. src/peerinfo/peerinfo.conf
  1503. src/peerinfo-tool/Makefile
  1504. src/peerstore/Makefile
  1505. src/peerstore/peerstore.conf
  1506. src/pq/Makefile
  1507. src/pt/Makefile
  1508. src/regex/Makefile
  1509. src/regex/regex.conf
  1510. src/revocation/Makefile
  1511. src/revocation/revocation.conf
  1512. src/rps/Makefile
  1513. src/rps/rps.conf
  1514. src/secretsharing/Makefile
  1515. src/secretsharing/secretsharing.conf
  1516. src/scalarproduct/Makefile
  1517. src/scalarproduct/scalarproduct.conf
  1518. src/set/Makefile
  1519. src/set/set.conf
  1520. src/sq/Makefile
  1521. src/statistics/Makefile
  1522. src/statistics/statistics.conf
  1523. src/template/Makefile
  1524. src/testbed/Makefile
  1525. src/testbed/testbed.conf
  1526. src/testbed-logger/Makefile
  1527. src/testbed-logger/testbed-logger.conf
  1528. src/testing/Makefile
  1529. src/topology/Makefile
  1530. src/transport/Makefile
  1531. src/transport/transport.conf
  1532. src/util/Makefile
  1533. src/util/resolver.conf
  1534. src/vpn/Makefile
  1535. src/vpn/vpn.conf
  1536. src/zonemaster/Makefile
  1537. src/zonemaster/zonemaster.conf
  1538. src/rest/Makefile
  1539. src/abe/Makefile
  1540. src/reclaim-attribute/Makefile
  1541. src/reclaim/Makefile
  1542. pkgconfig/Makefile
  1543. pkgconfig/gnunetarm.pc
  1544. pkgconfig/gnunetats.pc
  1545. pkgconfig/gnunetblock.pc
  1546. pkgconfig/gnunetcadet.pc
  1547. pkgconfig/gnunetconsensus.pc
  1548. pkgconfig/gnunetconversation.pc
  1549. pkgconfig/gnunetcore.pc
  1550. pkgconfig/gnunetdatacache.pc
  1551. pkgconfig/gnunetdatastore.pc
  1552. pkgconfig/gnunetdht.pc
  1553. pkgconfig/gnunetdns.pc
  1554. pkgconfig/gnunetenv.pc
  1555. pkgconfig/gnunetfragmentation.pc
  1556. pkgconfig/gnunetfs.pc
  1557. pkgconfig/gnunetgns.pc
  1558. pkgconfig/gnunethello.pc
  1559. pkgconfig/gnunetidentity.pc
  1560. pkgconfig/gnunetmicrophone.pc
  1561. pkgconfig/gnunetmysql.pc
  1562. pkgconfig/gnunetnamestore.pc
  1563. pkgconfig/gnunetnat.pc
  1564. pkgconfig/gnunetnse.pc
  1565. pkgconfig/gnunetpeerinfo.pc
  1566. pkgconfig/gnunetpq.pc
  1567. pkgconfig/gnunetregex.pc
  1568. pkgconfig/gnunetrevocation.pc
  1569. pkgconfig/gnunetrps.pc
  1570. pkgconfig/gnunetscalarproduct.pc
  1571. pkgconfig/gnunetset.pc
  1572. pkgconfig/gnunetspeaker.pc
  1573. pkgconfig/gnunetstatistics.pc
  1574. pkgconfig/gnunettestbed.pc
  1575. pkgconfig/gnunettesting.pc
  1576. pkgconfig/gnunettransport.pc
  1577. pkgconfig/gnunetutil.pc
  1578. pkgconfig/gnunetvpn.pc
  1579. ])
  1580. AC_OUTPUT
  1581. # FIXME: `some modules' -> be more specific which exact modules.
  1582. # java ports
  1583. AS_IF([test "x$enable_java_ports" = "xyes"],
  1584. [AC_MSG_NOTICE([NOTICE: Opening ports for gnunet-java bindings by default.])])
  1585. ####
  1586. #### Lasciate ogne speranza, voi ch'intrate
  1587. ####
  1588. #### This could be moved to the checks above,
  1589. #### but for now let's keep it here.
  1590. ####
  1591. # -- print message regarding enabled experimental features
  1592. AS_IF([test "x$enable_experimental" = "xyes"],
  1593. [experimental_msg="experimental features enabled"])
  1594. # -- OSX Framework
  1595. AS_IF([test "$enable_framework_build" = "yes"],
  1596. [macosx_framework_msg="yes"],
  1597. [macosx_framework_msg="no"])
  1598. # -- libidn 2
  1599. AS_IF([test "x$working_libidn2" = x1],
  1600. [libidn2_msg="libidn2"])
  1601. # -- libidn 1
  1602. AS_IF([test "x$working_libidn1" = x1],
  1603. [libidn1_msg="libidn1"])
  1604. # -- texi2mdoc
  1605. AS_IF([test "x$texi2mdoc_generation" = x1],
  1606. [mdoc_msg="yes"],
  1607. [mdoc_msg="no"])
  1608. # -- texinfo
  1609. AS_IF([test "x$makeinfo" != "x1"],
  1610. [texinfo_msg="no"],
  1611. [texinfo_msg="yes"])
  1612. # -- conversation
  1613. AS_IF([test "x$conversation_backend" = "xnone"],
  1614. [AS_IF([test "x$pulse" != "x1"],
  1615. [AC_MSG_NOTICE([WARNING: libpulse(audio) not found, conversation will not be built.])
  1616. libpulse_msg="no"],
  1617. [libpulse_msg="yes"])
  1618. AS_IF([test "x$opus" != "x1"],
  1619. [AC_MSG_NOTICE([WARNING: libopus not found, conversation will not be built.])
  1620. libopus_msg="no"],
  1621. [libopus_msg="yes"])
  1622. AS_IF([test "x$gst" != "x1"],
  1623. [AC_MSG_NOTICE([WARNING: GStreamer not found, conversation will not be built.])
  1624. gstreamer_msg="no"],
  1625. [gstreamer_msg="yes"])],
  1626. [features_msg="$features_msg conversation"])
  1627. # -- interface
  1628. interface_msg=`echo $DEFAULT_INTERFACE | tr -d \"`
  1629. # -- libmicrohttpd
  1630. AS_IF([test "x$lmhd" != "x1"],
  1631. [libmicrohttpd_msg="no (optional)"],
  1632. [libmicrohttpd_msg="yes"])
  1633. # -- jansson
  1634. AS_IF([test "x$jansson" = "x0"],
  1635. [jansson_msg="no (optional)"],
  1636. [jansson_msg="yes"])
  1637. # -- libextractor
  1638. AS_IF([test "$extractor" != 1],
  1639. [AC_MSG_WARN([ERROR: libextractor not found, but various file-sharing functions require it])],
  1640. [libextractor_msg="yes"])
  1641. # -- libzbar
  1642. AS_IF([test "x$zbar" = "x1"],
  1643. [libzbar_msg="yes"
  1644. features_msg="$features_msg gnunet-qr"],
  1645. [AC_MSG_NOTICE([WARNING: zbar not found, gnunet-qr will not be built.])
  1646. libzbar_msg="no"])
  1647. # -- libgnurl
  1648. AS_IF([test "$gnurl" = "0"],
  1649. [AS_IF([test "x$curl" = "xfalse"],
  1650. [AC_MSG_NOTICE([WARNING: libgnurl not found. http client support will not be compiled.])
  1651. AC_MSG_WARN([ERROR: libgnurl not found. hostlist daemon will not be compiled, and you probably WANT the hostlist daemon])
  1652. curl_msg="no"],
  1653. [AC_MSG_NOTICE([WARNING: libgnurl not found, trying to use libcurl-gnutls instead.])
  1654. curl_msg="yes"])],
  1655. [gnurl_msg="yes"])
  1656. # -- ifconfig
  1657. AS_IF([test "$VAR_IFCONFIG_BINARY" = "false"],
  1658. [AC_MSG_NOTICE([WARNING: optional ifconfig not found])
  1659. ifconfig_msg="no (optional)"],
  1660. [ifconfig_msg="yes"])
  1661. # -- upnpc
  1662. AS_IF([test "$VAR_UPNPC_BINARY" = "false"],
  1663. [AC_MSG_NOTICE([WARNING: optional upnpc binary not found])
  1664. upnpc_msg="no (optional)"],
  1665. [upnpc_msg="yes"])
  1666. # -- iptables
  1667. AS_IF([test "$VAR_IPTABLES_BINARY" = "false"],
  1668. [AC_MSG_NOTICE([WARNING: optional iptables not found])
  1669. iptables_msg="no (optional)"],
  1670. [iptables_msg="yes"])
  1671. # -- bluetooth
  1672. AS_IF([test "x$bluetooth" = "x0"],
  1673. [AC_MSG_NOTICE([WARNING: optional bluetooth library not found.])
  1674. bluetooth_msg="no (optional)"],
  1675. [bluetooth_msg="yes"])
  1676. # -- gnutls
  1677. AS_IF([test x$gnutls != xtrue],
  1678. [AC_MSG_NOTICE([WARNING: GnuTLS not found, gnunet-gns-proxy will not be built])
  1679. gnutls_msg="no"],
  1680. [AS_IF([test "x$gnutls_dane" != "x1"],
  1681. [AC_MSG_NOTICE([WARNING: GnuTLS has no DANE support, DANE validation will not be possible])
  1682. gnutls_msg="yes (without DANE support)"],
  1683. [gnutls_msg="yes (with DANE support)"])])
  1684. # -- databases
  1685. AS_IF([test $mysqlfail = true]
  1686. [AC_MSG_NOTICE([WARNING: optional MySQL not found (or too old)])])
  1687. AS_IF([test "$mysql" = true],
  1688. [features_msg="$features_msg mysql"
  1689. mysql_msg="yes"],
  1690. [mysql_msg="no"])
  1691. AS_IF([test "$sqlite" = true],
  1692. [features_msg="$features_msg sqlite"
  1693. sqlite_msg="yes"],
  1694. [AC_MSG_ERROR([ERROR: sqlite3 not found, but sqlite3 is required.])
  1695. sqlite_msg="no"])
  1696. AS_IF([test "$postgres" = true],
  1697. [features_msg="$features_msg postgres"
  1698. postgres_msg="yes"],
  1699. [postgres_msg="no"])
  1700. # -- features
  1701. # ---- 1. replace spaces with newlines,
  1702. # ---- 2. sort the lines,
  1703. # ---- 3. replace the newlines with spaces.
  1704. features_msg=`echo $features_msg | tr ' ' '\012' | sort | tr '\012' ' '`
  1705. AC_SUBST(features_msg)
  1706. # The summary
  1707. # TODO: reduce the length of the last message block ("the message")
  1708. AC_MSG_NOTICE([
  1709. GNUnet Configuration
  1710. gnunet version: ${VERSION}
  1711. Host setup: ${host}
  1712. Install prefix: ${prefix}
  1713. Compiler: ${CC}
  1714. CFLAGS: ${CFLAGS}
  1715. CPPFLAGS: ${CPPFLAGS}
  1716. LDFLAGS: ${LDFLAGS}
  1717. LIBS: ${LIBS}
  1718. Build Target: $build_target
  1719. Mac OSX framework build: ${macosx_framework_msg}
  1720. Default Interface: ${interface_msg}
  1721. MySQL: ${mysql_msg}
  1722. PostgreSQL: ${postgres_msg}
  1723. sqlite3: ${sqlite_msg}
  1724. gnurl: ${gnurl_msg}
  1725. curl: ${curl_msg}
  1726. bluetooth: ${bluetooth_msg}
  1727. jansson: ${jansson_msg}
  1728. iptables: ${iptables_msg}
  1729. ifconfig: ${ifconfig_msg}
  1730. upnpc: ${upnpc_msg}
  1731. gnutls: ${gnutls_msg}
  1732. libzbar: ${libzbar_msg}
  1733. java: ${java_msg}
  1734. libmicrohttpd: ${libmicrohttpd_msg}
  1735. libidn: ${libidn1_msg}${libidn2_msg}
  1736. libopus: ${libopus_msg}
  1737. gstreamer: ${gstreamer_msg}
  1738. libpulse: ${libpulse_msg}
  1739. libextractor: ${libextractor_msg}
  1740. texinfo manual: ${texinfo_msg}
  1741. transpiled mdoc manual: ${mdoc_msg}
  1742. features: ${features_msg}
  1743. experimental: ${experimental_msg}
  1744. IMPORTANT:
  1745. Please make sure NOW that you have created a user and group 'gnunet'
  1746. and additionally a group 'gnunetdns'. On Debian and Ubuntu GNU/Linux,
  1747. type:
  1748. addgroup gnunetdns
  1749. adduser --system --group --disabled-login --home /var/lib/gnunet gnunet
  1750. Make sure that '/var/lib/gnunet' is owned (and writable) by user
  1751. 'gnunet'. Then, you can compile GNUnet with
  1752. make
  1753. After that, run (if necessary as 'root')
  1754. make install
  1755. to install everything.
  1756. Each GNUnet user should be added to the 'gnunet' group (may
  1757. require fresh login to come into effect):
  1758. adduser USERNAME gnunet
  1759. (run the above command as root once for each of your users, replacing
  1760. "USERNAME" with the respective login names). If you have a global IP
  1761. address, no further configuration is required.
  1762. For more detailed setup instructions, see https://docs.gnunet.org/
  1763. Optionally, download and compile gnunet-gtk to get a GUI for
  1764. file-sharing and configuration. This is particularly recommended
  1765. if your network setup is non-trivial, as gnunet-setup can be
  1766. used to test in the GUI if your network configuration is working.
  1767. gnunet-setup should be run as the "gnunet" user under X. As it
  1768. does very little with the network, running it as "root" is likely
  1769. also harmless. You can also run it as a normal user, but then
  1770. you have to copy ~/.gnunet/gnunet.conf" over to the "gnunet" user's
  1771. home directory in the end.
  1772. Once you have configured your peer, run (as the 'gnunet' user)
  1773. gnunet-arm -s
  1774. to start the peer. You can then run the various GNUnet-tools as
  1775. your "normal" user (who should only be in the group 'gnunet').
  1776. ])