-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathMakefile
127 lines (103 loc) · 3.77 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
PREFIX = /usr/local
USERDATADIR = /var/spool/incron
SYSDATADIR = /etc/incron.d
INITDIR = /etc/init
CFGDIR = /etc
MANPATH = $(PREFIX)/share/man
RELEASE = incron-`cat VERSION`
RELEASEDIR = /tmp/$(RELEASE)
DOCDIR = $(PREFIX)/share/doc/$(RELEASE)/
USER = root
CXX ?= g++
INSTALL = install
#OPTIMIZE = -O2 -pedantic -std=c++11
OPTIMIZE = -O2 -pedantic -std=c++11
DEBUG = -g0
#DEBUG = -g
WARNINGS = -Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -ffor-scope
#WARNINGS = -Wall -W
CXXAUX = -pipe
CXXFLAGS ?= $(OPTIMIZE) $(DEBUG) $(CXXAUX)
CXXFLAGS += $(WARNINGS)
PROGRAMS = incrond incrontab
INCROND_OBJ = icd-main.o incrontab.o inotify-cxx.o usertable.o strtok.o appinst.o incroncfg.o appargs.o
INCRONTAB_OBJ = ict-main.o incrontab.o inotify-cxx.o strtok.o incroncfg.o appargs.o
all: $(PROGRAMS)
incrond: $(INCROND_OBJ)
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(INCROND_OBJ)
incrontab: $(INCRONTAB_OBJ)
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(INCRONTAB_OBJ)
.cpp.o:
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $<
clean:
rm -f $(PROGRAMS)
rm -f *.o
distclean: clean
install: all install-man
$(INSTALL) -m 0755 -d $(DESTDIR)$(PREFIX)/bin/
$(INSTALL) -m 0755 -d $(DESTDIR)$(PREFIX)/sbin/
$(INSTALL) -m 0755 -d $(DESTDIR)$(DOCDIR)/
$(INSTALL) -m 04755 -o $(USER) incrontab $(DESTDIR)$(PREFIX)/bin/
$(INSTALL) -m 0755 incrond $(DESTDIR)$(PREFIX)/sbin/
$(INSTALL) -m 0755 -o $(USER) -d $(DESTDIR)$(USERDATADIR)
$(INSTALL) -m 0755 -o $(USER) -d $(DESTDIR)$(SYSDATADIR)
$(INSTALL) -m 0644 incron.conf $(DESTDIR)$(INITDIR)
$(INSTALL) -m 0644 incron.conf.example $(DESTDIR)$(DOCDIR)/
install-man: incrontab.1 incrontab.5 incrond.8 incron.conf.5
$(INSTALL) -m 0755 -d $(DESTDIR)$(MANPATH)/man1
$(INSTALL) -m 0755 -d $(DESTDIR)$(MANPATH)/man5
$(INSTALL) -m 0755 -d $(DESTDIR)$(MANPATH)/man8
$(INSTALL) -m 0644 incrontab.1 $(DESTDIR)$(MANPATH)/man1
$(INSTALL) -m 0644 incrontab.5 $(DESTDIR)$(MANPATH)/man5
$(INSTALL) -m 0644 incrond.8 $(DESTDIR)$(MANPATH)/man8
$(INSTALL) -m 0644 incron.conf.5 $(DESTDIR)$(MANPATH)/man5
uninstall: uninstall-man
rm -f $(DESTDIR)$(PREFIX)/bin/incrontab
rm -f $(DESTDIR)$(PREFIX)/sbin/incrond
rm -rf $(DESTDIR)$(DOCDIR)/
uninstall-man:
rm -f $(DESTDIR)$(MANPATH)/man1/incrontab.1
rm -f $(DESTDIR)$(MANPATH)/man5/incrontab.5
rm -f $(DESTDIR)$(MANPATH)/man8/incrond.8
rm -f $(DESTDIR)$(MANPATH)/man5/incron.conf.5
update: uninstall install
release:
doxygen
mkdir -p $(RELEASEDIR)
cp -r doc $(RELEASEDIR)
cp *.h $(RELEASEDIR)
cp *.cpp $(RELEASEDIR)
cp incron.conf.example $(RELEASEDIR)
cp Makefile CHANGELOG COPYING LICENSE-GPL LICENSE-LGPL LICENSE-X11 README TODO VERSION $(RELEASEDIR)
cp incrond.8 incrontab.1 incrontab.5 incron.conf.5 $(RELEASEDIR)
tar -c -f $(RELEASE).tar -C $(RELEASEDIR)/.. $(RELEASE)
bzip2 -9 $(RELEASE).tar
tar -c -f $(RELEASE).tar -C $(RELEASEDIR)/.. $(RELEASE)
gzip --best $(RELEASE).tar
echo #!/bin/sh > myzip
echo cd $(RELEASEDIR)/.. >> myzip
echo zip -r -9 `pwd`/$(RELEASE).zip $(RELEASE) >> myzip
chmod 0700 myzip
./myzip
rm -f myzip
sha1sum $(RELEASE).tar.bz2 > sha1.txt
sha1sum $(RELEASE).tar.gz >> sha1.txt
sha1sum $(RELEASE).zip >> sha1.txt
rm -rf $(RELEASEDIR)
release-clean:
rm -rf doc
rm -f $(RELEASE).tar.bz2
rm -f $(RELEASE).tar.gz
rm -f $(RELEASE).zip
rm -f sha1.txt
.PHONY: all clean distclean install install-man uninstall uninstall-man release release-clean update
.POSIX:
icd-main.o: icd-main.cpp inotify-cxx.h incrontab.h usertable.h incron.h appinst.h incroncfg.h appargs.h
incrontab.o: incrontab.cpp incrontab.h inotify-cxx.h strtok.h
inotify-cxx.o: inotify-cxx.cpp inotify-cxx.h
usertable.o: usertable.cpp usertable.h strtok.h
ict-main.o: ict-main.cpp incrontab.h incron.h incroncfg.h appargs.h
strtok.o: strtok.cpp strtok.h
appinst.o: appinst.cpp appinst.h
incroncfg.o: incroncfg.cpp incroncfg.h
appargs.o: appargs.cpp appargs.h