3 # (C) 2007 - Ivana Varekova <varekova@redhat.com>
4 # Modified by Sebastien Godard (sysstat <at> orange.fr)
6 # Initialization of $PACKAGE_VERSION and $PACKAGE_NAME variables
7 AC_INIT(sysstat, 12.3.2)
9 # Ensure that a recent enough version of Autoconf is being used
12 # Check whether the configure script is in the right dir
13 AC_CONFIG_SRCDIR(ioconf.h)
26 AC_CHECK_PROG(CHMOD, chmod, chmod)
27 AC_CHECK_PROG(CHOWN, chown, chown)
28 AC_CHECK_PROG(AR, ar, ar)
29 AC_CHECK_PROG(INSTALL, install, install)
30 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt)
31 AC_CHECK_PROG(XGETTEXT, xgettext, xgettext)
32 AC_CHECK_PROG(MSGMERGE, msgmerge, msgmerge)
33 AC_CHECK_PROG(VER_XML, xmllint, xmllint)
34 AC_CHECK_PROGS(VER_JSON, json_verify json_pp, true)
35 AC_CHECK_PROGS(ZIP, xz bzip2 gzip, gzip)
36 INSTALL_DATA="\${INSTALL} -m 644"
37 AC_SUBST(INSTALL_DATA)
38 INSTALL_BIN="\${INSTALL} -m 755"
44 AC_PATH_PROG(PATH_CP, cp)
45 AC_PATH_PROG(PATH_CHKCONFIG, chkconfig)
48 AC_CHECK_PROG(PKG_CONFIG, pkg-config, pkg-config)
49 AC_PATH_PROG(SYSTEMCTL, systemctl)
50 AC_ARG_WITH([systemdsystemunitdir],
51 AS_HELP_STRING([--with-systemdsystemunitdir=DIR],[Directory for systemd service files]),
52 [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
53 if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then
54 AC_SUBST([SYSTEMD_UNIT_DIR], [$with_systemdsystemunitdir])
61 echo Check header files:
69 AC_CHECK_HEADERS(ctype.h)
70 AC_CHECK_HEADERS(errno.h)
71 AC_CHECK_HEADERS(libintl.h, HAVE_LIBINTL_H=1)
72 AC_CHECK_HEADERS(locale.h, HAVE_LOCALE_H=1)
73 AC_CHECK_HEADERS(linux/sched.h, HAVE_LINUX_SCHED_H=1)
74 AC_CHECK_HEADERS(net/if.h)
75 AC_CHECK_HEADERS(regex.h)
76 AC_CHECK_HEADERS(signal.h)
77 AC_CHECK_HEADERS(stdio.h)
78 AC_CHECK_HEADERS(stdint.h)
79 AC_CHECK_HEADERS(fcntl.h)
80 AC_CHECK_HEADERS(inttypes.h)
81 AC_CHECK_HEADERS(libgen.h)
82 AC_CHECK_HEADERS(pwd.h)
83 AC_CHECK_HEADERS(time.h)
84 AC_CHECK_HEADERS(unistd.h)
85 AC_CHECK_HEADERS(pcp/pmapi.h, HAVE_PCP_PMAPI_H=1)
86 AC_CHECK_HEADERS(pcp/impl.h, HAVE_PCP_IMPL_H=1)
87 AC_CHECK_HEADERS(sys/time.h)
88 AC_CHECK_HEADERS(sys/statvfs.h)
89 AC_CHECK_HEADERS(sys/types.h)
90 AC_CHECK_HEADERS(sys/file.h)
91 AC_CHECK_HEADERS(sys/ioctl.h)
92 AC_CHECK_HEADERS(sys/param.h, HAVE_SYS_PARAM_H=1)
93 AC_CHECK_HEADERS(sys/stat.h)
94 AC_CHECK_HEADERS(sys/sysmacros.h, HAVE_SYS_SYSMACROS_H=1)
95 AC_CHECK_HEADERS(sys/utsname.h)
98 echo Check typedefs, structures and compiler characteristics:
105 echo Check library functions:
107 AC_CHECK_FUNCS(strchr)
108 AC_CHECK_FUNCS(strcspn)
109 AC_CHECK_FUNCS(strspn)
110 AC_CHECK_FUNCS(strstr)
112 # Should we check for lm_sensors?
113 AC_MSG_CHECKING(for sensors support)
114 AC_ARG_ENABLE(sensors,
115 AC_HELP_STRING([--disable-sensors],
116 [disable sensors support]),
117 SENSORS=$enableval,SENSORS=yes)
118 if test $SENSORS != "yes"; then
123 AC_MSG_RESULT($SENSORS)
125 # Check for lm_sensors
128 if test $HAVE_SENSORS = "y"; then
130 AC_CHECK_LIB(sensors, sensors_get_detected_chips, LFSENSORS="-lsensors", HAVE_SENSORS="n")
131 AC_MSG_CHECKING(for sensors lib)
132 AC_TRY_COMPILE(#include <sensors/sensors.h>
133 #include <sensors/error.h>
134 , sensors_cleanup();,SENSORS=yes; DFSENSORS="-DHAVE_SENSORS", HAVE_SENSORS="n"; SENSORS=no)
135 AC_MSG_RESULT($SENSORS)
137 AC_SUBST(HAVE_SENSORS)
141 # Should we check for PCP support?
142 AC_MSG_CHECKING(for PCP support)
144 AC_HELP_STRING([--disable-pcp],
145 [disable PCP support]),
146 PCP=$enableval,PCP=yes)
147 if test $PCP != "yes"; then
154 if test ! $HAVE_PCP_PMAPI_H; then
158 # Check for PCP libraries
161 if test $HAVE_PCP = "y"; then
163 AC_CHECK_LIB(pcp, pmGetVersion, LFPCP="-lpcp -lpcp_import", HAVE_PCP="n")
164 AC_MSG_CHECKING(for PCP libraries)
165 AC_TRY_COMPILE(#include <pcp/pmapi.h>
166 #include <pcp/import.h>
167 , pmiEnd();,PCP=yes; DFPCP="-DHAVE_PCP", HAVE_PCP="n"; PCP=no)
174 if test $HAVE_PCP_IMPL_H; then
182 echo Check system services:
187 echo Check configuration:
189 # Check arguments used
192 # --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
193 # --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
194 # --disable-largefile omit support for large files
195 # --disable-nls disable National Language Support
196 # --disable-file-attr don't set attributes on files being installed
197 # --enable-install-cron tell sysstat to install cron scripts
198 # --collect-all tell sadc to collect all possible data
199 # --enable-clean-sa-dir clean system activity directory
200 # --enable-compress-manpg compress manual pages
201 # --enable-debuginfo enable debug output (--debuginfo option)
202 # --disable-documentation do not install documentation (man pages...)
203 # --disable-sensors do not link against libsensors even if available
204 # --disable-pcp do not link against PCP libraries even if available
205 # --disable-stripping do not strip object files
206 # --enable-copy-only only copy files when installing sysstat
208 # Some influential environment variables:
209 # rcdir directory where startup scripts are installed
210 # sa_lib_dir sadc, sa1 and sa2 directory
211 # sa_dir system activity daily datafiles directory
212 # sar_dir sar binary location. Used only in sa2 shell script
213 # conf_dir sysstat configuration directory (default is /etc/sysconfig)
214 # conf_file sysstat configuration file (default is sysstat)
215 # history number of daily datafiles to keep (default value is 7)
216 # compressafter number of days after which datafiles are compressed
217 # man_group group for man pages
218 # cron_owner crontab owner
219 # cron_interval crontab sampling interval
220 # sadc_options options to be passed to sadc
222 # Fine tuning the installation directories:
223 # --mandir=DIR man documentation directory [PREFIX/man]
224 # --docdir=DIR other documentation directory [PREFIX/share/doc]
226 # Installation directories:
227 # --prefix=PREFIX install architecture-independent files in PREFIX
229 # --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
233 if test -d /etc/init.d && test ! -L /etc/init.d; then
234 if test -d /etc/init.d/rc2.d; then
242 elif test -d /sbin/init.d; then
244 INIT_DIR=/sbin/init.d
248 INIT_DIR=/etc/rc.d/init.d
252 AC_MSG_CHECKING(run-commands directory)
253 AC_ARG_VAR([rcdir],[run-commands directory])
254 if test x$rcdir != x""; then
255 # Override previous rc directories values
257 INIT_DIR=$rcdir/init.d
260 AC_MSG_RESULT($RC_DIR)
261 if test ! -d $RC_DIR; then
262 echo "INFO: Directory ${RC_DIR} doesn't exist."
263 echo "INFO: Startup scripts won't be installed."
270 if test $HAVE_SYS_SYSMACROS_H; then
277 if test $HAVE_LINUX_SCHED_H; then
282 AC_SUBST(LINUX_SCHED)
284 if test $HAVE_SYS_PARAM_H; then
292 if test $prefix != "NONE"; then
298 SADC_DIR=$AuxPrefix/lib
299 if test -d $AuxPrefix/lib64; then
300 # Verify that this OS is really 64 bit
301 BITS=$(getconf LONG_BIT 2>/dev/null)
303 if test $BITS = 64; then
304 SADC_DIR=$AuxPrefix/lib64
307 # Fallback: look for lm (long mode) flag to know if CPU is 64 bit
308 grep " lm " /proc/cpuinfo >/dev/null 2>&1
310 SADC_DIR=$AuxPrefix/lib64
315 AC_MSG_CHECKING(sadc directory)
316 AC_ARG_VAR([sa_lib_dir],[sadc directory])
317 if test x$sa_lib_dir != x""; then
318 SA_LIB_DIR=$sa_lib_dir
320 SA_LIB_DIR=$SADC_DIR/sa
322 AC_MSG_RESULT($SA_LIB_DIR)
323 if test ! -d $SA_LIB_DIR; then
324 echo "INFO: Directory ${SA_LIB_DIR} will be created during installation stage."
328 # Set system activity directory
329 AC_MSG_CHECKING(system activity directory)
330 AC_ARG_VAR([sa_dir],[system activity directory])
331 if test x$sa_dir != x""; then
336 AC_MSG_RESULT($SA_DIR)
337 if test ! -d $SA_DIR; then
338 echo "INFO: Directory ${SA_DIR} will be created during installation stage."
342 # sar binary location. Used only in sa2 shell script
343 AC_MSG_CHECKING(sar directory)
344 AC_ARG_VAR([sar_dir],[sar directory])
345 if test x$sar_dir != x""; then
350 AC_MSG_RESULT($SAR_DIR)
353 # Set configuration directory
354 AC_MSG_CHECKING(sysstat configuration directory)
355 AC_ARG_VAR([conf_dir],[sysstat configuration directory])
356 if test x$conf_dir != x""; then
357 SYSCONFIG_DIR=$conf_dir
359 SYSCONFIG_DIR=/etc/sysconfig
361 AC_MSG_RESULT($SYSCONFIG_DIR)
362 if test ! -d $SYSCONFIG_DIR; then
363 echo "INFO: Directory ${SYSCONFIG_DIR} will be created during installation stage."
365 AC_SUBST(SYSCONFIG_DIR)
367 # Set configuration directory
368 AC_MSG_CHECKING(sysstat configuration file)
369 AC_ARG_VAR([conf_file],[sysstat configuration file])
370 if test x$conf_file != x""; then
371 SYSCONFIG_FILE=$conf_file
373 SYSCONFIG_FILE=sysstat
375 AC_MSG_RESULT($SYSCONFIG_FILE)
376 AC_SUBST(SYSCONFIG_FILE)
378 # National Language Support
379 AC_MSG_CHECKING(National Language Support)
381 AC_HELP_STRING([--disable-nls],
382 [disable National Language Support]),
383 AUX_NLS=$enableval,AUX_NLS=yes)
384 if test $AUX_NLS != "no" && test $HAVE_LIBINTL_H && test $HAVE_LOCALE_H; then
391 AC_MSG_RESULT($AUX_NLS)
392 AC_CHECK_LIB(intl, gettext, LFINTL="-lintl")
395 if test $AUX_NLS = "yes" && test x$MSGFMT != x"msgfmt"; then
396 echo "WARNING: msgfmt command not found!"
399 if test $AUX_NLS = "yes" && test x$XGETTEXT != x"xgettext"; then
400 echo "WARNING: xgettext command not found!"
403 if test $AUX_NLS = "yes" && test x$MSGMERGE != x"msgmerge"; then
404 echo "WARNING: msgmerge command not found!"
407 if test $NLS = "y" && test $LACKING_GETTEXT = "y"; then
408 echo "WARNING: Disabling NLS"
413 # Data history to keep by sa2
414 AC_MSG_CHECKING(number of daily data files to keep)
415 AC_ARG_VAR([history],[number of daily data files to keep (default value is 7)])
416 if test x$history = x""; then
421 AC_MSG_RESULT($HISTORY)
424 # Number of days after which datafiles are compressed
425 AC_MSG_CHECKING(number of days after which data files are compressed)
426 AC_ARG_VAR([compressafter],[number of days after which data files are compressed (default value is 10)])
427 if test x$compressafter = x""; then
430 COMPRESSAFTER=$compressafter
432 AC_MSG_RESULT($COMPRESSAFTER)
433 AC_SUBST(COMPRESSAFTER)
436 grep ^man: /etc/group >/dev/null 2>&1
443 AC_MSG_CHECKING(group for manual pages)
444 AC_ARG_VAR([man_group],[group for manual pages])
445 if test x$man_group = x""; then
447 AC_MSG_RESULT($MAN_GROUP)
449 grep ^$man_group: /etc/group >/dev/null 2>&1
452 AC_MSG_RESULT($MAN_GROUP)
453 echo "WARNING: Group ${man_group} not found: Using ${GRP} instead"
456 AC_MSG_RESULT($MAN_GROUP)
461 # Don't set attributes on files being installed?
462 AC_MSG_CHECKING(whether attributes should not be set on files being installed)
463 AC_ARG_ENABLE(file-attr,
464 AC_HELP_STRING([--disable-file-attr],
465 [do not set attributes on files being installed]),
466 AUX_IMG=$enableval,AUX_IMG=yes)
467 if test $AUX_IMG != "no"; then
468 IGNORE_FILE_ATTRIBUTES=n
471 IGNORE_FILE_ATTRIBUTES=y
474 AC_MSG_RESULT($AUX_IMG)
475 AC_SUBST(IGNORE_FILE_ATTRIBUTES)
477 # Compress manual pages?
478 AC_MSG_CHECKING(whether manual pages should be compressed)
479 AC_ARG_ENABLE(compress-manpg,
480 AC_HELP_STRING([--enable-compress-manpg],
481 [compress sysstat manual pages]),
482 AUX_MPG=$enableval,AUX_MPG=no)
483 if test $AUX_MPG != "yes"; then
489 AC_MSG_RESULT($AUX_MPG)
490 AC_SUBST(COMPRESS_MANPG)
492 # Check whether sa directory should be cleaned
493 AC_MSG_CHECKING(whether system activity directory should be cleaned)
494 AC_ARG_ENABLE(clean-sa-dir,
495 AC_HELP_STRING([--enable-clean-sa-dir],
496 [clean system activity directory]),
497 AUX_CSD=$enableval,AUX_CSD=no)
498 if test $AUX_CSD != "yes"; then
504 AC_MSG_RESULT($AUX_CSD)
505 AC_SUBST(CLEAN_SA_DIR)
508 AC_MSG_CHECKING(whether cron should start sar automatically)
509 AC_ARG_ENABLE(install-cron,
510 AC_HELP_STRING([--enable-install-cron],
511 [install a crontab to start sar]),
512 INSTALL_CRON=$enableval,INSTALL_CRON=n)
513 if test $INSTALL_CRON != "yes"; then
520 AC_MSG_RESULT($AUX_CRON)
521 AC_SUBST(INSTALL_CRON)
525 if test $INSTALL_CRON = "y"; then
526 AC_MSG_CHECKING(crontab owner)
527 AC_ARG_VAR([cron_owner],[crontab owner])
528 if test x$cron_owner = x""; then
530 AC_MSG_RESULT($CRON_OWNER)
532 grep ^$cron_owner: /etc/passwd >/dev/null 2>&1
535 AC_MSG_RESULT($CRON_OWNER)
536 echo "WARNING: User ${cron_owner} not found: Using ${CUSR} instead."
538 CRON_OWNER=$cron_owner
539 AC_MSG_RESULT($CRON_OWNER)
542 echo "INFO: Crontab for ${CRON_OWNER} will be saved in current directory if necessary"
543 if test $CRON_OWNER = "root"; then
546 REM_CHOWN="# REM_CHOWN"
548 SU_C_OWNER="su $CRON_OWNER -c "
550 # " (ignore this line)
555 AC_MSG_CHECKING(crontab interval)
556 AC_ARG_VAR([cron_interval],[crontab interval])
557 if test x$cron_interval = x""; then
560 CRON_INTERVAL=$cron_interval
562 AC_MSG_RESULT($CRON_INTERVAL)
563 CRON_INTERVAL_SEC=`expr ${CRON_INTERVAL} \* 60`
564 CRON_COUNT=`expr 60 / ${CRON_INTERVAL}`
566 # Check whether sadc should collect all possible activities
567 AC_MSG_CHECKING(whether sadc should collect all possible activities)
568 AC_ARG_ENABLE(collect-all,
569 AC_HELP_STRING([--enable-collect-all],
570 [collect all possible activities]),
571 COLLECT_ALL=$enableval,COLLECT_ALL=n)
572 if test $COLLECT_ALL != "yes"; then
576 COLLECT_ALL="-S XALL"
579 AC_MSG_RESULT($AUX_COLL)
581 AC_MSG_CHECKING(options to be passed to sadc)
582 AC_ARG_VAR([sadc_options],[options to be passed to sadc])
583 if test x"$sadc_options" != x""; then
584 SADC_OPT="$sadc_options"
588 AC_MSG_RESULT($SADC_OPT)
591 # Check whether files should only be copied
592 AC_MSG_CHECKING(whether files should only be copied)
593 AC_ARG_ENABLE(copy-only,
594 AC_HELP_STRING([--enable-copy-only],
595 [only copy files when installing]),
596 OCOPY=$enableval,OCOPY=no)
597 if test $OCOPY != "yes"; then
603 AC_MSG_RESULT($OCOPY)
610 REM_CHOWN="# REM_CHOWN"
612 CRON_INTERVAL_SEC=600
618 AC_SUBST(CRON_INTERVAL)
619 AC_SUBST(CRON_INTERVAL_SEC)
623 AC_SUBST(COLLECT_ALL)
625 # Check whether documentation should be installed
626 AC_MSG_CHECKING(whether documentation should be installed)
627 AC_ARG_ENABLE(documentation,
628 AC_HELP_STRING([--disable-documentation],
629 [do not install documentation]),
630 AUX_DOC=$enableval,AUX_DOC=yes)
631 if test $AUX_DOC != "no"; then
638 AC_MSG_RESULT($AUX_DOC)
639 AC_SUBST(INSTALL_DOC)
641 # Set directory for installing manual pages (see comment in Makefile)
644 # Check whether --debuginfo options should be allowed
645 AC_ARG_ENABLE(debuginfo,
646 AC_HELP_STRING([--enable-debuginfo],
647 [enable debug output (--debuginfo option)]),
648 WITH_DEBUG=yes ; DFLAGS="$DFLAGS -DDEBUG" , WITH_DEBUG=no)
652 # Check whether object files should be stripped
653 AC_MSG_CHECKING(whether object files should be stripped)
654 AC_ARG_ENABLE(stripping,
655 AC_HELP_STRING([--disable-stripping],
656 [do not strip object files]),
657 AUX_STRIP=$enableval,AUX_STRIP=yes)
658 if test $AUX_STRIP != "no"; then
665 AC_MSG_RESULT($AUX_STRIP)
670 echo Now create files:
672 AC_CONFIG_FILES([sa1], [chmod +x sa1]) # Permissions must be changed
673 AC_CONFIG_FILES([sa2], [chmod +x sa2]) # Permissions must be changed
674 AC_CONFIG_FILES([cron/crontab:cron/crontab.sample]) # File must be renamed
675 AC_CONFIG_FILES([sysstat.sysconfig])
676 AC_CONFIG_FILES([version.h:version.in]) # File must be renamed
677 AC_CONFIG_FILES([sysconfig.h:sysconfig.in]) # File must be renamed
678 AC_CONFIG_FILES([cron/sysstat.cron.daily])
679 AC_CONFIG_FILES([cron/sysstat.cron.hourly])
680 AC_CONFIG_FILES([cron/sysstat.crond])
681 AC_CONFIG_FILES([cron/sysstat.crond.sample.in:cron/sysstat.crond.in], [sed s/^/#/ cron/sysstat.crond.sample.in > cron/sysstat.crond.sample])
682 AC_CONFIG_FILES([sysstat], [chmod +x sysstat]) # Permissions must be changed
683 AC_CONFIG_FILES([sysstat.service])
684 AC_CONFIG_FILES([cron/sysstat-collect.service])
685 AC_CONFIG_FILES([cron/sysstat-collect.timer])
686 AC_CONFIG_FILES([cron/sysstat-summary.service])
687 AC_CONFIG_FILES([cron/sysstat-summary.timer])
688 AC_CONFIG_FILES([man/sa1.8:man/sa1.in]) # File must be renamed
689 AC_CONFIG_FILES([man/sa2.8:man/sa2.in]) # File must be renamed
690 AC_CONFIG_FILES([man/sadc.8:man/sadc.in]) # File must be renamed
691 AC_CONFIG_FILES([man/sadf.1:man/sadf.in]) # File must be renamed
692 AC_CONFIG_FILES([man/sar.1:man/sar.in]) # File must be renamed
693 AC_CONFIG_FILES([man/sysstat.5:man/sysstat.in]) # File must be renamed
694 AC_CONFIG_FILES([man/iostat.1:man/iostat.in]) # File must be renamed
695 AC_CONFIG_FILES([man/cifsiostat.1:man/cifsiostat.in]) # File must be renamed
696 AC_CONFIG_FILES([tests/variables])
701 Sysstat version: $PACKAGE_VERSION
702 Installation prefix: $prefix
703 rc directory: ${RC_DIR}
704 Init directory: ${INIT_DIR}
705 Systemd unit dir: ${with_systemdsystemunitdir}
706 Configuration file: ${SYSCONFIG_DIR}/${SYSCONFIG_FILE}
707 Man pages directory: $mandir
709 Compiler flags: $CFLAGS