]> granicus.if.org Git - sysstat/blobdiff - Makefile.in
sar/sadc: Add stable identifier support for disks statistics
[sysstat] / Makefile.in
index 304dd857b805450708ffa039773e53367a692727..300a83e9d38c73e45550d4b8736685a14a04bc6a 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile to build sysstat commands
-# # (C) 1999-2011 Sebastien GODARD (sysstat <at> orange.fr)
+# (C) 1999-2019 Sebastien GODARD (sysstat <at> orange.fr)
 
 # Version and package name
 VERSION = @PACKAGE_VERSION@
@@ -31,6 +31,14 @@ LFSENSORS = @LFSENSORS@
 DFSENSORS = @DFSENSORS@
 endif
 
+HAVE_PCP = @HAVE_PCP@
+LFPCP =
+DFPCP =
+ifeq ($(HAVE_PCP),y)
+LFPCP = @LFPCP@
+DFPCP = @DFPCP@
+endif
+
 # Directories
 ifndef PREFIX
 PREFIX = @prefix@
@@ -71,9 +79,10 @@ SYSCONFIG_DIR = @SYSCONFIG_DIR@
 # Compiler flags
 CFLAGS = @CFLAGS@ -Wall -Wstrict-prototypes -pipe -O2
 DFLAGS = @DFLAGS@
-LFLAGS =  -s
+LFLAGS = @STRIP@
 DFLAGS += -DSA_DIR=\"$(SA_DIR)\" -DSADC_PATH=\"$(SADC_PATH)\"
 DFLAGS += $(DFSENSORS)
+DFLAGS += $(DFPCP)
 
 # Commands
 ifndef MSGFMT
@@ -89,22 +98,30 @@ ifndef ZIP
 ZIP = @ZIP@
 endif
 
-# Settings 
+# Settings
+SYSMACROS = @SYSMACROS@
+ifeq ($(SYSMACROS),y)
+       DFLAGS += -DHAVE_SYS_SYSMACROS_H
+endif
+SYSPARAM = @SYSPARAM@
+ifeq ($(SYSPARAM),y)
+       DFLAGS += -DHAVE_SYS_PARAM_H
+endif
 NLS = @NLS@
 ifeq ($(NLS),y)
 REQUIRE_NLS = -DUSE_NLS -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=\"$(NLS_DIR)\"
 endif
 ifdef REQUIRE_NLS
-   DFLAGS += $(REQUIRE_NLS)
+       DFLAGS += $(REQUIRE_NLS)
 endif
 INSTALL_CRON = @INSTALL_CRON@
 CRON_OWNER = @CRON_OWNER@
 
 MAN_GROUP = @MAN_GROUP@
-ifndef IGNORE_MAN_GROUP
-IGNORE_MAN_GROUP = @IGNORE_MAN_GROUP@
+ifndef IGNORE_FILE_ATTRIBUTES
+IGNORE_FILE_ATTRIBUTES = @IGNORE_FILE_ATTRIBUTES@
 endif
-ifeq ($(IGNORE_MAN_GROUP),y)
+ifeq ($(IGNORE_FILE_ATTRIBUTES),y)
 MANGRPARG =
 else
 MANGRPARG = -g $(MAN_GROUP)
@@ -115,12 +132,16 @@ endif
 ifndef COMPRESS_MANPG
 COMPRESS_MANPG = @COMPRESS_MANPG@
 endif
-ifndef INSTALL_ISAG
-INSTALL_ISAG = @INSTALL_ISAG@
-endif
 ifndef INSTALL_DOC
 INSTALL_DOC = @INSTALL_DOC@
 endif
+ifndef COPY_ONLY
+COPY_ONLY = @COPY_ONLY@
+endif
+
+# Systemd
+SYSTEMCTL = @SYSTEMCTL@
+SYSTEMD_UNIT_DIR = @SYSTEMD_UNIT_DIR@
 
 # Run-command directories
 ifndef RC_DIR
@@ -140,6 +161,8 @@ ifndef INITD_DIR
 INITD_DIR = @INITD_DIR@
 endif
 
