1 # Makefile to build sysstat commands
2 # (C) 1999-2021 Sebastien GODARD (sysstat <at> orange.fr)
4 # Version and package name
5 VERSION = @PACKAGE_VERSION@
6 PACKAGE = @PACKAGE_NAME@
8 PACKAGE_TARNAME = $(PACKAGE)-$(VERSION)
18 # Full path to prevent from using aliases
21 CHKCONFIG = @PATH_CHKCONFIG@
23 INSTALL_DATA = @INSTALL_DATA@
24 INSTALL_BIN = @INSTALL_BIN@
27 HAVE_SENSORS = @HAVE_SENSORS@
31 ifeq ($(HAVE_SENSORS),y)
32 LFSENSORS = @LFSENSORS@
33 DFSENSORS = @DFSENSORS@
36 HAVE_SENSORS32 = @HAVE_SENSORS32@
40 ifeq ($(HAVE_SENSORS32),y)
41 LFSENSORS32 = @LFSENSORS32@
42 DFSENSORS32 = @DFSENSORS32@
58 DESTDIR = $(RPM_BUILD_ROOT)
60 # These two variables are needed by other ones (eg bindir)
62 exec_prefix = @exec_prefix@
63 datarootdir = @datarootdir@
66 SA_LIB_DIR = @SA_LIB_DIR@
68 SADC_PATH = $(SA_LIB_DIR)/sadc
75 # With recent versions of autoconf, mandir defaults to ${datarootdir}/man
76 # (i.e. $prefix/share/man)
79 MAN1_DIR = $(MAN_DIR)/man1
80 MAN5_DIR = $(MAN_DIR)/man5
81 MAN8_DIR = $(MAN_DIR)/man8
87 NLS_DIR = $(PREFIX)/share/locale
90 SYSCONFIG_DIR = @SYSCONFIG_DIR@
93 SYSCONFIG_FILE = @SYSCONFIG_FILE@
100 CFLAGS += -Wall -Wstrict-prototypes -pipe -O2 -fno-tree-slp-vectorize
105 DFLAGS += -DSA_DIR=\"$(SA_DIR)\" -DSADC_PATH=\"$(SADC_PATH)\"
106 DFLAGS += $(DFSENSORS) $(DFSENSORS32)
113 LFLAGS = @STRIP@ @LDFLAGS@
121 XGETTEXT = @XGETTEXT@
124 MSGMERGE = @MSGMERGE@
131 SYSMACROS = @SYSMACROS@
132 ifeq ($(SYSMACROS),y)
133 DFLAGS += -DHAVE_SYS_SYSMACROS_H
135 LINUX_SCHED = @LINUX_SCHED@
136 ifeq ($(LINUX_SCHED),y)
137 DFLAGS += -DHAVE_LINUX_SCHED_H
139 PCP_IMPL = @PCP_IMPL@
141 DFLAGS += -DHAVE_PCP_IMPL_H
143 SYSPARAM = @SYSPARAM@
145 DFLAGS += -DHAVE_SYS_PARAM_H
157 REQUIRE_NLS = -DUSE_NLS -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=\"$(NLS_DIR)\"
160 DFLAGS += $(REQUIRE_NLS)
177 INSTALL_CRON = @INSTALL_CRON@
180 CRON_OWNER = @CRON_OWNER@
183 MAN_GROUP = @MAN_GROUP@
184 ifndef IGNORE_FILE_ATTRIBUTES
185 IGNORE_FILE_ATTRIBUTES = @IGNORE_FILE_ATTRIBUTES@
187 ifeq ($(IGNORE_FILE_ATTRIBUTES),y)
190 MANGRPARG = -g $(MAN_GROUP)
193 CLEAN_SA_DIR = @CLEAN_SA_DIR@
195 ifndef COMPRESS_MANPG
196 COMPRESS_MANPG = @COMPRESS_MANPG@
199 INSTALL_DOC = @INSTALL_DOC@
202 COPY_ONLY = @COPY_ONLY@
206 SYSTEMCTL = @SYSTEMCTL@
207 SYSTEMD_UNIT_DIR = @SYSTEMD_UNIT_DIR@
208 SYSTEMD_SLEEP_DIR = @SYSTEMD_SLEEP_DIR@
211 USE_CROND = @USE_CROND@
213 ifeq ($(USE_CROND),y)
217 # Run-command directories
221 RC0_DIR = $(RC_DIR)/rc0.d
222 RC1_DIR = $(RC_DIR)/rc1.d
223 RC2_DIR = $(RC_DIR)/rc2.d
224 RC3_DIR = $(RC_DIR)/rc3.d
225 RC4_DIR = $(RC_DIR)/rc4.d
226 RC5_DIR = $(RC_DIR)/rc5.d
227 RC6_DIR = $(RC_DIR)/rc6.d
229 INIT_DIR = @INIT_DIR@
232 INITD_DIR = @INITD_DIR@
235 SOURCE_CODE= $(wildcard *.c *.h)
237 NLSPO= $(wildcard nls/*.po)
238 NLSGMO= $(NLSPO:.po=.gmo)
239 NLSPOT= $(NLSPO:.po=.pot)
245 $(MSGMERGE) -U $< nls/sysstat.pot
248 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
251 $(CC) -o $@ $(CFLAGS) $^ $(LFLAGS)
253 all: sadc sar sadf iostat tapestat mpstat pidstat cifsiostat locales
255 common_light.o: common.c version.h common.h
256 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
258 common.o: common.c version.h common.h
260 systest.o: systest.c systest.h
262 sa_common_light.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
263 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
265 sa_common.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
267 ioconf.o: ioconf.c ioconf.h common.h sysconfig.h
269 act_sadc.o: activity.c sa.h common.h rd_stats.h rd_sensors.h
270 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
272 act_sar.o: activity.c sa.h common.h rd_stats.h rd_sensors.h pr_stats.h
273 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
275 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
276 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
278 rd_stats.o: rd_stats.c common.h rd_stats.h
279 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
281 rd_stats_light.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
282 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
284 count.o: count.c common.h rd_stats.h
285 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
287 count_light.o: count.c common.h rd_stats.h
288 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
290 rd_sensors.o: rd_sensors.c common.h rd_sensors.h rd_stats.h
292 pr_stats.o: pr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h pr_stats.h
294 rndr_stats.o: rndr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h rndr_stats.h
296 xml_stats.o: xml_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h xml_stats.h
298 json_stats.o: json_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h json_stats.h
300 svg_stats.o: svg_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h svg_stats.h
302 raw_stats.o: raw_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h raw_stats.h
304 pcp_stats.o: pcp_stats.c sa.h pcp_stats.h
306 sa_wrap.o: sa_wrap.c sa.h common.h rd_stats.h count.h rd_sensors.h
307 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
309 format_sadf.o: format.c sadf.h sa.h common.h rd_stats.h rd_sensors.h
310 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
312 format_sar.o: format.c sa.h common.h rd_stats.h rd_sensors.h
313 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
315 pcp_def_metrics.o: pcp_def_metrics.c
317 sadf_misc.o: sadf_misc.c sadf.h pcp_def_metrics.h sa.h common.h rd_stats.h rd_sensors.h
319 sa_conv.o: sa_conv.c version.h sadf.h sa.h common.h rd_stats.h rd_sensors.h sa_conv.h
321 # Explicit rules needed to prevent possible file corruption
322 # when using parallel execution.
323 libsyscom.a: common.o ioconf.o systest.o
327 librdstats.a: rd_stats.o count.o
330 librdstats_light.a: rd_stats_light.o count_light.o
333 # librdsensors.a: librdsensors.a(rd_sensors.o)
334 librdsensors.a: rd_sensors.o
337 sadc.o: sadc.c sa.h version.h common.h rd_stats.h rd_sensors.h
339 sadc: LFLAGS += $(LFSENSORS)
341 sadc: sadc.o act_sadc.o sa_wrap.o sa_common_light.o common_light.o systest.o librdstats.a librdsensors.a libsyscom.a
343 sar.o: sar.c sa.h version.h common.h rd_stats.h rd_sensors.h
345 sar: sar.o act_sar.o format_sar.o sa_common.o pr_stats.o librdstats_light.a libsyscom.a
347 sadf.o: sadf.c sadf.h version.h sa.h common.h rd_stats.h rd_sensors.h
349 sadf: LFLAGS += $(LFPCP)
351 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
353 iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h count.h
355 iostat: iostat.o librdstats_light.a libsyscom.a
357 tapestat.o: tapestat.c tapestat.h version.h common.h count.h rd_stats.h
359 tapestat: tapestat.o librdstats_light.a libsyscom.a
361 pidstat.o: pidstat.c pidstat.h version.h common.h rd_stats.h count.h
363 pidstat: pidstat.o librdstats_light.a libsyscom.a
365 mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h count.h
367 mpstat: mpstat.o librdstats_light.a libsyscom.a
369 cifsiostat.o: cifsiostat.c cifsiostat.h count.h rd_stats.h version.h common.h
371 cifsiostat: cifsiostat.o librdstats_light.a libsyscom.a
373 # inisar: Old sar version
375 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
377 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
378 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
380 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
381 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
383 tests/ini/count_light.o: tests/ini/count.c tests/ini/common.h tests/ini/rd_stats.h
384 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
386 tests/ini/libsyscom.a: tests/ini/common.o tests/ini/ioconf.o
389 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
390 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
392 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
394 tests/ini/librdstats_light.a: tests/ini/rd_stats_light.o tests/ini/count_light.o
397 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
399 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
401 # sar32/sadc32: 32-bit versions of sar/sadc
402 tests/32bits/sadc32.o: sadc.c sa.h version.h common.h rd_stats.h rd_sensors.h
403 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
405 tests/32bits/sar32.o: sar.c sa.h version.h common.h rd_stats.h rd_sensors.h
406 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
408 tests/32bits/act_sadc32.o: activity.c sa.h common.h rd_stats.h rd_sensors.h
409 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
411 tests/32bits/act_sar32.o: activity.c sa.h common.h rd_stats.h rd_sensors.h pr_stats.h
412 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
414 tests/32bits/sa_wrap32.o: sa_wrap.c sa.h common.h rd_stats.h count.h rd_sensors.h
415 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
417 tests/32bits/sa_common_light32.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
418 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
420 tests/32bits/sa_common32.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
421 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
423 tests/32bits/common_light32.o: common.c version.h common.h
424 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
426 tests/32bits/systest32.o: systest.c systest.h
427 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
429 tests/32bits/libsyscom32.a: tests/32bits/common32.o tests/32bits/ioconf32.o tests/32bits/systest32.o
432 tests/32bits/librdstats32.a: tests/32bits/rd_stats32.o tests/32bits/count32.o
435 tests/32bits/librdstats_light32.a: tests/32bits/rd_stats_light32.o tests/32bits/count_light32.o
438 tests/32bits/librdsensors32.a: tests/32bits/rd_sensors32.o
441 tests/32bits/rd_stats32.o: rd_stats.c common.h rd_stats.h
442 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
444 tests/32bits/rd_stats_light32.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
445 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
447 tests/32bits/count32.o: count.c common.h rd_stats.h
448 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
450 tests/32bits/count_light32.o: count.c common.h rd_stats.h
451 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
453 tests/32bits/format_sar32.o: format.c sa.h common.h rd_stats.h rd_sensors.h
454 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
456 tests/32bits/pr_stats32.o: pr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h pr_stats.h
457 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
459 tests/32bits/common32.o: common.c version.h common.h
460 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
462 tests/32bits/ioconf32.o: ioconf.c ioconf.h common.h sysconfig.h
463 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
465 tests/32bits/rd_sensors32.o: rd_sensors.c common.h rd_sensors.h rd_stats.h
466 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
468 tests/32bits/sadc32: LFLAGS += $(LFSENSORS32)
470 tests/32bits/sadc32: tests/32bits/sadc32.o tests/32bits/act_sadc32.o tests/32bits/sa_wrap32.o tests/32bits/sa_common_light32.o tests/32bits/common_light32.o tests/32bits/systest32.o tests/32bits/librdstats32.a tests/32bits/librdsensors32.a
472 tests/32bits/sar32: tests/32bits/sar32.o tests/32bits/act_sar32.o tests/32bits/format_sar32.o tests/32bits/sa_common32.o tests/32bits/pr_stats32.o tests/32bits/librdstats_light32.a tests/32bits/libsyscom32.a
480 nls/sysstat.pot: $(wildcard *.c)
481 $(XGETTEXT) -o $@ -k_ --msgid-bugs-address="sysstat <at> orange.fr" $^
484 .PHONY: clean distclean install install_base install_all uninstall copyyear \
485 uninstall_base uninstall_all dist bdist xdist gitdist squeeze simtest extratest
487 install_man: man/sadc.8 man/sar.1 man/sadf.1 man/sa1.8 man/sa2.8 man/sysstat.5
488 ifeq ($(INSTALL_DOC),y)
489 mkdir -p $(DESTDIR)$(MAN1_DIR)
490 mkdir -p $(DESTDIR)$(MAN5_DIR)
491 mkdir -p $(DESTDIR)$(MAN8_DIR)
492 rm -f $(DESTDIR)$(MAN8_DIR)/sa1.8*
493 $(INSTALL_DATA) $(MANGRPARG) man/sa1.8 $(DESTDIR)$(MAN8_DIR)
494 rm -f $(DESTDIR)$(MAN8_DIR)/sa2.8*
495 $(INSTALL_DATA) $(MANGRPARG) man/sa2.8 $(DESTDIR)$(MAN8_DIR)
496 rm -f $(DESTDIR)$(MAN8_DIR)/sadc.8*
497 $(INSTALL_DATA) $(MANGRPARG) man/sadc.8 $(DESTDIR)$(MAN8_DIR)
498 rm -f $(DESTDIR)$(MAN1_DIR)/sar.1*
499 $(INSTALL_DATA) $(MANGRPARG) man/sar.1 $(DESTDIR)$(MAN1_DIR)
500 rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
501 $(INSTALL_DATA) $(MANGRPARG) man/sadf.1 $(DESTDIR)$(MAN1_DIR)
502 rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
503 $(INSTALL_DATA) $(MANGRPARG) man/sysstat.5 $(DESTDIR)$(MAN5_DIR)
504 rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
505 $(INSTALL_DATA) $(MANGRPARG) man/iostat.1 $(DESTDIR)$(MAN1_DIR)
506 rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
507 $(INSTALL_DATA) $(MANGRPARG) man/tapestat.1 $(DESTDIR)$(MAN1_DIR)
508 rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
509 $(INSTALL_DATA) $(MANGRPARG) man/mpstat.1 $(DESTDIR)$(MAN1_DIR)
510 rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
511 $(INSTALL_DATA) $(MANGRPARG) man/pidstat.1 $(DESTDIR)$(MAN1_DIR)
512 rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
513 $(INSTALL_DATA) $(MANGRPARG) man/cifsiostat.1 $(DESTDIR)$(MAN1_DIR)
514 ifeq ($(COMPRESS_MANPG),y)
515 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa1.8
516 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa2.8
517 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sadc.8
518 $(ZIP) $(DESTDIR)$(MAN1_DIR)/sar.1
519 $(ZIP) $(DESTDIR)$(MAN1_DIR)/sadf.1
520 $(ZIP) $(DESTDIR)$(MAN5_DIR)/sysstat.5
521 $(ZIP) $(DESTDIR)$(MAN1_DIR)/iostat.1
522 $(ZIP) $(DESTDIR)$(MAN1_DIR)/tapestat.1
523 $(ZIP) $(DESTDIR)$(MAN1_DIR)/mpstat.1
524 $(ZIP) $(DESTDIR)$(MAN1_DIR)/pidstat.1
525 $(ZIP) $(DESTDIR)$(MAN1_DIR)/cifsiostat.1
530 catalogs="$(SOURCE_CODE)"; \
531 for c in $$catalogs; do \
532 echo "Squeezing file: $$c"; \
533 sed 's/[\t ]*$$//g' $$c > squeeze.tmp; \
534 mv squeeze.tmp $$c; \
537 # Update Makefile.in by hand - Restore mode for iconfig.
539 catalogs="$(SOURCE_CODE) iconfig README.md sa1.in sa2.in sysconfig.in sysstat.in version.in"; \
540 for c in $$catalogs; do \
541 echo "Updating file: $$c"; \
542 sed 's/-2021/-2022/g' $$c > copyyear.tmp; \
543 mv copyyear.tmp $$c; \
548 catalogs='$(NLSGMO)'; \
549 for c in $$catalogs; do \
551 c=`echo $$c | sed 's/\.gmo$$//'`; \
552 mkdir -p $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES; \
553 echo "NLS: Installing $$c file..." ; \
554 $(INSTALL_DATA) nls/$$c.gmo $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES/$(PACKAGE).mo; \
558 install_base: all sa1 sa2 sysstat.sysconfig install_man install_nls
559 mkdir -p $(DESTDIR)$(SA_LIB_DIR)
560 mkdir -p $(DESTDIR)$(SA_DIR)
561 ifeq ($(CLEAN_SA_DIR),y)
562 find $(DESTDIR)$(SA_DIR) -type f | grep -E "/sar?[0-9]{2,8}(\.(Z|gz|bz2|xz|lz|lzo))?$$" | xargs rm -f
563 find $(DESTDIR)$(SA_DIR) -type f | grep -E "/sar?[0-9]{2,8}$$" | xargs rm -f
565 mkdir -p $(DESTDIR)$(BIN_DIR)
566 mkdir -p $(DESTDIR)$(DOC_DIR)
567 mkdir -p $(DESTDIR)$(SYSCONFIG_DIR)
568 $(INSTALL_BIN) sa1 $(DESTDIR)$(SA_LIB_DIR)
569 $(INSTALL_BIN) sa2 $(DESTDIR)$(SA_LIB_DIR)
570 $(INSTALL_BIN) sadc $(DESTDIR)$(SA_LIB_DIR)
571 $(INSTALL_BIN) sar $(DESTDIR)$(BIN_DIR)
572 $(INSTALL_BIN) sadf $(DESTDIR)$(BIN_DIR)
573 $(INSTALL_BIN) iostat $(DESTDIR)$(BIN_DIR)
574 $(INSTALL_BIN) tapestat $(DESTDIR)$(BIN_DIR)
575 $(INSTALL_BIN) mpstat $(DESTDIR)$(BIN_DIR)
576 $(INSTALL_BIN) pidstat $(DESTDIR)$(BIN_DIR)
577 $(INSTALL_BIN) cifsiostat $(DESTDIR)$(BIN_DIR)
578 $(INSTALL_DATA) sysstat.ioconf $(DESTDIR)$(SYSCONFIG_DIR)
579 $(INSTALL_DATA) sysstat.sysconfig $(DESTDIR)$(SYSCONFIG_DIR)/$(SYSCONFIG_FILE)
580 ifeq ($(INSTALL_DOC),y)
581 $(INSTALL_DATA) CHANGES $(DESTDIR)$(DOC_DIR)
582 $(INSTALL_DATA) COPYING $(DESTDIR)$(DOC_DIR)
583 $(INSTALL_DATA) CREDITS $(DESTDIR)$(DOC_DIR)
584 $(INSTALL_DATA) README.md $(DESTDIR)$(DOC_DIR)
585 $(INSTALL_DATA) FAQ.md $(DESTDIR)$(DOC_DIR)
586 $(INSTALL_DATA) *.lsm $(DESTDIR)$(DOC_DIR)
589 ifdef SYSTEMD_UNIT_DIR
590 install_all: install_base cron/sysstat-collect.service cron/sysstat-collect.timer \
591 cron/sysstat.sleep cron/sysstat-summary.service cron/sysstat-summary.timer
593 install_all: install_base cron/crontab sysstat \
594 cron/sysstat.crond cron/sysstat.cron.daily cron/sysstat.cron.hourly
597 ifneq ($(IGNORE_FILE_ATTRIBUTES),y)
598 $(CHOWN) $(CRON_OWNER) $(DESTDIR)$(SA_DIR)
600 ifdef SYSTEMD_UNIT_DIR
601 mkdir -p $(DESTDIR)$(SYSTEMD_UNIT_DIR)
603 if [ -d /etc/cron.d ]; then \
604 mkdir -p $(DESTDIR)/etc/cron.d; \
605 elif [ -d /etc/cron.hourly -a -d /etc/cron.daily ]; then \
606 mkdir -p $(DESTDIR)/etc/cron.hourly $(DESTDIR)/etc/cron.daily; \
608 if [ -d $(INIT_DIR) ]; then \
609 mkdir -p $(DESTDIR)$(INIT_DIR); \
610 elif [ -d $(RC_DIR) ]; then \
611 mkdir -p $(DESTDIR)$(RC_DIR); \
615 ifdef SYSTEMD_SLEEP_DIR
616 mkdir -p $(DESTDIR)$(SYSTEMD_SLEEP_DIR)
619 if [ -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
620 if [ -d $(DESTDIR)/etc/cron.d ]; then \
621 $(INSTALL_DATA) cron/sysstat.crond $(DESTDIR)/etc/cron.d/sysstat; \
622 elif [ -d $(DESTDIR)/etc/cron.hourly -a -d $(DESTDIR)/etc/cron.daily ]; then \
623 $(INSTALL_BIN) cron/sysstat.cron.hourly $(DESTDIR)/etc/cron.hourly/sysstat; \
624 $(INSTALL_BIN) cron/sysstat.cron.daily $(DESTDIR)/etc/cron.daily/sysstat; \
627 ifeq ($(COPY_ONLY),n)
628 if [ \( -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" \) -a ! -d $(DESTDIR)/etc/cron.d ]; then \
629 if [ ! -d $(DESTDIR)/etc/cron.hourly -o ! -d $(DESTDIR)/etc/cron.daily ]; then \
630 su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).save"; \
631 $(CP) -a /tmp/crontab-$(CRON_OWNER).save ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.save; \
632 echo "USER'S PREVIOUS CRONTAB SAVED IN CURRENT DIRECTORY (USING .save SUFFIX)."; \
633 su $(CRON_OWNER) -c "crontab cron/crontab"; \
637 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
638 $(INSTALL_DATA) sysstat.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
639 $(INSTALL_DATA) cron/sysstat-collect.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
640 $(INSTALL_DATA) cron/sysstat-collect.timer $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
641 $(INSTALL_DATA) cron/sysstat-summary.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
642 $(INSTALL_DATA) cron/sysstat-summary.timer $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
643 elif [ -d $(DESTDIR)$(INIT_DIR) ]; then \
644 $(INSTALL_BIN) sysstat $(DESTDIR)$(INIT_DIR)/sysstat; \
645 if [ "$(COPY_ONLY)" = "n" ]; then \
646 if [ -x "$(CHKCONFIG)" ]; then \
647 cd $(DESTDIR)$(INIT_DIR) && $(CHKCONFIG) --add sysstat; \
649 [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
650 [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
651 [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
652 cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
653 cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
654 cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
657 elif [ -d $(DESTDIR)$(RC_DIR) ]; then \
658 $(INSTALL_BIN) sysstat $(DESTDIR)$(RC_DIR)/rc.sysstat; \
659 if [ "$(COPY_ONLY)" = "n" ]; then \
660 if [ -x "$(CHKCONFIG)" ]; then \
661 cd $(DESTDIR)$(RC_DIR) && $(CHKCONFIG) --add rc.sysstat; \
663 [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
664 [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
665 [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
666 cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
667 cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
668 cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
672 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -n "$(SYSTEMD_SLEEP_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_SLEEP_DIR)" ]; then \
673 $(INSTALL_BIN) cron/sysstat.sleep $(DESTDIR)$(SYSTEMD_SLEEP_DIR); \
676 ifeq ($(COPY_ONLY),n)
677 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -x "$(SYSTEMCTL)" ]; then \
678 $(SYSTEMCTL) enable sysstat.service; \
683 ifeq ($(INSTALL_DOC),y)
684 rm -f $(DESTDIR)$(MAN8_DIR)/sadc.8*
685 rm -f $(DESTDIR)$(MAN8_DIR)/sa1.8*
686 rm -f $(DESTDIR)$(MAN8_DIR)/sa2.8*
687 rm -f $(DESTDIR)$(MAN1_DIR)/sar.1*
688 rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
689 rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
690 rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
691 rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
692 rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
693 rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
694 rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
699 -catalogs='$(NLSGMO)'; \
700 for c in $$catalogs; do \
702 c=`echo $$c | sed 's/\.gmo$$//'`; \
703 rm -f $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES/$(PACKAGE).mo; \
704 rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES 2>/dev/null; \
705 rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c 2>/dev/null; \
709 uninstall_base: uninstall_man uninstall_nls
710 rm -f $(DESTDIR)$(SA_LIB_DIR)/sadc
711 rm -f $(DESTDIR)$(SA_LIB_DIR)/sa1
712 rm -f $(DESTDIR)$(SA_LIB_DIR)/sa2
713 rm -f $(DESTDIR)$(BIN_DIR)/sar
714 rm -f $(DESTDIR)$(BIN_DIR)/sadf
715 rm -f $(DESTDIR)$(BIN_DIR)/iostat
716 rm -f $(DESTDIR)$(BIN_DIR)/tapestat
717 rm -f $(DESTDIR)$(BIN_DIR)/mpstat
718 rm -f $(DESTDIR)$(BIN_DIR)/pidstat
719 rm -f $(DESTDIR)$(BIN_DIR)/cifsiostat
720 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_LIB_DIR)
721 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)/[0-9]?????
722 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)
723 # No need to keep sysstat scripts, config files and links since
724 # the binaries have been deleted.
725 rm -f $(DESTDIR)$(INIT_DIR)/sysstat
726 rm -f $(DESTDIR)$(RC_DIR)/rc.sysstat
727 rm -f $(DESTDIR)$(SYSCONFIG_DIR)/$(SYSCONFIG_FILE)
728 rm -f $(DESTDIR)$(SYSCONFIG_DIR)/sysstat.ioconf
729 rm -f $(DESTDIR)$(RC2_DIR)/S??sysstat
730 rm -f $(DESTDIR)$(RC2_DIR)/S??rc.sysstat
731 rm -f $(DESTDIR)$(RC3_DIR)/S??sysstat
732 rm -f $(DESTDIR)$(RC3_DIR)/S??rc.sysstat
733 rm -f $(DESTDIR)$(RC5_DIR)/S??sysstat
734 rm -f $(DESTDIR)$(RC5_DIR)/S??rc.sysstat
735 # Delete possible kill entries installed by chkconfig
736 rm -f $(DESTDIR)$(RC0_DIR)/K??sysstat
737 rm -f $(DESTDIR)$(RC0_DIR)/K??rc.sysstat
738 rm -f $(DESTDIR)$(RC1_DIR)/K??sysstat
739 rm -f $(DESTDIR)$(RC1_DIR)/K??rc.sysstat
740 rm -f $(DESTDIR)$(RC4_DIR)/K??sysstat
741 rm -f $(DESTDIR)$(RC4_DIR)/K??rc.sysstat
742 rm -f $(DESTDIR)$(RC6_DIR)/K??sysstat
743 rm -f $(DESTDIR)$(RC6_DIR)/K??rc.sysstat
744 # Vixie cron entries also can be safely deleted here
745 rm -f $(DESTDIR)/etc/cron.d/sysstat
746 # Id. for Slackware cron entries
747 rm -f $(DESTDIR)/etc/cron.hourly/sysstat
748 rm -f $(DESTDIR)/etc/cron.daily/sysstat
749 ifeq ($(INSTALL_DOC),y)
750 rm -f $(DESTDIR)$(DOC_DIR)/*
751 -rmdir $(DESTDIR)$(DOC_DIR)
753 @echo "Please ignore the errors above, if any."
755 uninstall_all: uninstall_base
756 ifeq ($(COPY_ONLY),n)
757 -if [ -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
758 su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).old" ; \
759 $(CP) -a /tmp/crontab-$(CRON_OWNER).old ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.old ; \
760 echo "USER'S CRONTAB SAVED IN CURRENT DIRECTORY (USING .old SUFFIX)." ; \
761 su $(CRON_OWNER) -c "crontab -r" ; \
763 -if [ -n "$(SYSTEMD_UNIT_DIR)" -a -x "$(SYSTEMCTL)" ]; then \
764 $(SYSTEMCTL) disable sysstat.service; \
767 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
768 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat.service; \
769 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-collect.service; \
770 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-collect.timer; \
771 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-summary.service; \
772 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-summary.timer; \
774 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -n "$(SYSTEMD_SLEEP_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_SLEEP_DIR)" ]; then \
775 rm -f $(DESTDIR)$(SYSTEMD_SLEEP_DIR)/sysstat.sleep; \
778 ifeq ($(INSTALL_CRON),y)
779 uninstall: uninstall_all
781 uninstall: uninstall_base
784 ifeq ($(INSTALL_CRON),y)
787 install: install_base
791 po-files: nls/sysstat.pot $(NLSPOT)
798 TESTLIST:=$(shell ls $(TESTDIR) | grep -E '^[0-9]+$$' | sort -n)
799 EXTRADIR="tests/extra"
800 EXTRALIST:=$(shell ls $(EXTRADIR) | grep -E '^[0-9]+$$' | sort -n)
802 testcomp: tests/ini/inisar sa32bit
804 ifeq ($(TGLIB32),yes)
805 sa32bit: DFLAGS += -DARCH32
807 sa32bit: CFLAGS += -m32
809 sa32bit: tests/32bits/sadc32 tests/32bits/sar32
816 @cat $(TESTDIR)/$(X) | $(TESTRUN)
820 @cat $(EXTRADIR)/$(X) | $(TESTRUN)
822 # Use "do_test" script to make the following targets
823 simtest: DFLAGS += -DTEST
825 simtest: all testcomp
826 @$(foreach x, $(TESTLIST), $(MAKE) X=$x unit || exit;)
828 ln -s root1 tests/root
829 @echo Simulation tests: Success!
831 extratest: DFLAGS += -DTEST
834 @$(foreach x, $(EXTRALIST), $(MAKE) X=$x extraunit || exit;)
836 ln -s root1 tests/root
837 @echo Extra simulation tests: Success!
840 rm -f sadc sar sadf iostat tapestat mpstat pidstat cifsiostat *.o *.a core TAGS tests/*.tmp tests/extra/*.tmp
841 rm -f nfsiostat* man/nfsiostat*
842 rm -f tests/sa[0123]*
844 ln -s root1 tests/root
845 rm -f tests/ini/inisar tests/32bits/sadc32 tests/32bits/sar32
846 rm -f tests/ini/*.o tests/ini/*.a tests/ini/core tests/pcpar.* tests/extra/pcpar-ssr.*
847 rm -f tests/32bits/*.o tests/32bits/*.a tests/32bits/core
848 find nls -name "*.gmo" -exec rm -f {} \;
850 almost-distclean: clean nls/sysstat.pot
851 rm -f sa1 sa2 sysstat cron/crontab version.h sysconfig.h
852 rm -f sysstat.sysconfig cron/sysstat.crond cron/sysstat.cron.daily sysstat.service
853 rm -f cron/sysstat-collect.service cron/sysstat-collect.timer
854 rm -f cron/sysstat-summary.service cron/sysstat-summary.timer cron/sysstat.sleep
855 rm -f cron/sysstat.cron.hourly cron/sysstat.crond.sample cron/sysstat.crond.sample.in
856 rm -f man/sa1.8 man/sa2.8 man/sadc.8 man/sadf.1 man/sar.1 man/iostat.1 man/sysstat.5
857 rm -f tests/variables tests/data
858 rm -f man/cifsiostat.1
859 rm -f *.log config.status
860 rm -rf autom4te.cache
861 rm -f *.save *.old .*.swp data
862 find . -name "*~" -exec rm -f {} \;
864 distclean: almost-distclean
867 maintainer-clean: distclean
870 dist: almost-distclean
871 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | gzip -v9 > sysstat-$(VERSION).tar.gz)
873 bdist: almost-distclean
874 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION).tar.bz2)
876 xdist: almost-distclean
877 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | xz > sysstat-$(VERSION).tar.xz)
879 gitdist: almost-distclean
880 cd .. && (tar --exclude=Makefile -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION)-git.tar.bz2)