X-Git-Url: https://git.proxmox.com/?p=mirror_smartmontools-debian.git;a=blobdiff_plain;f=Makefile.am;h=440153711469fea1531749cd2fa44056231ffdf5;hp=6661801eee3037e790f551ccfaa08d1fccf16d2e;hb=fb337c9cb7f2443edb74813df8f6d69501c0eef0;hpb=4d561bdbb71727621a1890b24b1ec50e21da1fe9 diff --git a/Makefile.am b/Makefile.am index 6661801..4401537 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,17 +1,23 @@ ## Process this file with automake to produce Makefile.in # -# $Id: Makefile.am 3296 2011-03-16 22:17:51Z chrfranke $ +# $Id: Makefile.am 3957 2014-07-18 18:39:06Z chrfranke $ # @SET_MAKE@ +ACLOCAL_AMFLAGS = -I m4 + # Make sure .cpp takes precedence to avoid compiling old .c file SUFFIXES = .cpp .c .s .o # BUILD_INFO can be provided by package maintainers (see INSTALL file) BUILD_INFO= "(local build)" -AM_CPPFLAGS = -DBUILD_INFO='$(BUILD_INFO)' -DSMARTMONTOOLS_SYSCONFDIR='"$(sysconfdir)"' +AM_CPPFLAGS = \ + -DBUILD_INFO='$(BUILD_INFO)' \ + -DSMARTMONTOOLS_SYSCONFDIR='"$(sysconfdir)"' \ + -DSMARTMONTOOLS_SMARTDSCRIPTDIR='"$(smartdscriptdir)"' + if ENABLE_DRIVEDB AM_CPPFLAGS += -DSMARTMONTOOLS_DRIVEDBDIR='"$(drivedbdir)"' endif @@ -22,6 +28,9 @@ if ENABLE_ATTRIBUTELOG AM_CPPFLAGS += -DSMARTMONTOOLS_ATTRIBUTELOG='"$(attributelog)"' endif +if OS_WIN32_MINGW +AM_CPPFLAGS += -I$(srcdir)/os_win32 +endif if NEED_GETOPT_LONG AM_CPPFLAGS += -I$(srcdir)/getopt -DHAVE_GETOPT_LONG -D__GNU_LIBRARY__ endif @@ -29,8 +38,9 @@ if NEED_REGEX AM_CPPFLAGS += -I$(srcdir)/regex endif -sbin_PROGRAMS = smartd \ - smartctl +sbin_PROGRAMS = \ + smartctl \ + smartd if ENABLE_DRIVEDB if OS_WIN32_MINGW @@ -40,113 +50,138 @@ endif endif -smartd_SOURCES = smartd.cpp \ - atacmdnames.cpp \ - atacmdnames.h \ - atacmds.cpp \ - atacmds.h \ - dev_ata_cmd_set.cpp \ - dev_ata_cmd_set.h \ - dev_interface.cpp \ - dev_interface.h \ - dev_tunnelled.h \ - drivedb.h \ - int64.h \ - knowndrives.cpp \ - knowndrives.h \ - scsicmds.cpp \ - scsicmds.h \ - scsiata.cpp \ - utility.cpp \ - utility.h +smartctl_SOURCES = \ + smartctl.cpp \ + smartctl.h \ + atacmdnames.cpp \ + atacmdnames.h \ + atacmds.cpp \ + atacmds.h \ + ataidentify.cpp \ + ataidentify.h \ + ataprint.cpp \ + ataprint.h \ + dev_ata_cmd_set.cpp \ + dev_ata_cmd_set.h \ + dev_interface.cpp \ + dev_interface.h \ + dev_tunnelled.h \ + drivedb.h \ + int64.h \ + knowndrives.cpp \ + knowndrives.h \ + scsicmds.cpp \ + scsicmds.h \ + scsiata.cpp \ + scsiprint.cpp \ + scsiprint.h \ + utility.cpp \ + utility.h + +smartctl_LDADD = @os_deps@ @os_libs@ +smartctl_DEPENDENCIES = @os_deps@ + +EXTRA_smartctl_SOURCES = \ + os_darwin.cpp \ + os_darwin.h \ + os_linux.cpp \ + os_linux.h \ + os_freebsd.cpp \ + os_freebsd.h \ + os_netbsd.cpp \ + os_netbsd.h \ + os_openbsd.cpp \ + os_openbsd.h \ + os_qnxnto.cpp \ + os_qnxnto.h \ + os_solaris.cpp \ + os_solaris.h \ + os_solaris_ata.s \ + os_win32.cpp \ + os_generic.cpp \ + os_generic.h \ + aacraid.h \ + cciss.cpp \ + cciss.h \ + cissio_freebsd.h \ + dev_areca.cpp \ + dev_areca.h \ + dev_legacy.cpp \ + megaraid.h + +if OS_WIN32_MINGW + +smartctl_LDADD += smartctl_res.o +smartctl_DEPENDENCIES += smartctl_res.o + +endif + + +smartd_SOURCES = \ + smartd.cpp \ + atacmdnames.cpp \ + atacmdnames.h \ + atacmds.cpp \ + atacmds.h \ + dev_ata_cmd_set.cpp \ + dev_ata_cmd_set.h \ + dev_interface.cpp \ + dev_interface.h \ + dev_tunnelled.h \ + drivedb.h \ + int64.h \ + knowndrives.cpp \ + knowndrives.h \ + scsicmds.cpp \ + scsicmds.h \ + scsiata.cpp \ + utility.cpp \ + utility.h smartd_LDADD = @os_deps@ @os_libs@ @CAPNG_LDADD@ smartd_DEPENDENCIES = @os_deps@ -EXTRA_smartd_SOURCES = os_darwin.cpp \ - os_darwin.h \ - os_linux.cpp \ - os_linux.h \ - os_freebsd.cpp \ - os_freebsd.h \ - os_netbsd.cpp \ - os_netbsd.h \ - os_openbsd.cpp \ - os_openbsd.h \ - os_qnxnto.cpp \ - os_qnxnto.h \ - os_solaris.cpp \ - os_solaris.h \ - os_solaris_ata.s \ - os_win32.cpp \ - os_generic.cpp \ - os_generic.h \ - cciss.cpp \ - cciss.h \ - dev_legacy.cpp \ - megaraid.h - +EXTRA_smartd_SOURCES = \ + os_darwin.cpp \ + os_darwin.h \ + os_linux.cpp \ + os_linux.h \ + os_freebsd.cpp \ + os_freebsd.h \ + os_netbsd.cpp \ + os_netbsd.h \ + os_openbsd.cpp \ + os_openbsd.h \ + os_qnxnto.cpp \ + os_qnxnto.h \ + os_solaris.cpp \ + os_solaris.h \ + os_solaris_ata.s \ + os_win32.cpp \ + os_generic.cpp \ + os_generic.h \ + aacraid.h \ + cciss.cpp \ + cciss.h \ + cissio_freebsd.h \ + dev_areca.cpp \ + dev_areca.h \ + dev_legacy.cpp \ + megaraid.h if OS_WIN32_MINGW smartd_SOURCES += \ os_win32/daemon_win32.cpp \ os_win32/daemon_win32.h \ - os_win32/hostname_win32.cpp \ - os_win32/hostname_win32.h \ os_win32/syslog_win32.cpp \ os_win32/syslog.h -endif - -smartctl_SOURCES= smartctl.cpp \ - smartctl.h \ - atacmdnames.cpp \ - atacmdnames.h \ - atacmds.cpp \ - atacmds.h \ - ataprint.cpp \ - ataprint.h \ - dev_ata_cmd_set.cpp \ - dev_ata_cmd_set.h \ - dev_interface.cpp \ - dev_interface.h \ - dev_tunnelled.h \ - drivedb.h \ - int64.h \ - knowndrives.cpp \ - knowndrives.h \ - scsicmds.cpp \ - scsicmds.h \ - scsiata.cpp \ - scsiprint.cpp \ - scsiprint.h \ - utility.cpp \ - utility.h - +smartd_LDADD += smartd_res.o +smartd_DEPENDENCIES += smartd_res.o -smartctl_LDADD = @os_deps@ @os_libs@ -smartctl_DEPENDENCIES = @os_deps@ +endif -EXTRA_smartctl_SOURCES = os_linux.cpp \ - os_linux.h \ - os_freebsd.cpp \ - os_freebsd.h \ - os_netbsd.cpp \ - os_netbsd.h \ - os_openbsd.cpp \ - os_openbsd.h \ - os_qnxnto.cpp \ - os_qnxnto.h \ - os_solaris.cpp \ - os_solaris.h \ - os_win32.cpp \ - os_generic.cpp \ - os_generic.h \ - cciss.cpp \ - cciss.h \ - dev_legacy.cpp \ - megaraid.h if NEED_GETOPT_LONG @@ -213,6 +248,11 @@ if OS_SOLARIS extra_MANS = smartd.conf.4 \ smartctl.1m \ smartd.1m +if ENABLE_DRIVEDB +extra_MANS += update-smart-drivedb.1m +endif + +all-local: $(extra_MANS) install-man: $(extra_MANS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(mandir)/man4 @@ -239,39 +279,31 @@ uninstall-man: echo " rm -f $(DESTDIR)$(mandir)/man$$ext/$$inst"; \ rm -f $(DESTDIR)$(mandir)/man$$ext/$$inst; \ done -%.1m: %.8 - awk '/^.TH/ {$$3="1m"} {print}' < $< | \ - sed -e 's/smartd\.conf\(.*\)(5)/smartd.conf\1(4)/g' \ - -e 's/syslog\.conf\(.*\)(5)/syslog.conf\1(4)/g' \ - -e 's/smartctl\(.*\)(8)/smartctl\1(1m)/g' \ - -e 's/syslogd\(.*\)(8)/syslogd\1(1m)/g' \ - -e 's|/var/log/messages|/var/adm/messages|g' \ - -e 's/smartd\(.*\)(8)/smartd\1(1m)/g' > $@ -%.4: %.5 - awk '/^.TH/ {$$3="4"} {print}' < $< | \ - sed -e 's/smartd\.conf\(.*\)(5)/smartd.conf\1(4)/g' \ - -e 's/syslog\.conf\(.*\)(5)/syslog.conf\1(4)/g' \ - -e 's/smartctl\(.*\)(8)/smartdctl\1(1m)/g' \ - -e 's/syslogd\(.*\)(8)/syslogd\1(1m)/g' \ - -e 's|/var/log/messages|/var/adm/messages|g' \ - -e 's/smartd\(.*\)(8)/smartd\1(1m)/g' > $@ else # For systems that adopts traditional manner + man_MANS = smartd.conf.5 \ smartctl.8 \ smartd.8 + +if ENABLE_DRIVEDB +man_MANS += update-smart-drivedb.8 +endif + endif docsdir=$(docdir) -docs_DATA = AUTHORS \ - CHANGELOG \ - COPYING \ - INSTALL \ - NEWS \ - README \ - TODO \ - WARNINGS \ - smartd.conf +docs_DATA = \ + AUTHORS \ + ChangeLog \ + ChangeLog-5.0-6.0 \ + COPYING \ + INSTALL \ + NEWS \ + README \ + TODO \ + WARNINGS \ + smartd.conf examplesdir=$(exampledir) examples_DATA = \ @@ -280,7 +312,9 @@ examples_SCRIPTS = \ examplescripts/Example1 \ examplescripts/Example2 \ examplescripts/Example3 \ - examplescripts/Example4 + examplescripts/Example4 \ + examplescripts/Example5 \ + examplescripts/Example6 sysconf_DATA = smartd.conf @@ -314,47 +348,67 @@ uninstall-sysconfDATA: echo " rm -f $$f"; \ rm -f "$$f" +smartdscript_SCRIPTS = smartd_warning.sh + EXTRA_DIST = \ + autogen.sh \ smartd.initd.in \ + smartd.freebsd.initd.in \ smartd.8.in \ smartctl.8.in \ smartd.conf.5.in \ smartd.conf \ - autogen.sh \ + smartd.service.in \ + smartd_warning.sh.in \ update-smart-drivedb.in \ + update-smart-drivedb.8.in \ + m4/pkg.m4 \ os_darwin/SMART.in \ os_darwin/StartupParameters.plist \ os_darwin/English_Localizable.strings \ os_win32/installer.nsi \ - os_win32/syslogevt.c \ + os_win32/runcmd.c \ + os_win32/runcmda.exe.manifest \ + os_win32/runcmdu.exe.manifest \ + os_win32/smartctl_res.rc.in \ + os_win32/smartd_res.rc.in \ + os_win32/smartd_warning.cmd \ os_win32/syslogevt.mc \ os_win32/update-smart-drivedb.nsi \ os_win32/wbemcli_small.h \ + os_win32/wtssendmsg.c \ $(docs_DATA) \ $(examples_DATA) \ $(examples_SCRIPTS) -CLEANFILES = smartd.conf.5 \ - smartd.conf.4 \ - smartd.8 \ - smartd.1m \ - smartd.8.html \ - smartd.8.txt \ - smartctl.8 \ - smartctl.1m \ - smartctl.8.html \ - smartctl.8.txt \ - smartd.conf.5.html \ - smartd.conf.5.txt \ - smartd.initd \ - svnversion.h \ - update-smart-drivedb \ - SMART +CLEANFILES = \ + smartd.conf.5 \ + smartd.conf.4 \ + smartd.8 \ + smartd.1m \ + smartd.8.html \ + smartd.8.txt \ + smartctl.8 \ + smartctl.1m \ + smartctl.8.html \ + smartctl.8.txt \ + smartd.conf.5.html \ + smartd.conf.5.txt \ + smartd.initd \ + smartd.freebsd.initd \ + smartd.service \ + smartd_warning.sh \ + svnversion.h \ + update-smart-drivedb \ + update-smart-drivedb.8 \ + update-smart-drivedb.1m \ + SMART # 'make maintainer-clean' also removes files generated by './autogen.sh' MAINTAINERCLEANFILES = \ $(srcdir)/Makefile.in \ $(srcdir)/aclocal.m4 \ + $(srcdir)/compile \ $(srcdir)/configure \ $(srcdir)/config.guess \ $(srcdir)/config.h.in \ @@ -363,15 +417,17 @@ MAINTAINERCLEANFILES = \ $(srcdir)/depcomp \ $(srcdir)/install-sh \ $(srcdir)/missing \ - $(srcdir)/mkinstalldirs + $(srcdir)/mkinstalldirs \ + $(srcdir)/m4/pkg.m4 utility.o: svnversion.h if IS_SVN_BUILD # Get version info from SVN -svnversion.h: CHANGELOG Makefile $(srcdir)/.svn/entries - echo '/* svnversion.h. Generated by Makefile from svn info. */' > $@ - (cd $(srcdir) \ +svnversion.h: ChangeLog Makefile $(svn_deps) + @echo ' svn info | $$(VERSION_FROM_SVN_INFO) > $@' + @echo '/* svnversion.h. Generated by Makefile from svn info. */' > $@ + @(cd $(srcdir) \ && svnversion 2>/dev/null | sed -n 's,^\([0-9].*\),REV "\1",p' \ && TZ= LC_ALL=C svn info 2>/dev/null \ | sed -n 'h;s,^.* Date: *\([^ ]*\) .*$$,DATE "\1",p;g;s,^.* Date: *[^ ]* *\([^ ]*\) .*$$,TIME "\1",p') \ @@ -379,9 +435,10 @@ svnversion.h: CHANGELOG Makefile $(srcdir)/.svn/entries else # SVN not available, guess version info from Id strings -svnversion.h: CHANGELOG Makefile - echo '/* svnversion.h. Generated by Makefile from Id strings. */' > $@ - (cd $(srcdir) && cat CHANGELOG Makefile.am configure.in smart*.in *.cpp *.h *.s) \ +svnversion.h: ChangeLog Makefile + @echo ' cat ChangeLog $$(SOURCES) | $$(VERSION_FROM_SVN_IDS) > $@' + @echo '/* svnversion.h. Generated by Makefile from Id strings. */' > $@ + @(cd $(srcdir) && cat ChangeLog Makefile.am configure.ac smart*.in *.cpp *.h *.s) \ | sed -n 's,^.*\$$[I][d]: [^ ]* \([0-9][0-9]* [0-9][-0-9]* [0-9][:0-9]*\)[^:0-9][^$$]*\$$.*$$,\1,p' \ | sort -n -r \ | sed -n 'h;s,^\([^ ]*\) .*$$,REV "\1",p;g;s,^[^ ]* \([^ ]*\) .*$$,DATE "\1",p;g;s,^[^ ]* [^ ]* \([^ ]*\)$$,TIME "\1",p;q' \ @@ -393,31 +450,13 @@ if ENABLE_DRIVEDB drivedb_DATA = drivedb.h endif -if ENABLE_SAVESTATES -# Create $(savestatesdir) only -savestates_DATA = -endif - -if ENABLE_ATTRIBUTELOG -# Create $(attributelogdir) only -attributelog_DATA = -endif - -smartd.conf.5.in: smartd.8.in - sed '1,/STARTINCLUDE/ D;/ENDINCLUDE/,$$D' < $(srcdir)/smartd.8.in > $(top_builddir)/tmp.directives - sed '/STARTINCLUDE/,$$D' < $(srcdir)/smartd.conf.5.in > $(top_builddir)/tmp.head - sed '1,/ENDINCLUDE/D' < $(srcdir)/smartd.conf.5.in > $(top_builddir)/tmp.tail - cat $(top_builddir)/tmp.head > $(srcdir)/smartd.conf.5.in - echo '.\" STARTINCLUDE' >> $(srcdir)/smartd.conf.5.in - cat $(top_builddir)/tmp.directives >> $(srcdir)/smartd.conf.5.in - echo '.\" ENDINCLUDE' >> $(srcdir)/smartd.conf.5.in - cat $(top_builddir)/tmp.tail >> $(srcdir)/smartd.conf.5.in - rm -f $(top_builddir)/tmp.head $(top_builddir)/tmp.tail $(top_builddir)/tmp.directives - update-smart-drivedb: update-smart-drivedb.in config.status $(SHELL) ./config.status --file=$@ chmod +x $@ +smartd_warning.sh: smartd_warning.sh.in config.status + $(SHELL) ./config.status --file=$@ + chmod +x $@ if INSTALL_INITSCRIPT if OS_DARWIN @@ -452,10 +491,10 @@ uninstall-initdDATA-darwin: else -initd_DATA = smartd.initd +initd_DATA = @initdfile@ -smartd.initd: $(srcdir)/smartd.initd.in Makefile - sed "s|/usr/local/sbin/|$(sbindir)/|g" $(srcdir)/smartd.initd.in > $@ +@initdfile@: $(srcdir)/@initdfile@.in Makefile + sed "s|/usr/local/sbin/|$(sbindir)/|g" $(srcdir)/@initdfile@.in > $@ initd_install_name = smartd$(smartd_suffix) @@ -464,7 +503,7 @@ initd_DATA_uninstall = uninstall-initdDATA-generic install-initdDATA-generic: $(initd_DATA) $(mkinstalldirs) $(DESTDIR)$(initddir) - $(INSTALL_SCRIPT) $(top_builddir)/smartd.initd $(DESTDIR)$(initddir)/smartd$(smartd_suffix) + $(INSTALL_SCRIPT) $(top_builddir)/@initdfile@ $(DESTDIR)$(initddir)/smartd$(smartd_suffix) uninstall-initdDATA-generic: @@ -483,56 +522,138 @@ install-initdDATA : $(initd_DATA_install) uninstall-initdDATA: $(initd_DATA_uninstall) +if INSTALL_SYSTEMDUNIT +systemdsystemunit_DATA = smartd.service +endif + +smartd.service: smartd.service.in Makefile + cat $(srcdir)/smartd.service.in | \ + sed 's|/usr/local/sbin/smartd|$(sbindir)/smartd|' | \ + if test -n '$(systemdenvfile)'; then \ + sed 's|/usr/local/etc/sysconfig/smartmontools|$(systemdenvfile)|'; \ + else \ + sed -e '/^EnvironmentFile=/d' -e 's| *\$$smartd[_a-z]* *||g'; \ + fi > $@ + + +# Create empty directories if configured. +# Default install rules no longer create empty directories since automake 1.11. +# Uses $(mkinstalldirs) instead of $(MKDIR_P) to preserve support for automake 1.7 - 1.9. +installdirs-local: + @for d in '$(smartdplugindir)' '$(savestatesdir)' '$(attributelogdir)'; do \ + test -n "$$d" || continue; \ + echo "$(mkinstalldirs) $(DESTDIR)$$d"; \ + $(mkinstalldirs) "$(DESTDIR)$$d" || exit 1; \ + done + +install-data-local: installdirs-local + +# +# Build man pages +# if ENABLE_CAPABILITIES MAN_CAPABILITIES = cat else -MAN_CAPABILITIES = sed '/BEGIN ENABLE_CAPABILITIES/,/END ENABLE_CAPABILITIES/d' +MAN_CAPABILITIES = sed '/^\.\\" %IF ENABLE_CAPABILITIES/,/^\.\\" %ENDIF ENABLE_CAPABILITIES/ s,^,.\\"\# ,' endif if ENABLE_DRIVEDB MAN_DRIVEDB = sed "s|/usr/local/share/smartmontools/drivedb\\.h|$(drivedbdir)/drivedb.h|g" else -MAN_DRIVEDB = sed '/BEGIN ENABLE_DRIVEDB/,/END ENABLE_DRIVEDB/d' +MAN_DRIVEDB = sed '/^\.\\" %IF ENABLE_DRIVEDB/,/^\.\\" %ENDIF ENABLE_DRIVEDB/ s,^,.\\"\# ,' endif if ENABLE_SAVESTATES MAN_SAVESTATES = sed "s|/usr/local/var/lib/smartmontools/smartd\\.|$(savestates)|g" else -MAN_SAVESTATES = sed '/BEGIN ENABLE_SAVESTATES/,/END ENABLE_SAVESTATES/d' +MAN_SAVESTATES = sed '/^\.\\" %IF ENABLE_SAVESTATES/,/^\.\\" %ENDIF ENABLE_SAVESTATES/ s,^,.\\"\# ,' endif if ENABLE_ATTRIBUTELOG MAN_ATTRIBUTELOG = sed "s|/usr/local/var/lib/smartmontools/attrlog\\.|$(attributelog)|g" else -MAN_ATTRIBUTELOG = sed '/BEGIN ENABLE_ATTRIBUTELOG/,/END ENABLE_ATTRIBUTELOG/d' +MAN_ATTRIBUTELOG = sed '/^\.\\" %IF ENABLE_ATTRIBUTELOG/,/^\.\\" %ENDIF ENABLE_ATTRIBUTELOG/ s,^,.\\"\# ,' endif MAN_FILTER = \ - sed "s|CURRENT_SVN_VERSION|$(releaseversion)|g; \ - s|CURRENT_SVN_DATE|`sed -n 's,^.*DATE[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`|g; \ - s|CURRENT_SVN_REV|`sed -n 's,^.*REV[^"]*"\([^"]*\)".*$$,r\1,p' svnversion.h`|g; \ - s|/usr/local/share/man/|$(mandir)/|g; \ - s|/usr/local/sbin/|$(sbindir)/|g; \ - s|/usr/local/etc/rc\\.d/init.d/|$(initddir)/|g; \ - s|/usr/local/share/doc/smartmontools/examplescripts/|!exampledir!|g; \ - s|/usr/local/share/doc/smartmontools/|$(docsdir)/|g; \ - s|!exampledir!|$(exampledir)/|g; \ - s|/usr/local/etc/smartd\\.conf|$(sysconfdir)/smartd.conf|g; \ - s|/usr/local/etc/smart_drivedb\\.h|$(sysconfdir)/smart_drivedb\\.h|g" | \ + sed -e 's|CURRENT_SVN_VERSION|$(releaseversion)|g' \ + -e "s|CURRENT_SVN_DATE|`sed -n 's,^.*DATE[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`|g" \ + -e "s|CURRENT_SVN_REV|`sed -n 's,^.*REV[^"]*"\([^"]*\)".*$$,r\1,p' svnversion.h`|g" \ + -e 's|/usr/local/share/man/|$(mandir)/|g' \ + -e 's|/usr/local/sbin/|$(sbindir)/|g' \ + -e 's|/usr/local/etc/rc\.d/init.d/|$(initddir)/|g' \ + -e 's|/usr/local/share/doc/smartmontools/examplescripts/|!exampledir!|g' \ + -e 's|/usr/local/share/doc/smartmontools/|$(docsdir)/|g' \ + -e 's|!exampledir!|$(exampledir)/|g' \ + -e 's|/usr/local/etc/smartd\.conf|$(sysconfdir)/smartd.conf|g' \ + -e 's|/usr/local/etc/smart_drivedb\.h|$(sysconfdir)/smart_drivedb.h|g' \ + -e 's|/usr/local/etc/smartd_warning\.sh|$(smartdscriptdir)/smartd_warning.sh|g' \ + -e 's|\\fBmail\\fP|\\fB$(os_mailer)\\fP|g' \ + -e 's|\\'\''mail\\'\''|\\'\''$(os_mailer)\\'\''|g' \ + -e 's|/usr/bin/mail|/usr/bin/$(os_mailer)|g' \ + -e 's|RELEASE_6_0_DRIVEDB|@DRIVEDB_BRANCH@|g' | \ + if test -n '$(smartdplugindir)'; then \ + sed 's|/usr/local/etc/smartd_warning\.d|$(smartdplugindir)|g' ; \ + else \ + sed '/^\.\\" %IF ENABLE_SMARTDPLUGINDIR/,/^\.\\" %ENDIF ENABLE_SMARTDPLUGINDIR/ s,^,.\\"\# ,' ; \ + fi | \ + $(MAN_ATTRIBUTELOG) | \ $(MAN_CAPABILITIES) | \ $(MAN_DRIVEDB) | \ $(MAN_SAVESTATES) | \ - $(MAN_ATTRIBUTELOG) + if test -n '$(os_man_filter)'; then \ + sed -e 's,OS_MAN_FILTER,$(os_man_filter),g' \ + -e '/^\.\\" %IF NOT OS .*$(os_man_filter)/,/^.\\" %ENDIF NOT OS .*$(os_man_filter)/ s,^,.\\"\# ,' \ + -e '/^\.\\" %IF OS .*$(os_man_filter)/,/^\.\\" %ENDIF OS .*$(os_man_filter)/ s,^,!!,' \ + -e '/^\.\\" %IF OS ./,/^\.\\" %ENDIF OS ./ s,^,.\\"\# ,' \ + -e '/^!*\.\\" %IF NOT OS ./,/^!*\.\\" %ENDIF NOT OS ./ s,^,!!,' \ + -e 's,^!!!*\.\\"! \(.*\)$$,\1 \\"\#,' \ + -e 's,^!!!*,,' ; \ + else \ + cat; \ + fi # Implicit rule 'smart%: smart%.in ...' does not work with BSD make smartctl.8: smartctl.8.in Makefile svnversion.h - cat $(srcdir)/smartctl.8.in | $(MAN_FILTER) > $@ + @echo ' cat $(srcdir)/smartctl.8.in | $$(MAN_FILTER) > $@' + @cat $(srcdir)/smartctl.8.in | $(MAN_FILTER) > $@ smartd.8: smartd.8.in Makefile svnversion.h - cat $(srcdir)/smartd.8.in | $(MAN_FILTER) > $@ + @echo ' cat $(srcdir)/smartd.8.in | $$(MAN_FILTER) > $@' + @cat $(srcdir)/smartd.8.in | $(MAN_FILTER) > $@ smartd.conf.5: smartd.conf.5.in Makefile svnversion.h - cat $(srcdir)/smartd.conf.5.in | $(MAN_FILTER) > $@ + @echo ' cat $(srcdir)/smartd.conf.5.in | $$(MAN_FILTER) > $@' + @cat $(srcdir)/smartd.conf.5.in | $(MAN_FILTER) > $@ + +update-smart-drivedb.8: update-smart-drivedb.8.in Makefile svnversion.h + @echo ' cat $(srcdir)/update-smart-drivedb.8.in | $$(MAN_FILTER) > $@' + @cat $(srcdir)/update-smart-drivedb.8.in | $(MAN_FILTER) > $@ + +# Build Solaris specific man pages +SOLARIS_MAN_FILTER = \ + sed -e '/^\.TH/s, \([58]\) , !!\1!! ,' \ + -e '/^\.BR/s, (\([578]\)), (!!\1!!),' \ + -e 's,\\fP(\([578]\)),\\fP(!!\1!!),g' \ + -e 's,!!5!!,4,g' -e 's,!!7!!,5,g' -e 's,!!8!!,1m,g' \ + -e 's,/var/log/messages,/var/adm/messages,g' + +smartctl.1m: smartctl.8 + @echo ' cat smartctl.8 | $$(SOLARIS_MAN_FILTER) > $@' + @cat smartctl.8 | $(SOLARIS_MAN_FILTER) > $@ + +smartd.1m: smartd.8 + @echo ' cat smartd.8 | $$(SOLARIS_MAN_FILTER) > $@' + @cat smartd.8 | $(SOLARIS_MAN_FILTER) > $@ + +smartd.conf.4: smartd.conf.5 + @echo ' cat smartd.conf.5 | $$(SOLARIS_MAN_FILTER) > $@' + @cat smartd.conf.5 | $(SOLARIS_MAN_FILTER) > $@ + +update-smart-drivedb.1m: update-smart-drivedb.8 + @echo ' cat update-smart-drivedb.8 | $$(SOLARIS_MAN_FILTER) > $@' + @cat update-smart-drivedb.8 | $(SOLARIS_MAN_FILTER) > $@ + # Commands to convert man pages into .html and .txt # TODO: configure @@ -541,11 +662,11 @@ MAN2HTML = man2html MAN2TXT = groff -man -Tascii -P'-bcou' # Remove HTTP header and fix links in man2html output -FIXHTML = sed '1s,^Content-type.*,,' \ - | sed 's,,,g' \ - | sed 's,,,g' \ - | sed 's,\([^<]*\),\1,g' \ - | sed 's,\([^<]*\),\1,g' +FIXHTML = sed -e '1s,^Content-type.*,,' \ + -e 's,,,g' \ + -e 's,,,g' \ + -e 's,\([^<]*\),\1,g' \ + -e 's,\([^<]*\),\1,g' # Convert man pages into .html and .txt @@ -586,6 +707,31 @@ check: if OS_WIN32_MINGW +# Windows resources + +smartctl_res.o: smartctl_res.rc + $(WINDRES) $< $@ + +smartd_res.o: smartd_res.rc syslogevt.rc + $(WINDRES) -I. $< $@ + +# Convert version for VERSIONINFO resource: 6.1 r3754 -> 6.1.0.3754, set Copyright year +WIN_RC_FILTER = \ + ( ver=`echo '$(PACKAGE_VERSION).0' | sed -n 's,^\([0-9]*\.[0-9]*\.[0-9]*\).*$$,\1,p'`; \ + rev=`sed -n 's,^.*REV[^"]*"\([0-9]*\).*$$,\1,p' svnversion.h`; \ + txtver="$${ver:-0.0.0}.$${rev:-0}"; binver=`echo "$$txtver" | sed 's|\.|,|g'`; \ + yy=`sed -n 's,^.*DATE[^"]*"20\([0-9][0-9]\).*$$,\1,p' svnversion.h`; yy="$${yy:-XX}"; \ + sed -e "s|@BINARY_VERSION@|$$binver|g" -e "s|@TEXT_VERSION@|$$txtver|g" -e "s|@YY@|$$yy|g"; ) + +smartctl_res.rc: os_win32/smartctl_res.rc.in Makefile svnversion.h + cat $< | $(WIN_RC_FILTER) > $@ + +smartd_res.rc: os_win32/smartd_res.rc.in Makefile svnversion.h + cat $< | $(WIN_RC_FILTER) > $@ + +syslogevt.rc: os_win32/syslogevt.mc + $(WINDMC) -b $< + # Definitions for Windows distribution if OS_WIN64 @@ -604,12 +750,11 @@ docdir_win32 = $(distdir_win32)/doc EXEFILES_WIN32 = \ $(exedir_win32)/smartctl.exe \ $(exedir_win32)/smartctl-nc.exe \ - $(exedir_win32)/smartd.exe - -if OS_WIN32_WINDMC -EXEFILES_WIN32 += \ - $(exedir_win32)/syslogevt.exe -endif + $(exedir_win32)/smartd.exe \ + $(exedir_win32)/smartd_warning.cmd \ + $(exedir_win32)/runcmda.exe \ + $(exedir_win32)/runcmdu.exe \ + $(exedir_win32)/wtssendmsg.exe if ENABLE_DRIVEDB if OS_WIN32_NSIS @@ -621,21 +766,24 @@ endif FILES_WIN32 = \ $(EXEFILES_WIN32) \ $(docdir_win32)/AUTHORS.txt \ - $(docdir_win32)/CHANGELOG.txt \ + $(docdir_win32)/ChangeLog.txt \ + $(docdir_win32)/ChangeLog-5.0-6.0.txt \ $(docdir_win32)/COPYING.txt \ $(docdir_win32)/INSTALL.txt \ $(docdir_win32)/NEWS.txt \ $(docdir_win32)/README.txt \ $(docdir_win32)/TODO.txt \ $(docdir_win32)/WARNINGS.txt \ - $(docdir_win32)/checksums.txt \ + $(docdir_win32)/checksums$(win_bits).txt \ $(docdir_win32)/smartd.conf \ $(docdir_win32)/smartctl.8.html \ $(docdir_win32)/smartctl.8.txt \ $(docdir_win32)/smartd.8.html \ $(docdir_win32)/smartd.8.txt \ $(docdir_win32)/smartd.conf.5.html \ - $(docdir_win32)/smartd.conf.5.txt + $(docdir_win32)/smartd.conf.5.txt \ + $(exedir_win32)/runcmda.exe.manifest \ + $(exedir_win32)/runcmdu.exe.manifest if ENABLE_DRIVEDB FILES_WIN32 += \ @@ -644,9 +792,13 @@ endif CLEANFILES += \ $(FILES_WIN32) \ + runcmdu.exe \ smartctl-nc.exe smartctl-nc.exe.tmp \ - syslogevt.exe syslogevt.h syslogevt.o \ - syslogevt.res.o syslogevt.rc syslogevt_*.bin \ + smartctl_res.rc smartctl_res.o \ + smartd_res.rc smartd_res.o \ + syslogevt.h syslogevt.o \ + syslogevt.rc syslogevt_*.bin \ + wtssendmsg.exe \ update-smart-drivedb.exe \ distdir.mkdir @@ -677,11 +829,13 @@ if OS_WIN32_NSIS # Build NSIS installer # Note: Only option character '-' is also compatible with Linux version of makensis $(distinst_win32): os_win32/installer.nsi distdir.mkdir $(FILES_WIN32) + test -z '$(builddir_win64)' || ( cd $(builddir_win64) && make distdir-win32 ) @date=`sed -n 's,^.*DATE[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`; \ rev=`sed -n 's,^.*REV[^"]*"\([^"]*\)".*$$,r\1,p' svnversion.h`; \ verstr="$(PACKAGE_VERSION) $$date $$rev "$(BUILD_INFO); \ - echo "'$(MAKENSIS)' -V2 -NOCD -DINPDIR=$(distdir_win32) -DOUTFILE=$@ -DVERSTR='$$verstr' $<"; \ - '$(MAKENSIS)' -V2 -NOCD -DINPDIR=$(distdir_win32) -DOUTFILE=$@ -DVERSTR="$$verstr" $< + d64=; test -z '$(builddir_win64)' || d64='-DINPDIR64=$(builddir_win64)/$(PACKAGE)-$(VERSION).win64'; \ + echo "'$(MAKENSIS)' -V2 -NOCD -DINPDIR=$(distdir_win32) $$d64 -DOUTFILE=$@ -DVERSTR='$$verstr' $<"; \ + '$(MAKENSIS)' -V2 -NOCD -DINPDIR=$(distdir_win32) $$d64 -DOUTFILE=$@ -DVERSTR="$$verstr" $< md5sum $@ > $@.md5 sha1sum $@ > $@.sha1 sha256sum $@ > $@.sha256 @@ -713,10 +867,22 @@ $(exedir_win32)/%.exe: %.exe $(exedir_win32)/update-smart-drivedb.exe: update-smart-drivedb.exe cp -p $< $@ +# runcmd?.exe only differ by .exe.manifest files +$(exedir_win32)/runcmda.exe: $(exedir_win32)/runcmdu.exe + cp -p $< $@ + $(exedir_win32)/%.h: $(srcdir)/%.h $(UNIX2DOS) < $< > $@ touch -r $< $@ +$(exedir_win32)/%.exe.manifest: $(srcdir)/os_win32/%.exe.manifest + $(UNIX2DOS) < $< > $@ + touch -r $< $@ + +$(exedir_win32)/%.cmd: $(srcdir)/os_win32/%.cmd + $(UNIX2DOS) < $< > $@ + touch -r $< $@ + $(docdir_win32)/%.html: %.html $(UNIX2DOS) < $< > $@ touch -r $< $@ @@ -733,7 +899,7 @@ $(docdir_win32)/%.conf: $(srcdir)/%.conf $(UNIX2DOS) < $< > $@ touch -r $< $@ -$(docdir_win32)/checksums.txt: $(EXEFILES_WIN32) +$(docdir_win32)/checksums$(win_bits).txt: $(EXEFILES_WIN32) (cd $(exedir_win32) && md5sum *.exe && sha1sum *.exe && sha256sum *.exe) \ | $(UNIX2DOS) > $@ @@ -753,32 +919,32 @@ smartctl-nc.exe: smartctl.exe else echo "EXE patch failed"; exit 1; fi mv -f $@.tmp $@ -if OS_WIN32_WINDMC -# Build syslogevt.exe event message file tool +# Build runcmd?.exe and wtssendmsg.exe +runcmdu.exe: os_win32/runcmd.c + $(CC) -Os -o $@ $< -syslogevt.exe: syslogevt.o syslogevt.res.o - $(LINK) $^ +wtssendmsg.exe: os_win32/wtssendmsg.c + $(CC) -Os -o $@ $< -lwtsapi32 -syslogevt.o: os_win32/syslogevt.c syslogevt.rc - $(CC) -c -I. -Os -o $@ $< +# Build os_win32/vc10/{config.h,smart*.rc,svnversion.h} for MSVC10 from MinGW files -syslogevt.res.o: syslogevt.rc - $(WINDRES) $< $@ - -syslogevt.rc: os_win32/syslogevt.mc - $(WINDMC) -b $< -endif +config-vc10: $(srcdir)/os_win32/vc10/config.h \ + $(srcdir)/os_win32/vc10/smartctl_res.rc \ + $(srcdir)/os_win32/vc10/smartd_res.rc \ + $(srcdir)/os_win32/vc10/svnversion.h -# Build {config,svnversion}_vc8.h for MSVC8 from MinGW {config,svnversion}.h +$(srcdir)/os_win32/vc10/config.h: config.h Makefile + sed -e '1i/* os_win32/vc10/config.h. Generated from config.h by Makefile. */' \ + -e 's,^#define HAVE_\(ATTR_PACKED\|GETTIMEOFDAY\|INTTYPES_H\|[DK_]*NTDDDISK_H\|STRINGS_H\|STRTOULL\|UNISTD_H\|WORKING_SNPRINTF\) 1$$,/* #undef HAVE_\1 */,' \ + -e 's,^\(#define SMARTMONTOOLS_BUILD_HOST "[^-]*\)[^"]*,\1-pc-w32vc10,' $< > $@ -config-vc8: $(srcdir)/os_win32/config_vc8.h $(srcdir)/os_win32/svnversion_vc8.h +$(srcdir)/os_win32/vc10/svnversion.h: svnversion.h + cp $< $@ -$(srcdir)/os_win32/config_vc8.h: config.h Makefile - sed '1i/* config_vc8.h. Generated from config.h by Makefile. */' $< | \ - sed 's,^#define HAVE_\(ATTR_PACKED\|INTTYPES_H\|[DK_]*NTDDDISK_H\|STDINT_H\|STRINGS_H\|STRTOULL\|U*INT64_T\|UNISTD_H\|WORKING_SNPRINTF\) 1$$,/* #undef HAVE_\1 */,' | \ - sed 's,^\(#define SMARTMONTOOLS_BUILD_HOST "[^-]*\)[^"]*,\1-pc-win32vc8,' > $@ +$(srcdir)/os_win32/vc10/smartctl_res.rc: smartctl_res.rc + cp $< $@ -$(srcdir)/os_win32/svnversion_vc8.h: svnversion.h - cp svnversion.h $@ +$(srcdir)/os_win32/vc10/smartd_res.rc: smartd_res.rc + cp $< $@ endif