+SOURCE_CODE= $(wildcard *.c *.h)
+
 NLSPO= $(wildcard nls/*.po)
 NLSGMO= $(NLSPO:.po=.gmo)
 NLSPOT= $(NLSPO:.po=.pot)
@@ -156,76 +179,151 @@ NLSPOT= $(NLSPO:.po=.pot)
 % : %.o
        $(CC) -o $@ $(CFLAGS) $^ $(LFLAGS)
 
-all: sadc sar sadf iostat mpstat pidstat nfsiostat cifsiostat locales
+all: sadc sar sadf iostat tapestat mpstat pidstat cifsiostat locales
 
-common.o: common.c version.h common.h ioconf.h sysconfig.h
+common_sadc.o: common.c version.h common.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
 
-sa_common.o: sa_common.c sa.h common.h ioconf.h sysconfig.h rd_stats.h
+common.o: common.c version.h common.h
+
+systest.o: systest.c systest.h
+
+sa_common_sadc.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
+
+sa_common.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
 
 ioconf.o: ioconf.c ioconf.h common.h sysconfig.h
 
-act_sadc.o: activity.c sa.h rd_stats.h rd_sensors.h
+act_sadc.o: activity.c sa.h common.h rd_stats.h rd_sensors.h
        $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
 
-act_sar.o: activity.c sa.h pr_stats.h
+act_sar.o: activity.c sa.h common.h rd_stats.h rd_sensors.h pr_stats.h
        $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
 
-act_sadf.o: activity.c sa.h rndr_stats.h xml_stats.h
+act_sadf.o: activity.c sa.h common.h rd_stats.h rd_sensors.h rndr_stats.h xml_stats.h json_stats.h svg_stats.h raw_stats.h pcp_stats.h
        $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
 
-rd_stats.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
+rd_stats.o: rd_stats.c common.h rd_stats.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
+
+rd_stats_light.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
+       $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
+
+count.o: count.c common.h rd_stats.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
+
+count_light.o: count.c common.h rd_stats.h
+       $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
+
+rd_sensors.o: rd_sensors.c common.h rd_sensors.h rd_stats.h
 
-rd_sensors.o: rd_sensors.c common.h rd_sensors.h sysconfig.h
+pr_stats.o: pr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h pr_stats.h
 
-pr_stats.o: pr_stats.c sa.h ioconf.h sysconfig.h pr_stats.h
+rndr_stats.o: rndr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h rndr_stats.h
 
-rndr_stats.o: rndr_stats.c sa.h ioconf.h sysconfig.h rndr_stats.h
+xml_stats.o: xml_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h xml_stats.h
 
-xml_stats.o: xml_stats.c sa.h ioconf.h sysconfig.h xml_stats.h
+json_stats.o: json_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h json_stats.h
 
-sa_wrap.o: sa_wrap.c sa.h rd_stats.h rd_sensors.h
+svg_stats.o: svg_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h svg_stats.h
+
+raw_stats.o: raw_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h raw_stats.h
+
+pcp_stats.o: pcp_stats.c sa.h pcp_stats.h
+
+sa_wrap.o: sa_wrap.c sa.h common.h rd_stats.h count.h rd_sensors.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
+
+format_sadf.o: format.c sadf.h sa.h common.h rd_stats.h rd_sensors.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
+
+format_sar.o: format.c sa.h common.h rd_stats.h rd_sensors.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
+
+pcp_def_metrics.o: pcp_def_metrics.c
+
+sadf_misc.o: sadf_misc.c sadf.h pcp_def_metrics.h sa.h common.h rd_stats.h rd_sensors.h
+
+sa_conv.o: sa_conv.c version.h sadf.h sa.h common.h rd_stats.h rd_sensors.h sa_conv.h
 
 # Explicit rules needed to prevent possible file corruption
 # when using parallel execution.
-libsyscom.a: common.o ioconf.o
+libsyscom.a: common.o ioconf.o systest.o
        $(AR) rvs $@ $?
 
-librdstats.a: librdstats.a(rd_stats.o)
+# Ditto
+librdstats.a: rd_stats.o count.o
+       $(AR) rvs $@ $?
 
-librdsensors.a: librdsensors.a(rd_sensors.o)
+librdstats_light.a: rd_stats_light.o count_light.o
+       $(AR) rvs $@ $?
+
+# librdsensors.a: librdsensors.a(rd_sensors.o)
+librdsensors.a: rd_sensors.o
+       $(AR) rvs $@ $?
 
-sadc.o: sadc.c sa.h version.h common.h ioconf.h sysconfig.h rd_stats.h rd_sensors.h
+sadc.o: sadc.c sa.h version.h common.h rd_stats.h rd_sensors.h
 
 sadc: LFLAGS += $(LFSENSORS)
-sadc: sadc.o act_sadc.o sa_wrap.o sa_common.o librdstats.a librdsensors.a libsyscom.a
 
-sar.o: sar.c sa.h version.h common.h ioconf.h pr_stats.h sysconfig.h
+sadc: sadc.o act_sadc.o sa_wrap.o sa_common_sadc.o common_sadc.o systest.o librdstats.a librdsensors.a
 
-sar: sar.o act_sar.o sa_common.o pr_stats.o libsyscom.a
+sar.o: sar.c sa.h version.h common.h rd_stats.h rd_sensors.h
 
-sadf.o: sadf.c sadf.h version.h sa.h common.h ioconf.h sysconfig.h rndr_stats.h xml_stats.h
+sar: sar.o act_sar.o format_sar.o sa_common.o pr_stats.o librdstats_light.a libsyscom.a
 
-sadf: sadf.o act_sadf.o rndr_stats.o xml_stats.o sa_common.o libsyscom.a
+sadf.o: sadf.c sadf.h version.h sa.h common.h rd_stats.h rd_sensors.h
 
-iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h
+sadf: LFLAGS += $(LFPCP)
 
-iostat: iostat.o librdstats.a libsyscom.a
+sadf: sadf.o act_sadf.o format_sadf.o sadf_misc.o pcp_def_metrics.o sa_conv.o rndr_stats.o xml_stats.o json_stats.o svg_stats.o raw_stats.o pcp_stats.o sa_common.o librdstats_light.a libsyscom.a
 
-pidstat.o: pidstat.c pidstat.h version.h common.h rd_stats.h
+iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h count.h
 
-pidstat: pidstat.o librdstats.a libsyscom.a
+iostat: iostat.o librdstats_light.a libsyscom.a
 
-mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h
+tapestat.o: tapestat.c tapestat.h version.h common.h count.h rd_stats.h
 
-mpstat: mpstat.o librdstats.a libsyscom.a
+tapestat: tapestat.o librdstats_light.a libsyscom.a
 
-nfsiostat.o: nfsiostat.c nfsiostat.h version.h common.h
+pidstat.o: pidstat.c pidstat.h version.h common.h rd_stats.h count.h
 
-nfsiostat: nfsiostat.o librdstats.a libsyscom.a
+pidstat: pidstat.o librdstats_light.a libsyscom.a
 
-cifsiostat.o: cifsiostat.c cifsiostat.h version.h common.h
+mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h count.h
 
-cifsiostat: cifsiostat.o librdstats.a libsyscom.a
+mpstat: mpstat.o librdstats_light.a libsyscom.a
+
+cifsiostat.o: cifsiostat.c cifsiostat.h count.h rd_stats.h version.h common.h
+
+cifsiostat: cifsiostat.o librdstats_light.a libsyscom.a
+
+tests/ini/sa_common.o: tests/ini/sa_common.c tests/ini/iniversion.h tests/ini/sa.h tests/ini/common.h tests/ini/rd_stats.h tests/ini/rd_sensors.h tests/ini/ioconf.h tests/ini/inisysconfig.h
+
+tests/ini/act_sar.o: tests/ini/activity.c tests/ini/sa.h tests/ini/common.h tests/ini/rd_stats.h tests/ini/rd_sensors.h tests/ini/pr_stats.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
+
+tests/ini/rd_stats_light.o: tests/ini/rd_stats.c tests/ini/common.h tests/ini/rd_stats.h tests/ini/ioconf.h tests/ini/inisysconfig.h
+       $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
+
+tests/ini/count_light.o: tests/ini/count.c tests/ini/common.h tests/ini/rd_stats.h
+       $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
+
+tests/ini/libsyscom.a: tests/ini/common.o tests/ini/ioconf.o
+       $(AR) rvs $@ $?
+
+tests/ini/format_sar.o: tests/ini/format.c tests/ini/sa.h tests/ini/common.h tests/ini/rd_stats.h tests/ini/rd_sensors.h
+       $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
+
+tests/ini/pr_stats.o: tests/ini/pr_stats.c tests/ini/sa.h tests/ini/common.h tests/ini/rd_stats.h tests/ini/rd_sensors.h tests/ini/ioconf.h tests/ini/inisysconfig.h tests/ini/pr_stats.h
+
+tests/ini/librdstats_light.a: tests/ini/rd_stats_light.o tests/ini/count_light.o
+       $(AR) rvs $@ $?
+
+tests/ini/inisar.o: tests/ini/inisar.c tests/ini/sa.h tests/ini/iniversion.h tests/ini/common.h tests/ini/rd_stats.h tests/ini/rd_sensors.h
+
+tests/ini/inisar: tests/ini/inisar.o tests/ini/act_sar.o tests/ini/format_sar.o tests/ini/sa_common.o tests/ini/pr_stats.o tests/ini/librdstats_light.a tests/ini/libsyscom.a
 
 ifdef REQUIRE_NLS
 locales: $(NLSGMO)
@@ -238,7 +336,7 @@ nls/sysstat.pot: $(wildcard *.c)
 
 # Phony targets
 .PHONY: clean distclean install install_base install_all uninstall \
-       uninstall_base uninstall_all dist bdist
+       uninstall_base uninstall_all dist bdist xdist gitdist squeeze simtest
 
 install_man: man/sadc.8 man/sar.1 man/sadf.1 man/sa1.8 man/sa2.8 man/sysstat.5
 ifeq ($(INSTALL_DOC),y)
@@ -259,17 +357,14 @@ ifeq ($(INSTALL_DOC),y)
        $(INSTALL_DATA) $(MANGRPARG) man/sysstat.5 $(DESTDIR)$(MAN5_DIR)
        rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
        $(INSTALL_DATA) $(MANGRPARG) man/iostat.1 $(DESTDIR)$(MAN1_DIR)
+       rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
+       $(INSTALL_DATA) $(MANGRPARG) man/tapestat.1 $(DESTDIR)$(MAN1_DIR)
        rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
        $(INSTALL_DATA) $(MANGRPARG) man/mpstat.1 $(DESTDIR)$(MAN1_DIR)
        rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
        $(INSTALL_DATA) $(MANGRPARG) man/pidstat.1 $(DESTDIR)$(MAN1_DIR)
-       rm -f $(DESTDIR)$(MAN1_DIR)/nfsiostat.1*
-       $(INSTALL_DATA) $(MANGRPARG) man/nfsiostat.1 $(DESTDIR)$(MAN1_DIR)
        rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
        $(INSTALL_DATA) $(MANGRPARG) man/cifsiostat.1 $(DESTDIR)$(MAN1_DIR)
-ifeq ($(INSTALL_ISAG),y)
-       $(INSTALL_DATA) $(MANGRPARG) contrib/isag/isag.1 $(DESTDIR)$(MAN1_DIR)
-endif
 ifeq ($(COMPRESS_MANPG),y)
        $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa1.8
        $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa2.8
@@ -278,80 +373,34 @@ ifeq ($(COMPRESS_MANPG),y)
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/sadf.1
        $(ZIP) $(DESTDIR)$(MAN5_DIR)/sysstat.5
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/iostat.1
+       $(ZIP) $(DESTDIR)$(MAN1_DIR)/tapestat.1
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/mpstat.1
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/pidstat.1
-       $(ZIP) $(DESTDIR)$(MAN1_DIR)/nfsiostat.1
        $(ZIP) $(DESTDIR)$(MAN1_DIR)/cifsiostat.1
-ifeq ($(INSTALL_ISAG),y)
-       $(ZIP) $(DESTDIR)$(MAN1_DIR)/isag.1
-endif
 endif
 endif
 
+squeeze:
+       catalogs="$(SOURCE_CODE)"; \
+       for c in $$catalogs; do \
+               echo "Squeezing file: $$c"; \
+               sed 's/[\t ]*$$//g' $$c > squeeze.tmp; \
+               mv squeeze.tmp $$c; \
+       done
+
 install_nls: locales
 ifdef REQUIRE_NLS
-       mkdir -p $(DESTDIR)$(NLS_DIR)/af/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/cs/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/da/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/de/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/eo/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/es/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/eu/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/fi/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/fr/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/id/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/it/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/ja/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/ky/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/lv/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/mt/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/nb/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/nl/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/nn/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/pl/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/pt/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/pt_BR/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/ro/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/ru/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/sk/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/sv/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/uk/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/vi/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/zh_CN/LC_MESSAGES
-       mkdir -p $(DESTDIR)$(NLS_DIR)/zh_TW/LC_MESSAGES
-       $(INSTALL_DATA) nls/af.gmo $(DESTDIR)$(NLS_DIR)/af/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/cs.gmo $(DESTDIR)$(NLS_DIR)/cs/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/da.gmo $(DESTDIR)$(NLS_DIR)/da/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/de.gmo $(DESTDIR)$(NLS_DIR)/de/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/eo.gmo $(DESTDIR)$(NLS_DIR)/eo/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/es.gmo $(DESTDIR)$(NLS_DIR)/es/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/eu.gmo $(DESTDIR)$(NLS_DIR)/eu/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/fi.gmo $(DESTDIR)$(NLS_DIR)/fi/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/fr.gmo $(DESTDIR)$(NLS_DIR)/fr/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/id.gmo $(DESTDIR)$(NLS_DIR)/id/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/it.gmo $(DESTDIR)$(NLS_DIR)/it/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/ja.gmo $(DESTDIR)$(NLS_DIR)/ja/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/ky.gmo $(DESTDIR)$(NLS_DIR)/ky/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/lv.gmo $(DESTDIR)$(NLS_DIR)/lv/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/mt.gmo $(DESTDIR)$(NLS_DIR)/mt/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/nb.gmo $(DESTDIR)$(NLS_DIR)/nb/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/nl.gmo $(DESTDIR)$(NLS_DIR)/nl/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/nn.gmo $(DESTDIR)$(NLS_DIR)/nn/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/pl.gmo $(DESTDIR)$(NLS_DIR)/pl/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/pt.gmo $(DESTDIR)$(NLS_DIR)/pt/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/pt_BR.gmo $(DESTDIR)$(NLS_DIR)/pt_BR/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/ro.gmo $(DESTDIR)$(NLS_DIR)/ro/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/ru.gmo $(DESTDIR)$(NLS_DIR)/ru/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/sk.gmo $(DESTDIR)$(NLS_DIR)/sk/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/sv.gmo $(DESTDIR)$(NLS_DIR)/sv/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/uk.gmo $(DESTDIR)$(NLS_DIR)/uk/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/vi.gmo $(DESTDIR)$(NLS_DIR)/vi/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/zh_CN.gmo $(DESTDIR)$(NLS_DIR)/zh_CN/LC_MESSAGES/$(PACKAGE).mo
-       $(INSTALL_DATA) nls/zh_TW.gmo $(DESTDIR)$(NLS_DIR)/zh_TW/LC_MESSAGES/$(PACKAGE).mo
-endif
-
-install_base: all sa1 sa2 sysstat.sysconfig install_man install_nls \
-       contrib/isag/isag
+       catalogs='$(NLSGMO)'; \
+       for c in $$catalogs; do \
+               c=`basename $$c`; \
+               c=`echo $$c | sed 's/\.gmo$$//'`; \
+               mkdir -p $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES; \
+               echo "NLS: Installing $$c file..." ; \
+               $(INSTALL_DATA) nls/$$c.gmo $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES/$(PACKAGE).mo; \
+       done
+endif
+
+install_base: all sa1 sa2 sysstat.sysconfig install_man install_nls
        mkdir -p $(DESTDIR)$(SA_LIB_DIR)
        mkdir -p $(DESTDIR)$(SA_DIR)
 ifeq ($(CLEAN_SA_DIR),y)
@@ -368,60 +417,98 @@ endif
        $(INSTALL_BIN) sar $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) sadf $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) iostat $(DESTDIR)$(BIN_DIR)
+       $(INSTALL_BIN) tapestat $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) mpstat $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) pidstat $(DESTDIR)$(BIN_DIR)
-       $(INSTALL_BIN) nfsiostat $(DESTDIR)$(BIN_DIR)
        $(INSTALL_BIN) cifsiostat $(DESTDIR)$(BIN_DIR)
-ifeq ($(INSTALL_ISAG),y)
-       $(INSTALL_BIN) contrib/isag/isag $(DESTDIR)$(BIN_DIR)
-endif
        $(INSTALL_DATA) sysstat.ioconf $(DESTDIR)$(SYSCONFIG_DIR)
        $(INSTALL_DATA) sysstat.sysconfig $(DESTDIR)$(SYSCONFIG_DIR)/sysstat
 ifeq ($(INSTALL_DOC),y)
        $(INSTALL_DATA) CHANGES $(DESTDIR)$(DOC_DIR)
        $(INSTALL_DATA) COPYING $(DESTDIR)$(DOC_DIR)
        $(INSTALL_DATA) CREDITS $(DESTDIR)$(DOC_DIR)
-       $(INSTALL_DATA) README $(DESTDIR)$(DOC_DIR)
-       $(INSTALL_DATA) FAQ $(DESTDIR)$(DOC_DIR)
+       $(INSTALL_DATA) README.md $(DESTDIR)$(DOC_DIR)
+       $(INSTALL_DATA) FAQ.md $(DESTDIR)$(DOC_DIR)
        $(INSTALL_DATA) *.lsm $(DESTDIR)$(DOC_DIR)
 endif
 
 install_all: install_base cron/crontab sysstat \
        cron/sysstat.crond cron/sysstat.cron.daily cron/sysstat.cron.hourly
+ifneq ($(IGNORE_FILE_ATTRIBUTES),y)
        $(CHOWN) $(CRON_OWNER) $(DESTDIR)$(SA_DIR)
-       if [ -d $(DESTDIR)/etc/cron.d ]; then \
-          $(INSTALL_DATA) cron/sysstat.crond $(DESTDIR)/etc/cron.d/sysstat; \
-       elif [ -d $(DESTDIR)/etc/cron.hourly -a -d $(DESTDIR)/etc/cron.daily ]; then \
-          $(INSTALL_BIN) cron/sysstat.cron.hourly $(DESTDIR)/etc/cron.hourly/sysstat; \
-          $(INSTALL_BIN) cron/sysstat.cron.daily $(DESTDIR)/etc/cron.daily/sysstat; \
-       else \
-          su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).save"; \
-          $(CP) -a /tmp/crontab-$(CRON_OWNER).save ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.save; \
-          echo "USER'S PREVIOUS CRONTAB SAVED IN CURRENT DIRECTORY (USING .save SUFFIX)."; \
-          su $(CRON_OWNER) -c "crontab cron/crontab"; \
+endif
+ifdef SYSTEMD_UNIT_DIR
+       mkdir -p $(DESTDIR)$(SYSTEMD_UNIT_DIR)
+else
+       if [ -d /etc/cron.d ]; then \
+               mkdir -p $(DESTDIR)/etc/cron.d; \
+       elif [ -d /etc/cron.hourly -a -d /etc/cron.daily ]; then \
+               mkdir -p $(DESTDIR)/etc/cron.hourly $(DESTDIR)/etc/cron.daily; \
+       fi
+       if [ -d $(INIT_DIR) ]; then \
+               mkdir -p $(DESTDIR)$(INIT_DIR); \
+       elif [ -d $(RC_DIR) ]; then \
+               mkdir -p $(DESTDIR)$(RC_DIR); \
+       fi
+endif
+       if [ -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
+               if [ -d $(DESTDIR)/etc/cron.d ]; then \
+                       $(INSTALL_DATA) cron/sysstat.crond $(DESTDIR)/etc/cron.d/sysstat; \
+               elif [ -d $(DESTDIR)/etc/cron.hourly -a -d $(DESTDIR)/etc/cron.daily ]; then \
+                       $(INSTALL_BIN) cron/sysstat.cron.hourly $(DESTDIR)/etc/cron.hourly/sysstat; \
+                       $(INSTALL_BIN) cron/sysstat.cron.daily $(DESTDIR)/etc/cron.daily/sysstat; \
+               fi \
+       fi
+ifeq ($(COPY_ONLY),n)
+       if [ \( -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" \) -a ! -d $(DESTDIR)/etc/cron.d ]; then \
+               if [ ! -d $(DESTDIR)/etc/cron.hourly -o ! -d $(DESTDIR)/etc/cron.daily ]; then \
+                       su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).save"; \
+                       $(CP) -a /tmp/crontab-$(CRON_OWNER).save ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.save; \
+                       echo "USER'S PREVIOUS CRONTAB SAVED IN CURRENT DIRECTORY (USING .save SUFFIX)."; \
+                       su $(CRON_OWNER) -c "crontab cron/crontab"; \
+               fi \
        fi
-       if [ -d $(DESTDIR)$(INIT_DIR) ]; then \
-          $(INSTALL_BIN) sysstat $(DESTDIR)$(INIT_DIR)/sysstat; \
-          if [ -x $(CHKCONFIG) ]; then \
-             cd $(DESTDIR)$(INIT_DIR) && $(CHKCONFIG) --add sysstat; \
-          else \
-             cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
-             cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
-             cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
-          fi \
+endif
+       if [ -n "$(SYSTEMD_UNIT_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
+               $(INSTALL_DATA) sysstat.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
+               $(INSTALL_DATA) cron/sysstat-collect.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
+               $(INSTALL_DATA) cron/sysstat-collect.timer $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
+               $(INSTALL_DATA) cron/sysstat-summary.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
+               $(INSTALL_DATA) cron/sysstat-summary.timer $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
+       elif [ -d $(DESTDIR)$(INIT_DIR) ]; then \
+               $(INSTALL_BIN) sysstat $(DESTDIR)$(INIT_DIR)/sysstat; \
+               if [ "$(COPY_ONLY)" = "n" ]; then \
+                       if [ -x "$(CHKCONFIG)" ]; then \
+                               cd $(DESTDIR)$(INIT_DIR) && $(CHKCONFIG) --add sysstat; \
+                       else \
+                               [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
+                               [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
+                               [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
+                               cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
+                               cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
+                               cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
+                       fi \
+               fi \
        elif [ -d $(DESTDIR)$(RC_DIR) ]; then \
-          $(INSTALL_BIN) sysstat $(DESTDIR)$(RC_DIR)/rc.sysstat; \
-          if [ -x $(CHKCONFIG) ]; then \
-             cd $(DESTDIR)$(RC_DIR) && $(CHKCONFIG) --add sysstat; \
-          else \
-             [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
-             [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
-             [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
-             cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
-             cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
-             cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
-          fi \
+               $(INSTALL_BIN) sysstat $(DESTDIR)$(RC_DIR)/rc.sysstat; \
+               if [ "$(COPY_ONLY)" = "n" ]; then \
+                       if [ -x "$(CHKCONFIG)" ]; then \
+                               cd $(DESTDIR)$(RC_DIR) && $(CHKCONFIG) --add rc.sysstat; \
+                       else \
+                               [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
+                               [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
+                               [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
+                               cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
+                               cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
+                               cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
+                       fi \
+               fi \
+       fi
+ifeq ($(COPY_ONLY),n)
+       if [ -x "$(SYSTEMCTL)" ]; then \
+               $(SYSTEMCTL) enable sysstat.service; \
        fi
+endif
 
 uninstall_man:
 ifeq ($(INSTALL_DOC),y)
@@ -432,104 +519,22 @@ ifeq ($(INSTALL_DOC),y)
        rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
        rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
        rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
+       rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
        rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
        rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
-       rm -f $(DESTDIR)$(MAN1_DIR)/nfsiostat.1*
        rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
-ifeq ($(INSTALL_ISAG),y)
-       rm -f $(DESTDIR)$(MAN1_DIR)/isag.1
-endif
 endif
 
 uninstall_nls:
 ifdef REQUIRE_NLS
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/af/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/cs/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/da/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/de/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/eo/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/es/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/eu/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/fi/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/fr/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/id/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/it/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/ja/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/ky/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/lv/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/mt/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/nb/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/nl/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/nn/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/pl/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/pt/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/pt_BR/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/ro/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/ru/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/sk/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/sv/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/uk/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/vi/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/zh_CN/LC_MESSAGES/$(PACKAGE).mo
-       rm -f $(DESTDIR)$(PREFIX)/share/locale/zh_TW/LC_MESSAGES/$(PACKAGE).mo
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/af/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/cs/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/da/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/de/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/eo/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/es/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/eu/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/fi/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/fr/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/id/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/it/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ja/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ky/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/lv/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/mt/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/nb/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/nl/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/nn/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/pl/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/pt/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/pt_BR/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ro/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ru/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/sk/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/sv/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/uk/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/vi/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/zh_CN/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/zh_TW/LC_MESSAGES
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/af
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/cs
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/da
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/de
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/eo
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/es
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/eu
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/fi
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/fr
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/id
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/it
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ja
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ky
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/lv
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/mt
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/nb
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/nl
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/nn
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/pl
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/pt
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/pt_BR
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ro
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/ru
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/sk
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/sv
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/uk
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/vi
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/zh_CN
-       -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/zh_TW
+       -catalogs='$(NLSGMO)'; \
+       for c in $$catalogs; do \
+               c=`basename $$c`; \
+               c=`echo $$c | sed 's/\.gmo$$//'`; \
+               rm -f $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES/$(PACKAGE).mo; \
+               rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES 2>/dev/null; \
+               rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c 2>/dev/null; \
+       done
 endif
 
 uninstall_base: uninstall_man uninstall_nls
@@ -539,33 +544,37 @@ uninstall_base: uninstall_man uninstall_nls
        rm -f $(DESTDIR)$(BIN_DIR)/sar
        rm -f $(DESTDIR)$(BIN_DIR)/sadf
        rm -f $(DESTDIR)$(BIN_DIR)/iostat
+       rm -f $(DESTDIR)$(BIN_DIR)/tapestat
        rm -f $(DESTDIR)$(BIN_DIR)/mpstat
        rm -f $(DESTDIR)$(BIN_DIR)/pidstat
-       rm -f $(DESTDIR)$(BIN_DIR)/nfsiostat
        rm -f $(DESTDIR)$(BIN_DIR)/cifsiostat
-ifeq ($(INSTALL_ISAG),y)
-       rm -f $(DESTDIR)$(BIN_DIR)/isag
-endif
        -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_LIB_DIR)
        -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)/[0-9]?????
        -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)
-#       No need to keep sysstat scripts, config files and links since
-#       the binaries have been deleted.
+#              No need to keep sysstat scripts, config files and links since
+#              the binaries have been deleted.
        rm -f $(DESTDIR)$(INIT_DIR)/sysstat
        rm -f $(DESTDIR)$(RC_DIR)/rc.sysstat
        rm -f $(DESTDIR)$(SYSCONFIG_DIR)/sysstat
        rm -f $(DESTDIR)$(SYSCONFIG_DIR)/sysstat.ioconf
        rm -f $(DESTDIR)$(RC2_DIR)/S??sysstat
+       rm -f $(DESTDIR)$(RC2_DIR)/S??rc.sysstat
        rm -f $(DESTDIR)$(RC3_DIR)/S??sysstat
+       rm -f $(DESTDIR)$(RC3_DIR)/S??rc.sysstat
        rm -f $(DESTDIR)$(RC5_DIR)/S??sysstat
-#       Delete possible kill entries installed by chkconfig
+       rm -f $(DESTDIR)$(RC5_DIR)/S??rc.sysstat
+#              Delete possible kill entries installed by chkconfig
        rm -f $(DESTDIR)$(RC0_DIR)/K??sysstat
+       rm -f $(DESTDIR)$(RC0_DIR)/K??rc.sysstat
        rm -f $(DESTDIR)$(RC1_DIR)/K??sysstat
+       rm -f $(DESTDIR)$(RC1_DIR)/K??rc.sysstat
        rm -f $(DESTDIR)$(RC4_DIR)/K??sysstat
+       rm -f $(DESTDIR)$(RC4_DIR)/K??rc.sysstat
        rm -f $(DESTDIR)$(RC6_DIR)/K??sysstat
-#       Vixie cron entries also can be safely deleted here
+       rm -f $(DESTDIR)$(RC6_DIR)/K??rc.sysstat
+#              Vixie cron entries also can be safely deleted here
        rm -f $(DESTDIR)/etc/cron.d/sysstat
-#       Id. for Slackware cron entries
+#              Id. for Slackware cron entries
        rm -f $(DESTDIR)/etc/cron.hourly/sysstat
        rm -f $(DESTDIR)/etc/cron.daily/sysstat
 ifeq ($(INSTALL_DOC),y)
@@ -575,10 +584,24 @@ endif
        @echo "Please ignore the errors above, if any."
 
 uninstall_all: uninstall_base
-       -su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).old"
-       -$(CP) -a /tmp/crontab-$(CRON_OWNER).old ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.old
-       @echo "USER CRONTAB SAVED IN CURRENT DIRECTORY (WITH .old SUFFIX)."
-       -su $(CRON_OWNER) -c "crontab -r"
+ifeq ($(COPY_ONLY),n)
+       if [ -z "$(SYSTEMD_UNIT_DIR)" -o ! -d $(DESTDIR)$(SYSTEMD_UNIT_DIR) ]; then \
+               -su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).old" ; \
+               -$(CP) -a /tmp/crontab-$(CRON_OWNER).old ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.old ; \
+               @echo "USER'S CRONTAB SAVED IN CURRENT DIRECTORY (USING .old SUFFIX)." ; \
+               -su $(CRON_OWNER) -c "crontab -r" ; \
+       fi
+       if [ -x $(SYSTEMCTL) ]; then \
+               $(SYSTEMCTL) disable sysstat.service; \
+       fi
+endif
+       if [ -n "$(SYSTEMD_UNIT_DIR)" -a -d $(DESTDIR)$(SYSTEMD_UNIT_DIR) ]; then \
+               rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat.service; \
+               rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-collect.service; \
+               rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-collect.timer; \
+               rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-summary.service; \
+               rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-summary.timer; \
+       fi
 
 ifeq ($(INSTALL_CRON),y)
 uninstall: uninstall_all
@@ -598,17 +621,39 @@ else
 po-files:
 endif
 
+TESTDIR="tests"
+TESTRUN="/bin/sh"
+TESTLIST:=$(shell ls $(TESTDIR) | egrep '^[0-9]+$$' | sort -n)
+
+testcomp: tests/ini/inisar
+
+unit:
+       @echo $(X) 2>&1
+       @cat $(TESTDIR)/$(X) | $(TESTRUN)
+
+simtest: all testcomp
+       @$(foreach x, $(TESTLIST), $(MAKE) X=$x unit || exit;)
+       rm -f tests/root
+       ln -s root1 tests/root
+
 clean:
-       rm -f sadc sar sadf iostat mpstat pidstat nfsiostat cifsiostat *.o *.a core TAGS
+       rm -f sadc sar sadf iostat tapestat mpstat pidstat cifsiostat *.o *.a core TAGS tests/*.tmp
+       rm -f nfsiostat* man/nfsiostat*
+       rm -f tests/sa[012]*
+       rm -f tests/root
+       ln -s root1 tests/root
+       rm -f tests/ini/inisar
+       rm -f tests/ini/*.o tests/ini/*.a tests/ini/core
        find nls -name "*.gmo" -exec rm -f {} \;
 
 almost-distclean: clean nls/sysstat.pot
        rm -f sa1 sa2 sysstat cron/crontab version.h sysconfig.h
-       rm -f sysstat.sysconfig cron/sysstat.crond cron/sysstat.cron.daily
+       rm -f sysstat.sysconfig cron/sysstat.crond cron/sysstat.cron.daily sysstat.service
+       rm -f cron/sysstat-collect.service cron/sysstat-collect.timer cron/sysstat-summary.service cron/sysstat-summary.timer
        rm -f cron/sysstat.cron.hourly cron/sysstat.crond.sample cron/sysstat.crond.sample.in
-       rm -f contrib/isag/isag
        rm -f man/sa1.8 man/sa2.8 man/sadc.8 man/sadf.1 man/sar.1 man/iostat.1 man/sysstat.5
-       rm -f man/cifsiostat.1 man/nfsiostat.1
+       rm -f tests/variables
+       rm -f man/cifsiostat.1
        rm -f *.log config.status
        rm -rf autom4te.cache
        rm -f *.save *.old .*.swp data
@@ -626,6 +671,12 @@ dist: almost-distclean
 bdist: almost-distclean
        cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION).tar.bz2)
 
+xdist: almost-distclean
+       cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | xz > sysstat-$(VERSION).tar.xz)
+
+gitdist: almost-distclean
+       cd .. && (tar --exclude=Makefile -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION)-git.tar.bz2)
+
 tags:
        etags ./*.[hc]