Advertisement
Guest User

Untitled

a guest
May 31st, 2013
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.93 KB | None | 0 0
  1. # -*- Autoconf -*-
  2. # Process this file with autoconf to produce a configure script.
  3.  
  4. # bootstrap / init
  5. AC_PREREQ([2.61])
  6.  
  7. AC_INIT([corosync],
  8. m4_esyscmd([build-aux/git-version-gen .tarball-version]),
  9. [discuss@lists.corosync.org])
  10.  
  11. AC_USE_SYSTEM_EXTENSIONS
  12.  
  13. AM_INIT_AUTOMAKE([-Wno-portability])
  14.  
  15. LT_PREREQ([2.2.6])
  16. LT_INIT
  17.  
  18. AM_SILENT_RULES([yes])
  19.  
  20. AC_CONFIG_SRCDIR([lib/cpg.c])
  21. AC_CONFIG_HEADER([include/corosync/config.h])
  22. AC_CONFIG_MACRO_DIR([m4])
  23.  
  24. AC_CANONICAL_HOST
  25.  
  26. AC_LANG([C])
  27.  
  28. AC_SUBST(WITH_LIST, [""])
  29.  
  30. #Enable inter-library dependencies
  31. AC_ARG_ENABLE(interlib-deps,
  32. [AC_HELP_STRING([--disable-interlib-deps ],[disable inter-library dependencies (might break builds)])],
  33. [enable_interlib_deps="$enableval"],
  34. [enable_interlib_deps="yes"])
  35.  
  36. AC_MSG_NOTICE([enable inter-library dependencies: $enable_interlib_deps])
  37. if test "${enable_interlib_deps}" == "yes"; then
  38. link_all_deplibs=yes
  39. link_all_deplibs_CXX=yes
  40. else
  41. link_all_deplibs=no
  42. link_all_deplibs_CXX=no
  43. fi
  44.  
  45. dnl Fix default variables - "prefix" variable if not specified
  46. if test "$prefix" = "NONE"; then
  47. prefix="/usr"
  48.  
  49. dnl Fix "localstatedir" variable if not specified
  50. if test "$localstatedir" = "\${prefix}/var"; then
  51. localstatedir="/var"
  52. fi
  53. dnl Fix "sysconfdir" variable if not specified
  54. if test "$sysconfdir" = "\${prefix}/etc"; then
  55. sysconfdir="/etc"
  56. fi
  57. dnl Fix "libdir" variable if not specified
  58. if test "$libdir" = "\${exec_prefix}/lib"; then
  59. if test -e /usr/lib64; then
  60. libdir="/usr/lib64"
  61. else
  62. libdir="/usr/lib"
  63. fi
  64. fi
  65. fi
  66.  
  67. if test "$srcdir" = "."; then
  68. AC_MSG_NOTICE([building in place srcdir:$srcdir])
  69. AC_DEFINE([BUILDING_IN_PLACE], 1, [building in place])
  70. else
  71. AC_MSG_NOTICE([building out of tree srcdir:$srcdir])
  72. fi
  73.  
  74. # Checks for programs.
  75.  
  76. # check stolen from gnulib/m4/gnu-make.m4
  77. if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then
  78. AC_MSG_ERROR([you don't seem to have GNU make; it is required])
  79. fi
  80.  
  81. sinclude(coroysync-default.m4)
  82.  
  83. AC_PROG_CC
  84. AC_PROG_CXX
  85. AC_PROG_INSTALL
  86. AC_PROG_LN_S
  87. AC_PROG_MAKE_SET
  88. AC_PROG_RANLIB
  89. AC_PROG_SED
  90. AC_PROG_LIBTOOL
  91.  
  92. AC_CHECK_PROGS([GROFF], [groff])
  93. AC_CHECK_PROGS([PKGCONFIG], [pkg-config])
  94. AC_CHECK_PROGS([AUGTOOL], [augtool])
  95. AC_CHECK_PROGS([DOT], [dot])
  96. AC_CHECK_PROGS([DOXYGEN], [doxygen])
  97. AC_CHECK_PROGS([AWK], [awk])
  98. AC_CHECK_PROGS([SED], [sed])
  99. AC_PATH_PROG([BASHPATH], [bash])
  100.  
  101. # Checks for compiler characteristics.
  102. AC_PROG_GCC_TRADITIONAL
  103. AC_C_CONST
  104. AC_C_INLINE
  105. AC_C_VOLATILE
  106.  
  107. # Checks for header files.
  108. AC_HEADER_DIRENT
  109. AC_HEADER_STDC
  110. AC_HEADER_SYS_WAIT
  111. AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdint.h \
  112. stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h \
  113. sys/time.h syslog.h unistd.h sys/types.h getopt.h malloc.h \
  114. utmpx.h ifaddrs.h stddef.h sys/file.h sys/uio.h])
  115.  
  116. # Check entries in specific structs
  117. AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
  118. [AC_DEFINE_UNQUOTED([HAVE_SOCK_SIN_LEN], [1], [sockaddr_in needs sin_len])],
  119. [], [[#include <netinet/in.h>]])
  120. AC_CHECK_MEMBER([struct sockaddr_in6.sin6_len],
  121. [AC_DEFINE_UNQUOTED([HAVE_SOCK_SIN6_LEN], [1], [sockaddr_in6 needs sin6_len])],
  122. [], [[#include <netinet/in.h>]])
  123. AC_CHECK_MEMBER([struct msghdr.msg_control],
  124. [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_CONTROL], [1], [msghdr has msg_control])],
  125. [], [[#include <sys/socket.h>]])
  126. AC_CHECK_MEMBER([struct msghdr.msg_controllen],
  127. [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_CONTROLLEN], [1], [msghdr has msg_controllen])],
  128. [], [[#include <sys/socket.h>]])
  129. AC_CHECK_MEMBER([struct msghdr.msg_flags],
  130. [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_FLAGS], [1], [msghdr has msg_flags])],
  131. [], [[#include <sys/socket.h>]])
  132. AC_CHECK_MEMBER([struct msghdr.msg_accrights],
  133. [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_ACCRIGHTS], [1], [msghdr has msg_accrights])],
  134. [], [[#include <sys/socket.h>]])
  135. AC_CHECK_MEMBER([struct msghdr.msg_accrightslen],
  136. [AC_DEFINE_UNQUOTED([HAVE_MSGHDR_ACCRIGHTSLEN], [1], [msghdr has msg_accrightslen])],
  137. [], [[#include <sys/socket.h>]])
  138.  
  139. # Checks for typedefs.
  140. AC_TYPE_UID_T
  141. AC_TYPE_INT16_T
  142. AC_TYPE_INT32_T
  143. AC_TYPE_INT64_T
  144. AC_TYPE_INT8_T
  145. AC_TYPE_UINT16_T
  146. AC_TYPE_UINT32_T
  147. AC_TYPE_UINT64_T
  148. AC_TYPE_UINT8_T
  149. AC_TYPE_SIZE_T
  150. AC_TYPE_SSIZE_T
  151. AC_TYPE_SIGNAL
  152.  
  153. # Checks for libraries.
  154. PKG_CHECK_MODULES([nss],[nss])
  155. PKG_CHECK_MODULES([LIBQB], [libqb])
  156. AC_CHECK_LIB([qb], [qb_log_thread_priority_set], \
  157. have_qb_log_thread_priority_set="yes", \
  158. have_qb_log_thread_priority_set="no")
  159. if test "x${have_qb_log_thread_priority_set}" = xyes; then
  160. AC_DEFINE_UNQUOTED([HAVE_QB_LOG_THREAD_PRIORITY_SET], 1, [have qb_log_thread_priority_set])
  161. fi
  162. AC_CHECK_LIB([pthread], [pthread_create])
  163. AC_CHECK_LIB([socket], [socket])
  164. AC_CHECK_LIB([nsl], [t_open])
  165. AC_CHECK_LIB([rt], [sched_getscheduler])
  166.  
  167. # Checks for library functions.
  168. AC_FUNC_ALLOCA
  169. AC_FUNC_CLOSEDIR_VOID
  170. AC_FUNC_ERROR_AT_LINE
  171. AC_FUNC_FORK
  172. AC_FUNC_MALLOC
  173. AC_FUNC_MEMCMP
  174. AC_FUNC_MMAP
  175. AC_FUNC_REALLOC
  176. AC_FUNC_SELECT_ARGTYPES
  177. AC_FUNC_VPRINTF
  178.  
  179. AC_CHECK_FUNCS([alarm alphasort atexit bzero dup2 endgrent endpwent fcntl \
  180. getcwd getpeerucred getpeereid gettimeofday inet_ntoa memmove \
  181. memset mkdir scandir select socket strcasecmp strchr strdup \
  182. strerror strrchr strspn strstr pthread_setschedparam \
  183. sched_get_priority_max sched_setscheduler getifaddrs \
  184. clock_gettime ftruncate gethostname localtime_r munmap strtol])
  185.  
  186. AC_CONFIG_FILES([Makefile
  187. exec/Makefile
  188. include/Makefile
  189. init/Makefile
  190. lib/Makefile
  191. common_lib/Makefile
  192. man/Makefile
  193. pkgconfig/Makefile
  194. test/Makefile
  195. cts/Makefile
  196. cts/agents/Makefile
  197. cts/CTSvars.py
  198. tools/Makefile
  199. conf/Makefile
  200. qdevices/Makefile
  201. Doxyfile])
  202.  
  203. ### Local business
  204.  
  205. dnl ===============================================
  206. dnl Functions / global M4 variables
  207. dnl ===============================================
  208. dnl Global list of LIB names
  209. m4_define([local_soname_list], [])dnl
  210.  
  211. dnl Upcase parameter
  212. m4_define([local_upcase], [translit([$*], [a-z], [A-Z])])dnl
  213.  
  214. dnl M4 macro for include lib/lib$1.soname and subst that
  215. m4_define([LIB_SONAME_IMPORT],[dnl
  216. m4_define([local_libname], local_upcase($1)[_SONAME])dnl
  217. m4_define([local_soname], translit(m4_sinclude(lib/lib$1.verso), [
  218. ], []))dnl
  219. local_libname="local_soname"dnl
  220. m4_define([local_soname_list], m4_defn([local_soname_list])[,]local_libname[,]local_upcase($1))dnl
  221. AC_SUBST(local_libname)dnl
  222. ])dnl
  223.  
  224. dnl M4 macro for print padspaces (used in LIB_MSG_RESULT). It takes 2 arguments, length of string to pad and desired
  225. dnl (padded) length
  226. m4_define([m4_printpadspace],[ifelse(m4_eval([$2 - $1 < 1]),[1],,[ ][m4_printpadspace([$1],m4_eval([$2 - 1]))])])dnl
  227.  
  228. dnl Show AC_MSG_RESULT for specific libraries
  229. m4_define([LIB_MSG_RESULT], [ifelse([$#], [1], ,[dnl
  230. AC_MSG_RESULT([ $2 Library SONAME m4_printpadspace(len($2),8) = ${$1}])
  231. LIB_MSG_RESULT(m4_shift(m4_shift($@)))dnl
  232. ])])dnl
  233.  
  234. # ===============================================
  235. # Helpers
  236. # ===============================================
  237.  
  238. ## helper for CC stuff
  239. cc_supports_flag() {
  240. BACKUP="$CPPFLAGS"
  241. CPPFLAGS="$CPPFLAGS $@"
  242. AC_MSG_CHECKING([whether $CC supports "$@"])
  243. AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
  244. [RC=0; AC_MSG_RESULT([yes])],
  245. [RC=1; AC_MSG_RESULT([no])])
  246. CPPFLAGS="$BACKUP"
  247. return $RC
  248. }
  249.  
  250. ## cleanup
  251. AC_MSG_NOTICE(Sanitizing prefix: ${prefix})
  252. case $prefix in
  253. NONE) prefix=/usr/local;;
  254. esac
  255.  
  256. AC_MSG_NOTICE(Sanitizing exec_prefix: ${exec_prefix})
  257. case $exec_prefix in
  258. dnl For consistency with Corosync, map NONE->$prefix
  259. NONE) exec_prefix=$prefix;;
  260. prefix) exec_prefix=$prefix;;
  261. esac
  262.  
  263. ## local defines
  264. PACKAGE_FEATURES=""
  265.  
  266. LINT_FLAGS="-weak -unrecog +posixlib +ignoresigns -fcnuse \
  267. -badflag -D__gnuc_va_list=va_list -D__attribute\(x\)="
  268.  
  269. # default libraries SONAME
  270. SOMAJOR="5"
  271. SOMINOR="0"
  272. SOMICRO="0"
  273. SONAME="${SOMAJOR}.${SOMINOR}.${SOMICRO}"
  274.  
  275. # specific libraries SONAME
  276. LIB_SONAME_IMPORT([cfg])
  277. LIB_SONAME_IMPORT([cpg])
  278. LIB_SONAME_IMPORT([quorum])
  279. LIB_SONAME_IMPORT([sam])
  280. LIB_SONAME_IMPORT([votequorum])
  281. LIB_SONAME_IMPORT([cmap])
  282.  
  283. # local options
  284. AC_ARG_ENABLE([ansi],
  285. [ --enable-ansi : force to build with ANSI standards. ],
  286. [ default="no" ])
  287.  
  288. AC_ARG_ENABLE([fatal-warnings],
  289. [ --enable-fatal-warnings : enable fatal warnings. ],
  290. [ default="no" ])
  291.  
  292. AC_ARG_ENABLE([debug],
  293. [ --enable-debug : enable debug build. ],
  294. [ default="no" ])
  295.  
  296. AC_ARG_ENABLE([secure-build],
  297. [ --enable-secure-build : enable PIE/RELRO build. ],
  298. [],
  299. [enable_secure_build="yes"])
  300.  
  301. AC_ARG_ENABLE([user-flags],
  302. [ --enable-user-flags : rely on user environment. ],
  303. [ default="no" ])
  304.  
  305. AC_ARG_ENABLE([coverage],
  306. [ --enable-coverage : coverage analysis of the codebase. ],
  307. [ default="no" ])
  308.  
  309. AC_ARG_ENABLE([small-memory-footprint],
  310. [ --enable-small-memory-footprint : Use small message queues and small messages sizes. ],
  311. [ default="no" ])
  312.  
  313. AC_ARG_ENABLE([dbus],
  314. [ --enable-dbus : dbus events. ],,
  315. [ enable_dbus="no" ])
  316.  
  317. AC_ARG_ENABLE([testagents],
  318. [ --enable-testagents : Install Test Agents. ],,
  319. [ default="no" ])
  320.  
  321. AC_ARG_ENABLE([rdma],
  322. [ --enable-rdma : Infiniband RDMA transport support ],,
  323. [ enable_rdma="no" ])
  324. AM_CONDITIONAL(BUILD_RDMA, test x$enable_rdma = xyes)
  325.  
  326. AC_ARG_ENABLE([monitoring],
  327. [ --enable-monitoring : resource monitoring ],,
  328. [ default="no" ])
  329. AM_CONDITIONAL(BUILD_MONITORING, test x$enable_monitoring = xyes)
  330.  
  331. AC_ARG_ENABLE([watchdog],
  332. [ --enable-watchdog : Watchdog support ],,
  333. [ default="no" ])
  334. AM_CONDITIONAL(BUILD_WATCHDOG, test x$enable_watchdog = xyes)
  335.  
  336. AC_ARG_ENABLE([augeas],
  337. [ --enable-augeas : Install the augeas lens for corosync.conf ],,
  338. [ enable_augeas="no" ])
  339. AM_CONDITIONAL(INSTALL_AUGEAS, test x$enable_augeas = xyes)
  340.  
  341. AC_ARG_ENABLE([systemd],
  342. [ --enable-systemd : Install systemd service files],,
  343. [ enable_systemd="no" ])
  344. AM_CONDITIONAL(INSTALL_SYSTEMD, test x$enable_systemd = xyes)
  345.  
  346. AC_ARG_ENABLE([upstart],
  347. [ --enable-upstart : Install upstart service files],,
  348. [ enable_upstart="no" ])
  349. AM_CONDITIONAL(INSTALL_UPSTART, test x$enable_upstart = xyes)
  350.  
  351. AC_ARG_WITH([initddir],
  352. [ --with-initddir=DIR : path to init script directory. ],
  353. [ INITDDIR="$withval" ],
  354. [ INITDDIR="$sysconfdir/init.d" ])
  355.  
  356. AC_ARG_WITH([systemddir],
  357. [ --with-systemddir=DIR : path to systemd unit files directory. ],
  358. [ SYSTEMDDIR="$withval" ],
  359. [ SYSTEMDDIR="/lib/systemd/system" ])
  360.  
  361. AC_ARG_WITH([upstartdir],
  362. [ --with-upstartdir=DIR : path to upstart config files directory. ],
  363. [ UPSTARTDIR="$withval" ],
  364. [ UPSTARTDIR="$sysconfdir/init" ])
  365.  
  366. AC_ARG_WITH([initwrappersdir],
  367. [ --with-initwrappersdir=DIR : path to init wrappers files directory. ],
  368. [ INITWRAPPERSDIR="$withval" ],
  369. [ INITWRAPPERSDIR="$datarootdir/corosync" ])
  370.  
  371. AC_ARG_ENABLE([snmp],
  372. [ --enable-snmp : SNMP protocol support ],
  373. [ default="no" ])
  374.  
  375. AC_ARG_ENABLE([xmlconf],
  376. [ --enable-xmlconf : XML configuration support ],,
  377. [ enable_xmlconf="no" ])
  378. AM_CONDITIONAL(INSTALL_XMLCONF, test x$enable_xmlconf = xyes)
  379.  
  380. AC_ARG_ENABLE([qdevices],
  381. [ --enable-qdevices : Quorum devices support ],,
  382. [ enable_qdevices="no" ])
  383. AM_CONDITIONAL(BUILD_QDEVICES, test x$enable_qdevices = xyes)
  384.  
  385. # *FLAGS handling goes here
  386.  
  387. ENV_CFLAGS="$CFLAGS"
  388. ENV_CPPFLAGS="$CPPFLAGS"
  389. ENV_LDFLAGS="$LDFLAGS"
  390.  
  391. # debug build stuff
  392. if test "x${enable_debug}" = xyes; then
  393. AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
  394. OPT_CFLAGS="-O0"
  395. PACKAGE_FEATURES="$PACKAGE_FEATURES debug"
  396. else
  397. OPT_CFLAGS="-O3"
  398. fi
  399.  
  400. # gdb flags
  401. if test "x${GCC}" = xyes; then
  402. GDB_FLAGS="-ggdb3"
  403. else
  404. GDB_FLAGS="-g"
  405. fi
  406.  
  407. # Look for dbus-1
  408. if test "x${enable_dbus}" = xyes; then
  409. PKG_CHECK_MODULES([DBUS],[dbus-1])
  410. AC_DEFINE_UNQUOTED([HAVE_DBUS], 1, [have dbus])
  411. PACKAGE_FEATURES="$PACKAGE_FEATURES dbus"
  412. WITH_LIST="$WITH_LIST --with dbus"
  413. fi
  414.  
  415. if test "x${enable_testagents}" = xyes; then
  416. AC_DEFINE_UNQUOTED([HAVE_TESTAGENTS], 1, [have testagents])
  417. PACKAGE_FEATURES="$PACKAGE_FEATURES testagents"
  418. WITH_LIST="$WITH_LIST --with testagents"
  419. fi
  420.  
  421. if test "x${enable_rdma}" = xyes; then
  422. PKG_CHECK_MODULES([rdmacm],[rdmacm])
  423. PKG_CHECK_MODULES([ibverbs],[ibverbs])
  424. AC_DEFINE_UNQUOTED([HAVE_RDMA], 1, [have rdmacm])
  425. PACKAGE_FEATURES="$PACKAGE_FEATURES rdma"
  426. WITH_LIST="$WITH_LIST --with rdma"
  427. fi
  428.  
  429. if test "x${enable_monitoring}" = xyes; then
  430. PKG_CHECK_MODULES([statgrab], [libstatgrab])
  431. AC_DEFINE_UNQUOTED([HAVE_MONITORING], 1, [have resource monitoring])
  432. PACKAGE_FEATURES="$PACKAGE_FEATURES monitoring"
  433. WITH_LIST="$WITH_LIST --with monitoring"
  434. fi
  435.  
  436. if test "x${enable_watchdog}" = xyes; then
  437. AC_CHECK_HEADER([linux/watchdog.h], [], [AC_MSG_ERROR([watchdog requires linux/watchdog.h])])
  438. AC_CHECK_HEADER([linux/reboot.h], [], [AC_MSG_ERROR([watchdog requires linux/reboot.h])])
  439. AC_DEFINE_UNQUOTED([HAVE_WATCHDOG], 1, [have watchdog])
  440. PACKAGE_FEATURES="$PACKAGE_FEATURES watchdog"
  441. WITH_LIST="$WITH_LIST --with watchdog"
  442. fi
  443.  
  444. if test "x${enable_augeas}" = xyes; then
  445. PACKAGE_FEATURES="$PACKAGE_FEATURES augeas"
  446. fi
  447. if test "x${enable_systemd}" = xyes; then
  448. PACKAGE_FEATURES="$PACKAGE_FEATURES systemd"
  449. WITH_LIST="$WITH_LIST --with systemd"
  450. fi
  451. if test "x${enable_upstart}" = xyes; then
  452. PACKAGE_FEATURES="$PACKAGE_FEATURES upstart"
  453. WITH_LIST="$WITH_LIST --with upstart"
  454. fi
  455. if test "x${enable_xmlconf}" = xyes; then
  456. PACKAGE_FEATURES="$PACKAGE_FEATURES xmlconf"
  457. WITH_LIST="$WITH_LIST --with xmlconf"
  458. fi
  459. if test "x${enable_qdevices}" = xyes; then
  460. PACKAGE_FEATURES="$PACKAGE_FEATURES qdevices"
  461. fi
  462.  
  463. do_snmp=0
  464. if test "x${enable_snmp}" = xyes; then
  465. AC_PATH_PROGS([SNMPCONFIG], [net-snmp-config])
  466.  
  467. if test "x${SNMPCONFIG}" != "x"; then
  468. AC_MSG_CHECKING([for snmp includes])
  469. SNMP_PREFIX=`$SNMPCONFIG --prefix`
  470. SNMP_INCLUDES="-I$SNMP_PREFIX/include"
  471. AC_MSG_RESULT([$SNMP_INCLUDES])
  472.  
  473. AC_MSG_CHECKING([for snmp libraries])
  474. SNMP_LIBS=`$SNMPCONFIG --libs`
  475. AC_MSG_RESULT([$SNMP_LIBS])
  476. AC_SUBST([SNMP_LIBS])
  477.  
  478. saveCFLAGS="$CFLAGS"
  479. CFLAGS="$CFLAGS $SNMP_INCLUDES"
  480. AC_CHECK_HEADERS([net-snmp/net-snmp-config.h])
  481. CFLAGS="$saveCFLAGS"
  482.  
  483. if test "x${ac_cv_header_net_snmp_net_snmp_config_h}" != "xyes"; then
  484. AC_MSG_ERROR([Unable to use net-snmp/net-snmp-config.h])
  485. fi
  486.  
  487. savedLibs=$LIBS
  488. LIBS="$LIBS $SNMP_LIBS"
  489. AC_CHECK_FUNCS([netsnmp_transport_open_client])
  490. if test $ac_cv_func_netsnmp_transport_open_client != yes; then
  491. AC_CHECK_FUNCS([netsnmp_tdomain_transport])
  492. if test $ac_cv_func_netsnmp_tdomain_transport != yes; then
  493. AC_MSG_ERROR([No usable SNMP client transport implementation found])
  494. fi
  495. else
  496. AC_DEFINE_UNQUOTED([NETSNMPV54], $NETSNMP_NEW_SUPPORT, [have net-snmp5.4 over])
  497. fi
  498. LIBS=$savedLibs
  499.  
  500. do_snmp=1
  501. PACKAGE_FEATURES="$PACKAGE_FEATURES snmp"
  502. WITH_LIST="$WITH_LIST --with snmp"
  503. AC_DEFINE_UNQUOTED([ENABLE_SNMP], $do_snmp, [Build in support for sending SNMP traps])
  504. else
  505. AC_MSG_ERROR([You need the net_snmp development package to continue.])
  506. fi
  507. fi
  508. AM_CONDITIONAL(BUILD_SNMP, test "${do_snmp}" = "1")
  509.  
  510. # extra warnings
  511. EXTRA_WARNINGS=""
  512.  
  513. WARNLIST="
  514. all
  515. shadow
  516. missing-prototypes
  517. missing-declarations
  518. strict-prototypes
  519. declaration-after-statement
  520. pointer-arith
  521. write-strings
  522. cast-align
  523. bad-function-cast
  524. missing-format-attribute
  525. format=2
  526. format-security
  527. format-nonliteral
  528. no-long-long
  529. unsigned-char
  530. gnu89-inline
  531. no-strict-aliasing
  532. "
  533.  
  534. for j in $WARNLIST; do
  535. if cc_supports_flag -W$j; then
  536. EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
  537. fi
  538. done
  539.  
  540. if test "x${enable_coverage}" = xyes && \
  541. cc_supports_flag -ftest-coverage && \
  542. cc_supports_flag -fprofile-arcs ; then
  543. AC_MSG_NOTICE([Enabling Coverage (enable -O0 by default)])
  544. OPT_CFLAGS="-O0"
  545. COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs"
  546. COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs"
  547. PACKAGE_FEATURES="$PACKAGE_FEATURES coverage"
  548. else
  549. COVERAGE_CFLAGS=""
  550. COVERAGE_LDFLAGS=""
  551. fi
  552.  
  553. if test "x${enable_small_memory_footprint}" = xyes ; then
  554. AC_DEFINE_UNQUOTED([HAVE_SMALL_MEMORY_FOOTPRINT], 1, [have small_memory_footprint])
  555. PACKAGE_FEATURES="$PACKAGE_FEATURES small-memory-footprint"
  556. fi
  557.  
  558. if test "x${enable_ansi}" = xyes && \
  559. cc_supports_flag -std=iso9899:199409 ; then
  560. AC_MSG_NOTICE([Enabling ANSI Compatibility])
  561. ANSI_CPPFLAGS="-ansi -DANSI_ONLY"
  562. PACKAGE_FEATURES="$PACKAGE_FEATURES ansi"
  563. else
  564. ANSI_CPPFLAGS=""
  565. fi
  566.  
  567. if test "x${enable_fatal_warnings}" = xyes && \
  568. cc_supports_flag -Werror ; then
  569. AC_MSG_NOTICE([Enabling Fatal Warnings (-Werror)])
  570. WERROR_CFLAGS="-Werror"
  571. PACKAGE_FEATURES="$PACKAGE_FEATURES fatal-warnings"
  572. else
  573. WERROR_CFLAGS=""
  574. fi
  575.  
  576. # don't add addtional cflags
  577. if test "x${enable_user_flags}" = xyes; then
  578. OPT_CFLAGS=""
  579. GDB_FLAGS=""
  580. EXTRA_WARNINGS=""
  581. fi
  582.  
  583. if test "x${enable_secure_build}" = xyes; then
  584. # stolen from apache configure snippet
  585. AC_CACHE_CHECK([whether $CC accepts PIE flags], [ap_cv_cc_pie], [
  586. save_CFLAGS=$CFLAGS
  587. save_LDFLAGS=$LDFLAGS
  588. CFLAGS="$CFLAGS -fPIE"
  589. LDFLAGS="$LDFLAGS -pie"
  590. AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
  591. [ap_cv_cc_pie=yes], [ap_cv_cc_pie=no], [ap_cv_cc_pie=yes])
  592. CFLAGS=$save_CFLAGS
  593. LDFLAGS=$save_LDFLAGS
  594. ])
  595. if test "$ap_cv_cc_pie" = "yes"; then
  596. SEC_FLAGS="$SEC_FLAGS -fPIE"
  597. SEC_LDFLAGS="$SEC_LDFLAGS -pie"
  598. PACKAGE_FEATURES="$PACKAGE_FEATURES pie"
  599. fi
  600.  
  601. # similar to above
  602. AC_CACHE_CHECK([whether $CC accepts RELRO flags], [ap_cv_cc_relro], [
  603. save_LDFLAGS=$LDFLAGS
  604. LDFLAGS="$LDFLAGS -Wl,-z,relro"
  605. AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
  606. [ap_cv_cc_relro=yes], [ap_cv_cc_relro=no], [ap_cv_cc_relro=yes])
  607. LDFLAGS=$save_LDFLAGS
  608. ])
  609. if test "$ap_cv_cc_relro" = "yes"; then
  610. SEC_LDFLAGS="$SEC_LDFLAGS -Wl,-z,relro"
  611. PACKAGE_FEATURES="$PACKAGE_FEATURES relro"
  612. fi
  613.  
  614. AC_CACHE_CHECK([whether $CC accepts BINDNOW flags], [ap_cv_cc_bindnow], [
  615. save_LDFLAGS=$LDFLAGS
  616. LDFLAGS="$LDFLAGS -Wl,-z,now"
  617. AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
  618. [ap_cv_cc_bindnow=yes], [ap_cv_cc_bindnow=no], [ap_cv_cc_bindnow=yes])
  619. LDFLAGS=$save_LDFLAGS
  620. ])
  621. if test "$ap_cv_cc_bindnow" = "yes"; then
  622. SEC_LDFLAGS="$SEC_LDFLAGS -Wl,-z,now"
  623. PACKAGE_FEATURES="$PACKAGE_FEATURES bindnow"
  624. fi
  625. fi
  626.  
  627. AC_CACHE_CHECK([whether $CC accepts "--as-needed"], [ap_cv_cc_as_needed], [
  628. save_LDFLAGS=$LDFLAGS
  629. LDFLAGS="$LDFLAGS -Wl,--as-needed"
  630. AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
  631. [ap_cv_cc_as_needed=yes], [ap_cv_cc_as_needed=no], [ap_cv_cc_as_needed=yes])
  632. LDFLAGS=$save_LDFLAGS
  633. ])
  634.  
  635. AC_CACHE_CHECK([whether $CC accepts "--version-script"], [ap_cv_cc_version_script], [
  636. save_LDFLAGS=$LDFLAGS
  637. LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.versions"
  638. echo "CONFTEST { };" >conftest.versions
  639. AC_TRY_RUN([static int foo[30000]; int main () { return 0; }],
  640. [ap_cv_cc_version_script=yes], [ap_cv_cc_version_script=no], [ap_cv_cc_version_script=yes])
  641. rm -f conftest.versions
  642. LDFLAGS=$save_LDFLAGS
  643. ])
  644. if test "$ap_cv_cc_version_script" = "yes"; then
  645. AC_SUBST(VERSCRIPT_LDFLAGS, ["-Wl,--version-script=\$(srcdir)/lib\$(call get_libname,\$<).versions"])
  646. else
  647. AC_SUBST(VERSCRIPT_LDFLAGS, [""])
  648. fi
  649.  
  650. # define global include dirs
  651. INCLUDE_DIRS="$INCLUDE_DIRS -I\$(top_builddir)/include -I\$(top_srcdir)/include"
  652. INCLUDE_DIRS="$INCLUDE_DIRS -I\$(top_builddir)/include/corosync -I\$(top_srcdir)/include/corosync"
  653.  
  654. # final build of *FLAGS
  655. CFLAGS="$ENV_CFLAGS $lt_prog_compiler_pic $SEC_FLAGS $OPT_CFLAGS $GDB_FLAGS \
  656. $COVERAGE_CFLAGS $EXTRA_WARNINGS \
  657. $WERROR_CFLAGS $NSS_CFLAGS $LIBQB_CFLAGS \
  658. $SNMP_INCLUDES"
  659. CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS $INCLUDE_DIRS"
  660. LDFLAGS="$ENV_LDFLAGS $lt_prog_compiler_pic $SEC_LDFLAGS $COVERAGE_LDFLAGS"
  661.  
  662. if test "$ap_cv_cc_as_needed" = "yes"; then
  663. LDFLAGS="$LDFLAGS -Wl,--as-needed"
  664. fi
  665.  
  666. # substitute what we need:
  667. AC_SUBST([BASHPATH])
  668. AC_SUBST([INITDDIR])
  669. AC_SUBST([SYSTEMDDIR])
  670. AC_SUBST([UPSTARTDIR])
  671. INITWRAPPERSDIR=$(eval echo ${INITWRAPPERSDIR})
  672. AC_SUBST([INITWRAPPERSDIR])
  673.  
  674. AC_SUBST([SOMAJOR])
  675. AC_SUBST([SOMINOR])
  676. AC_SUBST([SOMICRO])
  677. AC_SUBST([SONAME])
  678.  
  679. AM_CONDITIONAL(INSTALL_TESTAGENTS, test "${enable_testagents}" = "yes")
  680. AM_CONDITIONAL(INSTALL_MIB, test "${do_snmp}" = "1")
  681. AM_CONDITIONAL(INSTALL_DBUSCONF, test "${enable_dbus}" = "yes")
  682. AM_CONDITIONAL(AUGTOOL, test -n "${AUGTOOL}")
  683. AC_SUBST([NSS_LDFLAGS])
  684.  
  685. AM_CONDITIONAL(BUILD_HTML_DOCS, test -n "${GROFF}")
  686.  
  687. AC_SUBST([LINT_FLAGS])
  688.  
  689. AC_DEFINE_UNQUOTED([LOCALSTATEDIR], "$(eval echo ${localstatedir})", [localstate directory])
  690.  
  691. COROSYSCONFDIR=${sysconfdir}/corosync
  692. AC_SUBST([COROSYSCONFDIR])
  693. AC_DEFINE_UNQUOTED([COROSYSCONFDIR], "$(eval echo ${COROSYSCONFDIR})", [corosync config directory])
  694.  
  695. AC_DEFINE_UNQUOTED([PACKAGE_FEATURES], "${PACKAGE_FEATURES}", [corosync built-in features])
  696.  
  697. AC_OUTPUT
  698.  
  699. AC_MSG_RESULT([])
  700. AC_MSG_RESULT([$PACKAGE configuration:])
  701. AC_MSG_RESULT([ Version = ${VERSION}])
  702. AC_MSG_RESULT([ Prefix = ${prefix}])
  703. AC_MSG_RESULT([ Executables = ${sbindir}])
  704. AC_MSG_RESULT([ Man pages = ${mandir}])
  705. AC_MSG_RESULT([ Doc dir = ${docdir}])
  706. AC_MSG_RESULT([ Libraries = ${libdir}])
  707. AC_MSG_RESULT([ Header files = ${includedir}])
  708. AC_MSG_RESULT([ Arch-independent files = ${datadir}])
  709. AC_MSG_RESULT([ State information = ${localstatedir}])
  710. AC_MSG_RESULT([ System configuration = ${sysconfdir}])
  711. AC_MSG_RESULT([ System init.d directory = ${INITDDIR}])
  712. AC_MSG_RESULT([ System systemd directory = ${SYSTEMDDIR}])
  713. AC_MSG_RESULT([ System upstart directory = ${UPSTARTDIR}])
  714. AC_MSG_RESULT([ System init wraps dir = ${INITWRAPPERSDIR}])
  715. AC_MSG_RESULT([ corosync config dir = ${COROSYSCONFDIR}])
  716. AC_MSG_RESULT([ Features =${PACKAGE_FEATURES}])
  717. AC_MSG_RESULT([])
  718. AC_MSG_RESULT([$PACKAGE build info:])
  719. AC_MSG_RESULT([ Library SONAME = ${SONAME}])
  720. LIB_MSG_RESULT(m4_shift(local_soname_list))dnl
  721. AC_MSG_RESULT([ Default optimization = ${OPT_CFLAGS}])
  722. AC_MSG_RESULT([ Default debug options = ${GDB_CFLAGS}])
  723. AC_MSG_RESULT([ Extra compiler warnings = ${EXTRA_WARNING}])
  724. AC_MSG_RESULT([ Env. defined CFLAG = ${ENV_CFLAGS}])
  725. AC_MSG_RESULT([ Env. defined CPPFLAGS = ${ENV_CPPFLAGS}])
  726. AC_MSG_RESULT([ Env. defined LDFLAGS = ${ENV_LDFLAGS}])
  727. AC_MSG_RESULT([ ANSI defined CPPFLAGS = ${ANSI_CPPFLAGS}])
  728. AC_MSG_RESULT([ Coverage CFLAGS = ${COVERAGE_CFLAGS}])
  729. AC_MSG_RESULT([ Coverage LDFLAGS = ${COVERAGE_LDFLAGS}])
  730. AC_MSG_RESULT([ Fatal War. CFLAGS = ${WERROR_CFLAGS}])
  731. AC_MSG_RESULT([ Final CFLAGS = ${CFLAGS}])
  732. AC_MSG_RESULT([ Final CPPFLAGS = ${CPPFLAGS}])
  733. AC_MSG_RESULT([ Final LDFLAGS = ${LDFLAGS}])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement