1 # Makefile to build sysstat commands
2 # (C) 1999-2020 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@
26 HAVE_SENSORS = @HAVE_SENSORS@
29 ifeq ($(HAVE_SENSORS),y)
30 LFSENSORS = @LFSENSORS@
31 DFSENSORS = @DFSENSORS@
47 DESTDIR = $(RPM_BUILD_ROOT)
49 # These two variables are needed by other ones (eg bindir)
51 exec_prefix = @exec_prefix@
52 datarootdir = @datarootdir@
55 SA_LIB_DIR = @SA_LIB_DIR@
57 SADC_PATH = $(SA_LIB_DIR)/sadc
64 # With recent versions of autoconf, mandir defaults to ${datarootdir}/man
65 # (i.e. $prefix/share/man)
68 MAN1_DIR = $(MAN_DIR)/man1
69 MAN5_DIR = $(MAN_DIR)/man5
70 MAN8_DIR = $(MAN_DIR)/man8
76 NLS_DIR = $(PREFIX)/share/locale
77 SYSCONFIG_DIR = @SYSCONFIG_DIR@
78 SYSCONFIG_FILE = @SYSCONFIG_FILE@
81 CFLAGS = @CFLAGS@ -Wall -Wstrict-prototypes -pipe -O2
84 DFLAGS += -DSA_DIR=\"$(SA_DIR)\" -DSADC_PATH=\"$(SADC_PATH)\"
85 DFLAGS += $(DFSENSORS)
103 SYSMACROS = @SYSMACROS@
104 ifeq ($(SYSMACROS),y)
105 DFLAGS += -DHAVE_SYS_SYSMACROS_H
107 LINUX_SCHED = @LINUX_SCHED@
108 ifeq ($(LINUX_SCHED),y)
109 DFLAGS += -DHAVE_LINUX_SCHED_H
111 PCP_IMPL = @PCP_IMPL@
113 DFLAGS += -DHAVE_PCP_IMPL_H
115 SYSPARAM = @SYSPARAM@
117 DFLAGS += -DHAVE_SYS_PARAM_H
123 REQUIRE_NLS = -DUSE_NLS -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=\"$(NLS_DIR)\"
126 DFLAGS += $(REQUIRE_NLS)
128 INSTALL_CRON = @INSTALL_CRON@
129 CRON_OWNER = @CRON_OWNER@
131 MAN_GROUP = @MAN_GROUP@
132 ifndef IGNORE_FILE_ATTRIBUTES
133 IGNORE_FILE_ATTRIBUTES = @IGNORE_FILE_ATTRIBUTES@
135 ifeq ($(IGNORE_FILE_ATTRIBUTES),y)
138 MANGRPARG = -g $(MAN_GROUP)
141 CLEAN_SA_DIR = @CLEAN_SA_DIR@
143 ifndef COMPRESS_MANPG
144 COMPRESS_MANPG = @COMPRESS_MANPG@
147 INSTALL_DOC = @INSTALL_DOC@
150 COPY_ONLY = @COPY_ONLY@
154 SYSTEMCTL = @SYSTEMCTL@
155 SYSTEMD_UNIT_DIR = @SYSTEMD_UNIT_DIR@
156 SYSTEMD_SLEEP_DIR = @SYSTEMD_SLEEP_DIR@
159 USE_CROND = @USE_CROND@
161 ifeq ($(USE_CROND),y)
165 # Run-command directories
169 RC0_DIR = $(RC_DIR)/rc0.d
170 RC1_DIR = $(RC_DIR)/rc1.d
171 RC2_DIR = $(RC_DIR)/rc2.d
172 RC3_DIR = $(RC_DIR)/rc3.d
173 RC4_DIR = $(RC_DIR)/rc4.d
174 RC5_DIR = $(RC_DIR)/rc5.d
175 RC6_DIR = $(RC_DIR)/rc6.d
177 INIT_DIR = @INIT_DIR@
180 INITD_DIR = @INITD_DIR@
183 SOURCE_CODE= $(wildcard *.c *.h)
185 NLSPO= $(wildcard nls/*.po)
186 NLSGMO= $(NLSPO:.po=.gmo)
187 NLSPOT= $(NLSPO:.po=.pot)
193 $(MSGMERGE) -U $< nls/sysstat.pot
196 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
199 $(CC) -o $@ $(CFLAGS) $^ $(LFLAGS)
201 all: sadc sar sadf iostat tapestat mpstat pidstat cifsiostat locales
203 common_light.o: common.c version.h common.h
204 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
206 common.o: common.c version.h common.h
208 systest.o: systest.c systest.h
210 sa_common_light.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
211 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
213 sa_common.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
215 ioconf.o: ioconf.c ioconf.h common.h sysconfig.h
217 act_sadc.o: activity.c sa.h common.h rd_stats.h rd_sensors.h
218 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
220 act_sar.o: activity.c sa.h common.h rd_stats.h rd_sensors.h pr_stats.h
221 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
223 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
224 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
226 rd_stats.o: rd_stats.c common.h rd_stats.h
227 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
229 rd_stats_light.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
230 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
232 count.o: count.c common.h rd_stats.h
233 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
235 count_light.o: count.c common.h rd_stats.h
236 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
238 rd_sensors.o: rd_sensors.c common.h rd_sensors.h rd_stats.h
240 pr_stats.o: pr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h pr_stats.h
242 rndr_stats.o: rndr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h rndr_stats.h
244 xml_stats.o: xml_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h xml_stats.h
246 json_stats.o: json_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h json_stats.h
248 svg_stats.o: svg_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h svg_stats.h
250 raw_stats.o: raw_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h raw_stats.h
252 pcp_stats.o: pcp_stats.c sa.h pcp_stats.h
254 sa_wrap.o: sa_wrap.c sa.h common.h rd_stats.h count.h rd_sensors.h
255 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
257 format_sadf.o: format.c sadf.h sa.h common.h rd_stats.h rd_sensors.h
258 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
260 format_sar.o: format.c sa.h common.h rd_stats.h rd_sensors.h
261 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
263 pcp_def_metrics.o: pcp_def_metrics.c
265 sadf_misc.o: sadf_misc.c sadf.h pcp_def_metrics.h sa.h common.h rd_stats.h rd_sensors.h
267 sa_conv.o: sa_conv.c version.h sadf.h sa.h common.h rd_stats.h rd_sensors.h sa_conv.h
269 # Explicit rules needed to prevent possible file corruption
270 # when using parallel execution.
271 libsyscom.a: common.o ioconf.o systest.o
275 librdstats.a: rd_stats.o count.o
278 librdstats_light.a: rd_stats_light.o count_light.o
281 # librdsensors.a: librdsensors.a(rd_sensors.o)
282 librdsensors.a: rd_sensors.o
285 sadc.o: sadc.c sa.h version.h common.h rd_stats.h rd_sensors.h
287 sadc: LFLAGS += $(LFSENSORS)
289 sadc: sadc.o act_sadc.o sa_wrap.o sa_common_light.o common_light.o systest.o librdstats.a librdsensors.a
291 sar.o: sar.c sa.h version.h common.h rd_stats.h rd_sensors.h
293 sar: sar.o act_sar.o format_sar.o sa_common.o pr_stats.o librdstats_light.a libsyscom.a
295 sadf.o: sadf.c sadf.h version.h sa.h common.h rd_stats.h rd_sensors.h
297 sadf: LFLAGS += $(LFPCP)
299 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
301 iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h count.h
303 iostat: iostat.o librdstats_light.a libsyscom.a
305 tapestat.o: tapestat.c tapestat.h version.h common.h count.h rd_stats.h
307 tapestat: tapestat.o librdstats_light.a libsyscom.a
309 pidstat.o: pidstat.c pidstat.h version.h common.h rd_stats.h count.h
311 pidstat: pidstat.o librdstats_light.a libsyscom.a
313 mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h count.h
315 mpstat: mpstat.o librdstats_light.a libsyscom.a
317 cifsiostat.o: cifsiostat.c cifsiostat.h count.h rd_stats.h version.h common.h
319 cifsiostat: cifsiostat.o librdstats_light.a libsyscom.a
321 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
323 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
324 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
326 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
327 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
329 tests/ini/count_light.o: tests/ini/count.c tests/ini/common.h tests/ini/rd_stats.h
330 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
332 tests/ini/libsyscom.a: tests/ini/common.o tests/ini/ioconf.o
335 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
336 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
338 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
340 tests/ini/librdstats_light.a: tests/ini/rd_stats_light.o tests/ini/count_light.o
343 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
345 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
347 tests/32bits/sadc32.o: sadc.c sa.h version.h common.h rd_stats.h rd_sensors.h
348 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
350 tests/32bits/sadc32: LFLAGS += $(LFSENSORS)
352 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
353 $(CC) -m32 -o $@ $(CFLAGS) $^ $(LFLAGS)
355 tests/32bits/sar32.o: sar.c sa.h version.h common.h rd_stats.h rd_sensors.h
356 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
358 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
359 $(CC) -m32 -o $@ $(CFLAGS) $^ $(LFLAGS)
361 tests/32bits/act_sadc32.o: activity.c sa.h common.h rd_stats.h rd_sensors.h
362 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
364 tests/32bits/act_sar32.o: activity.c sa.h common.h rd_stats.h rd_sensors.h pr_stats.h
365 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
367 tests/32bits/sa_wrap32.o: sa_wrap.c sa.h common.h rd_stats.h count.h rd_sensors.h
368 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
370 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
371 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
373 tests/32bits/sa_common32.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
374 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
376 tests/32bits/common_light32.o: common.c version.h common.h
377 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
379 tests/32bits/systest32.o: systest.c systest.h
380 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
382 tests/32bits/libsyscom32.a: tests/32bits/common32.o tests/32bits/ioconf32.o tests/32bits/systest32.o
385 tests/32bits/librdstats32.a: tests/32bits/rd_stats32.o tests/32bits/count32.o
388 tests/32bits/librdstats_light32.a: tests/32bits/rd_stats_light32.o tests/32bits/count_light32.o
391 tests/32bits/librdsensors32.a: tests/32bits/rd_sensors32.o
394 tests/32bits/rd_stats32.o: rd_stats.c common.h rd_stats.h
395 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
397 tests/32bits/rd_stats_light32.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
398 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
400 tests/32bits/count32.o: count.c common.h rd_stats.h
401 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
403 tests/32bits/count_light32.o: count.c common.h rd_stats.h
404 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
406 tests/32bits/format_sar32.o: format.c sa.h common.h rd_stats.h rd_sensors.h
407 $(CC) -m32 -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
409 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
410 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
412 tests/32bits/common32.o: common.c version.h common.h
413 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
415 tests/32bits/ioconf32.o: ioconf.c ioconf.h common.h sysconfig.h
416 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
418 tests/32bits/rd_sensors32.o: rd_sensors.c common.h rd_sensors.h rd_stats.h
419 $(CC) -m32 -o $@ -c $(CFLAGS) $(DFLAGS) $<
427 nls/sysstat.pot: $(wildcard *.c)
428 $(XGETTEXT) -o $@ -k_ --msgid-bugs-address="sysstat <at> orange.fr" $^
431 .PHONY: clean distclean install install_base install_all uninstall \
432 uninstall_base uninstall_all dist bdist xdist gitdist squeeze simtest
434 install_man: man/sadc.8 man/sar.1 man/sadf.1 man/sa1.8 man/sa2.8 man/sysstat.5
435 ifeq ($(INSTALL_DOC),y)
436 mkdir -p $(DESTDIR)$(MAN1_DIR)
437 mkdir -p $(DESTDIR)$(MAN5_DIR)
438 mkdir -p $(DESTDIR)$(MAN8_DIR)
439 rm -f $(DESTDIR)$(MAN8_DIR)/sa1.8*
440 $(INSTALL_DATA) $(MANGRPARG) man/sa1.8 $(DESTDIR)$(MAN8_DIR)
441 rm -f $(DESTDIR)$(MAN8_DIR)/sa2.8*
442 $(INSTALL_DATA) $(MANGRPARG) man/sa2.8 $(DESTDIR)$(MAN8_DIR)
443 rm -f $(DESTDIR)$(MAN8_DIR)/sadc.8*
444 $(INSTALL_DATA) $(MANGRPARG) man/sadc.8 $(DESTDIR)$(MAN8_DIR)
445 rm -f $(DESTDIR)$(MAN1_DIR)/sar.1*
446 $(INSTALL_DATA) $(MANGRPARG) man/sar.1 $(DESTDIR)$(MAN1_DIR)
447 rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
448 $(INSTALL_DATA) $(MANGRPARG) man/sadf.1 $(DESTDIR)$(MAN1_DIR)
449 rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
450 $(INSTALL_DATA) $(MANGRPARG) man/sysstat.5 $(DESTDIR)$(MAN5_DIR)
451 rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
452 $(INSTALL_DATA) $(MANGRPARG) man/iostat.1 $(DESTDIR)$(MAN1_DIR)
453 rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
454 $(INSTALL_DATA) $(MANGRPARG) man/tapestat.1 $(DESTDIR)$(MAN1_DIR)
455 rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
456 $(INSTALL_DATA) $(MANGRPARG) man/mpstat.1 $(DESTDIR)$(MAN1_DIR)
457 rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
458 $(INSTALL_DATA) $(MANGRPARG) man/pidstat.1 $(DESTDIR)$(MAN1_DIR)
459 rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
460 $(INSTALL_DATA) $(MANGRPARG) man/cifsiostat.1 $(DESTDIR)$(MAN1_DIR)
461 ifeq ($(COMPRESS_MANPG),y)
462 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa1.8
463 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa2.8
464 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sadc.8
465 $(ZIP) $(DESTDIR)$(MAN1_DIR)/sar.1
466 $(ZIP) $(DESTDIR)$(MAN1_DIR)/sadf.1
467 $(ZIP) $(DESTDIR)$(MAN5_DIR)/sysstat.5
468 $(ZIP) $(DESTDIR)$(MAN1_DIR)/iostat.1
469 $(ZIP) $(DESTDIR)$(MAN1_DIR)/tapestat.1
470 $(ZIP) $(DESTDIR)$(MAN1_DIR)/mpstat.1
471 $(ZIP) $(DESTDIR)$(MAN1_DIR)/pidstat.1
472 $(ZIP) $(DESTDIR)$(MAN1_DIR)/cifsiostat.1
477 catalogs="$(SOURCE_CODE)"; \
478 for c in $$catalogs; do \
479 echo "Squeezing file: $$c"; \
480 sed 's/[\t ]*$$//g' $$c > squeeze.tmp; \
481 mv squeeze.tmp $$c; \
486 catalogs='$(NLSGMO)'; \
487 for c in $$catalogs; do \
489 c=`echo $$c | sed 's/\.gmo$$//'`; \
490 mkdir -p $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES; \
491 echo "NLS: Installing $$c file..." ; \
492 $(INSTALL_DATA) nls/$$c.gmo $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES/$(PACKAGE).mo; \
496 install_base: all sa1 sa2 sysstat.sysconfig install_man install_nls
497 mkdir -p $(DESTDIR)$(SA_LIB_DIR)
498 mkdir -p $(DESTDIR)$(SA_DIR)
499 ifeq ($(CLEAN_SA_DIR),y)
500 find $(DESTDIR)$(SA_DIR) -type f | egrep "/sar?[0-9]{2,8}(\.(Z|gz|bz2|xz|lz|lzo))?$$" | xargs rm -f
501 find $(DESTDIR)$(SA_DIR) -type f | egrep "/sar?[0-9]{2,8}$$" | xargs rm -f
503 mkdir -p $(DESTDIR)$(BIN_DIR)
504 mkdir -p $(DESTDIR)$(DOC_DIR)
505 mkdir -p $(DESTDIR)$(SYSCONFIG_DIR)
506 $(INSTALL_BIN) sa1 $(DESTDIR)$(SA_LIB_DIR)
507 $(INSTALL_BIN) sa2 $(DESTDIR)$(SA_LIB_DIR)
508 $(INSTALL_BIN) sadc $(DESTDIR)$(SA_LIB_DIR)
509 $(INSTALL_BIN) sar $(DESTDIR)$(BIN_DIR)
510 $(INSTALL_BIN) sadf $(DESTDIR)$(BIN_DIR)
511 $(INSTALL_BIN) iostat $(DESTDIR)$(BIN_DIR)
512 $(INSTALL_BIN) tapestat $(DESTDIR)$(BIN_DIR)
513 $(INSTALL_BIN) mpstat $(DESTDIR)$(BIN_DIR)
514 $(INSTALL_BIN) pidstat $(DESTDIR)$(BIN_DIR)
515 $(INSTALL_BIN) cifsiostat $(DESTDIR)$(BIN_DIR)
516 $(INSTALL_DATA) sysstat.ioconf $(DESTDIR)$(SYSCONFIG_DIR)
517 $(INSTALL_DATA) sysstat.sysconfig $(DESTDIR)$(SYSCONFIG_DIR)/$(SYSCONFIG_FILE)
518 ifeq ($(INSTALL_DOC),y)
519 $(INSTALL_DATA) CHANGES $(DESTDIR)$(DOC_DIR)
520 $(INSTALL_DATA) COPYING $(DESTDIR)$(DOC_DIR)
521 $(INSTALL_DATA) CREDITS $(DESTDIR)$(DOC_DIR)
522 $(INSTALL_DATA) README.md $(DESTDIR)$(DOC_DIR)
523 $(INSTALL_DATA) FAQ.md $(DESTDIR)$(DOC_DIR)
524 $(INSTALL_DATA) *.lsm $(DESTDIR)$(DOC_DIR)
527 ifdef SYSTEMD_UNIT_DIR
528 install_all: install_base cron/sysstat-collect.service cron/sysstat-collect.timer \
529 cron/sysstat.sleep cron/sysstat-summary.service cron/sysstat-summary.timer
531 install_all: install_base cron/crontab sysstat \
532 cron/sysstat.crond cron/sysstat.cron.daily cron/sysstat.cron.hourly
535 ifneq ($(IGNORE_FILE_ATTRIBUTES),y)
536 $(CHOWN) $(CRON_OWNER) $(DESTDIR)$(SA_DIR)
538 ifdef SYSTEMD_UNIT_DIR
539 mkdir -p $(DESTDIR)$(SYSTEMD_UNIT_DIR)
541 if [ -d /etc/cron.d ]; then \
542 mkdir -p $(DESTDIR)/etc/cron.d; \
543 elif [ -d /etc/cron.hourly -a -d /etc/cron.daily ]; then \
544 mkdir -p $(DESTDIR)/etc/cron.hourly $(DESTDIR)/etc/cron.daily; \
546 if [ -d $(INIT_DIR) ]; then \
547 mkdir -p $(DESTDIR)$(INIT_DIR); \
548 elif [ -d $(RC_DIR) ]; then \
549 mkdir -p $(DESTDIR)$(RC_DIR); \
553 ifdef SYSTEMD_SLEEP_DIR
554 mkdir -p $(DESTDIR)$(SYSTEMD_SLEEP_DIR)
557 if [ -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
558 if [ -d $(DESTDIR)/etc/cron.d ]; then \
559 $(INSTALL_DATA) cron/sysstat.crond $(DESTDIR)/etc/cron.d/sysstat; \
560 elif [ -d $(DESTDIR)/etc/cron.hourly -a -d $(DESTDIR)/etc/cron.daily ]; then \
561 $(INSTALL_BIN) cron/sysstat.cron.hourly $(DESTDIR)/etc/cron.hourly/sysstat; \
562 $(INSTALL_BIN) cron/sysstat.cron.daily $(DESTDIR)/etc/cron.daily/sysstat; \
565 ifeq ($(COPY_ONLY),n)
566 if [ \( -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" \) -a ! -d $(DESTDIR)/etc/cron.d ]; then \
567 if [ ! -d $(DESTDIR)/etc/cron.hourly -o ! -d $(DESTDIR)/etc/cron.daily ]; then \
568 su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).save"; \
569 $(CP) -a /tmp/crontab-$(CRON_OWNER).save ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.save; \
570 echo "USER'S PREVIOUS CRONTAB SAVED IN CURRENT DIRECTORY (USING .save SUFFIX)."; \
571 su $(CRON_OWNER) -c "crontab cron/crontab"; \
575 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
576 $(INSTALL_DATA) sysstat.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
577 $(INSTALL_DATA) cron/sysstat-collect.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
578 $(INSTALL_DATA) cron/sysstat-collect.timer $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
579 $(INSTALL_DATA) cron/sysstat-summary.service $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
580 $(INSTALL_DATA) cron/sysstat-summary.timer $(DESTDIR)$(SYSTEMD_UNIT_DIR); \
581 elif [ -d $(DESTDIR)$(INIT_DIR) ]; then \
582 $(INSTALL_BIN) sysstat $(DESTDIR)$(INIT_DIR)/sysstat; \
583 if [ "$(COPY_ONLY)" = "n" ]; then \
584 if [ -x "$(CHKCONFIG)" ]; then \
585 cd $(DESTDIR)$(INIT_DIR) && $(CHKCONFIG) --add sysstat; \
587 [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
588 [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
589 [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
590 cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
591 cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
592 cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
595 elif [ -d $(DESTDIR)$(RC_DIR) ]; then \
596 $(INSTALL_BIN) sysstat $(DESTDIR)$(RC_DIR)/rc.sysstat; \
597 if [ "$(COPY_ONLY)" = "n" ]; then \
598 if [ -x "$(CHKCONFIG)" ]; then \
599 cd $(DESTDIR)$(RC_DIR) && $(CHKCONFIG) --add rc.sysstat; \
601 [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
602 [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
603 [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
604 cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
605 cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
606 cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
610 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -n "$(SYSTEMD_SLEEP_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_SLEEP_DIR)" ]; then \
611 $(INSTALL_BIN) cron/sysstat.sleep $(DESTDIR)$(SYSTEMD_SLEEP_DIR); \
614 ifeq ($(COPY_ONLY),n)
615 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -x "$(SYSTEMCTL)" ]; then \
616 $(SYSTEMCTL) enable sysstat.service; \
621 ifeq ($(INSTALL_DOC),y)
622 rm -f $(DESTDIR)$(MAN8_DIR)/sadc.8*
623 rm -f $(DESTDIR)$(MAN8_DIR)/sa1.8*
624 rm -f $(DESTDIR)$(MAN8_DIR)/sa2.8*
625 rm -f $(DESTDIR)$(MAN1_DIR)/sar.1*
626 rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
627 rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
628 rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
629 rm -f $(DESTDIR)$(MAN1_DIR)/tapestat.1*
630 rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
631 rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
632 rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
637 -catalogs='$(NLSGMO)'; \
638 for c in $$catalogs; do \
640 c=`echo $$c | sed 's/\.gmo$$//'`; \
641 rm -f $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES/$(PACKAGE).mo; \
642 rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES 2>/dev/null; \
643 rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c 2>/dev/null; \
647 uninstall_base: uninstall_man uninstall_nls
648 rm -f $(DESTDIR)$(SA_LIB_DIR)/sadc
649 rm -f $(DESTDIR)$(SA_LIB_DIR)/sa1
650 rm -f $(DESTDIR)$(SA_LIB_DIR)/sa2
651 rm -f $(DESTDIR)$(BIN_DIR)/sar
652 rm -f $(DESTDIR)$(BIN_DIR)/sadf
653 rm -f $(DESTDIR)$(BIN_DIR)/iostat
654 rm -f $(DESTDIR)$(BIN_DIR)/tapestat
655 rm -f $(DESTDIR)$(BIN_DIR)/mpstat
656 rm -f $(DESTDIR)$(BIN_DIR)/pidstat
657 rm -f $(DESTDIR)$(BIN_DIR)/cifsiostat
658 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_LIB_DIR)
659 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)/[0-9]?????
660 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)
661 # No need to keep sysstat scripts, config files and links since
662 # the binaries have been deleted.
663 rm -f $(DESTDIR)$(INIT_DIR)/sysstat
664 rm -f $(DESTDIR)$(RC_DIR)/rc.sysstat
665 rm -f $(DESTDIR)$(SYSCONFIG_DIR)/$(SYSCONFIG_FILE)
666 rm -f $(DESTDIR)$(SYSCONFIG_DIR)/sysstat.ioconf
667 rm -f $(DESTDIR)$(RC2_DIR)/S??sysstat
668 rm -f $(DESTDIR)$(RC2_DIR)/S??rc.sysstat
669 rm -f $(DESTDIR)$(RC3_DIR)/S??sysstat
670 rm -f $(DESTDIR)$(RC3_DIR)/S??rc.sysstat
671 rm -f $(DESTDIR)$(RC5_DIR)/S??sysstat
672 rm -f $(DESTDIR)$(RC5_DIR)/S??rc.sysstat
673 # Delete possible kill entries installed by chkconfig
674 rm -f $(DESTDIR)$(RC0_DIR)/K??sysstat
675 rm -f $(DESTDIR)$(RC0_DIR)/K??rc.sysstat
676 rm -f $(DESTDIR)$(RC1_DIR)/K??sysstat
677 rm -f $(DESTDIR)$(RC1_DIR)/K??rc.sysstat
678 rm -f $(DESTDIR)$(RC4_DIR)/K??sysstat
679 rm -f $(DESTDIR)$(RC4_DIR)/K??rc.sysstat
680 rm -f $(DESTDIR)$(RC6_DIR)/K??sysstat
681 rm -f $(DESTDIR)$(RC6_DIR)/K??rc.sysstat
682 # Vixie cron entries also can be safely deleted here
683 rm -f $(DESTDIR)/etc/cron.d/sysstat
684 # Id. for Slackware cron entries
685 rm -f $(DESTDIR)/etc/cron.hourly/sysstat
686 rm -f $(DESTDIR)/etc/cron.daily/sysstat
687 ifeq ($(INSTALL_DOC),y)
688 rm -f $(DESTDIR)$(DOC_DIR)/*
689 -rmdir $(DESTDIR)$(DOC_DIR)
691 @echo "Please ignore the errors above, if any."
693 uninstall_all: uninstall_base
694 ifeq ($(COPY_ONLY),n)
695 -if [ -z "$(SYSTEMD_UNIT_DIR)" -o ! -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
696 su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).old" ; \
697 $(CP) -a /tmp/crontab-$(CRON_OWNER).old ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.old ; \
698 echo "USER'S CRONTAB SAVED IN CURRENT DIRECTORY (USING .old SUFFIX)." ; \
699 su $(CRON_OWNER) -c "crontab -r" ; \
701 -if [ -n "$(SYSTEMD_UNIT_DIR)" -a -x "$(SYSTEMCTL)" ]; then \
702 $(SYSTEMCTL) disable sysstat.service; \
705 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_UNIT_DIR)" ]; then \
706 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat.service; \
707 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-collect.service; \
708 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-collect.timer; \
709 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-summary.service; \
710 rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysstat-summary.timer; \
712 if [ -n "$(SYSTEMD_UNIT_DIR)" -a -n "$(SYSTEMD_SLEEP_DIR)" -a -d "$(DESTDIR)$(SYSTEMD_SLEEP_DIR)" ]; then \
713 rm -f $(DESTDIR)$(SYSTEMD_SLEEP_DIR)/sysstat.sleep; \
716 ifeq ($(INSTALL_CRON),y)
717 uninstall: uninstall_all
719 uninstall: uninstall_base
722 ifeq ($(INSTALL_CRON),y)
725 install: install_base
729 po-files: nls/sysstat.pot $(NLSPOT)
736 TESTLIST:=$(shell ls $(TESTDIR) | egrep '^[0-9]+$$' | sort -n)
738 testcomp: tests/ini/inisar sa32bit
740 ifeq ($(TGLIB32),yes)
741 sa32bit: tests/32bits/sadc32 tests/32bits/sar32
748 @cat $(TESTDIR)/$(X) | $(TESTRUN)
750 # Use "do_test" script to make the following target
751 simtest: all testcomp
752 @$(foreach x, $(TESTLIST), $(MAKE) X=$x unit || exit;)
754 ln -s root1 tests/root
755 @echo Simulation tests: Success!
758 rm -f sadc sar sadf iostat tapestat mpstat pidstat cifsiostat *.o *.a core TAGS tests/*.tmp
759 rm -f nfsiostat* man/nfsiostat*
762 ln -s root1 tests/root
763 rm -f tests/ini/inisar tests/32bits/sadc32 tests/32bits/sar32
764 rm -f tests/ini/*.o tests/ini/*.a tests/ini/core tests/pcpar.*
765 rm -f tests/32bits/*.o tests/32bits/*.a tests/32bits/core
766 find nls -name "*.gmo" -exec rm -f {} \;
768 almost-distclean: clean nls/sysstat.pot
769 rm -f sa1 sa2 sysstat cron/crontab version.h sysconfig.h
770 rm -f sysstat.sysconfig cron/sysstat.crond cron/sysstat.cron.daily sysstat.service
771 rm -f cron/sysstat-collect.service cron/sysstat-collect.timer
772 rm -f cron/sysstat-summary.service cron/sysstat-summary.timer cron/sysstat.sleep
773 rm -f cron/sysstat.cron.hourly cron/sysstat.crond.sample cron/sysstat.crond.sample.in
774 rm -f man/sa1.8 man/sa2.8 man/sadc.8 man/sadf.1 man/sar.1 man/iostat.1 man/sysstat.5
775 rm -f tests/variables tests/data
776 rm -f man/cifsiostat.1
777 rm -f *.log config.status
778 rm -rf autom4te.cache
779 rm -f *.save *.old .*.swp data
780 find . -name "*~" -exec rm -f {} \;
782 distclean: almost-distclean
785 maintainer-clean: distclean
788 dist: almost-distclean
789 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | gzip -v9 > sysstat-$(VERSION).tar.gz)
791 bdist: almost-distclean
792 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION).tar.bz2)
794 xdist: almost-distclean
795 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | xz > sysstat-$(VERSION).tar.xz)
797 gitdist: almost-distclean
798 cd .. && (tar --exclude=Makefile -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION)-git.tar.bz2)