1 ############################
2 # fcron's Makefile ########
3 ############################
8 # The following should not be edited manually (use configure options)
9 # If you must do it, BEWARE : some of the following is also defined
10 # in config.h, so you must modify config.h AND Makefile in order
11 # to set the same values in the two files.
13 FCRON_ALLOW = fcron.allow
14 FCRON_DENY = fcron.deny
15 FCRON_CONF = fcron.conf
18 # Useful to build packages
19 # you may want to use this var with a : 'make DESTDIR=dir install'
22 # Where should we install it ?
24 exec_prefix = @exec_prefix@
28 FCRONTABS = @FCRONTABS@
32 REBOOT_LOCK = @REBOOT_LOCK@
34 FCRON_SHELL = @FCRON_SHELL@
36 FCRON_EDITOR = @FCRON_EDITOR@
39 CPPFLAGS := @CPPFLAGS@ -I. -I${SRCDIR}
46 ROOTNAME := @ROOTNAME@
47 ROOTGROUP := @ROOTGROUP@
48 USERNAME := @USERNAME@
49 GROUPNAME := @GROUPNAME@
50 SYSFCRONTAB := @SYSFCRONTAB@
52 BOOTINSTALL := @BOOTINSTALL@
53 ANSWERALL := @ANSWERALL@
55 FCRONDYN := @FCRONDYN@
56 SYSTEMD_DIR := @SYSTEMD_DIR@
59 # -DDEBUG even more verbose
60 # -DCHECKJOBS send a mail containing the exact shell command
61 # for each execution of each job.
62 # -DFOREGROUND=[0|1] default run in foreground ?
64 #OPTION= -O3 -mcpu=i686
68 ####################################
69 # Should not be changed under this #
70 ####################################
73 CFLAGS += $(OPTIM) $(OPTION) $(DEFS) $(CPPFLAGS)
75 LIBOBJS := socket.o $(LIBOBJS)
77 OBJSD := fcron.o cl.o subs.o mem.o save.o temp_file.o log.o database.o job.o conf.o u_list.o exe_list.o lavg_list.o env_list.o fcronconf.o $(LIBOBJS)
78 OBJSTAB := fcrontab.o cl.o subs.o mem.o save.o temp_file.o log.o fileconf.o allow.o read_string.o u_list.o env_list.o fcronconf.o
79 OBJSDYN := fcrondyn.o subs.o mem.o log.o allow.o read_string.o fcronconf.o
80 OBJCONV := convert-fcrontab.o cl.o subs.o mem.o save.o log.o u_list.o env_list.o
81 OBJSIG := fcronsighup.o subs.o mem.o log.o allow.o fcronconf.o
82 HEADERSALL := config.h $(SRCDIR)/global.h $(SRCDIR)/cl.h $(SRCDIR)/log.h $(SRCDIR)/subs.h $(SRCDIR)/mem.h $(SRCDIR)/save.h $(SRCDIR)/option.h $(SRCDIR)/dyncom.h
84 # this is a regular expression :
85 # do not ci automaticaly generated files and doc (done by doc's Makefile)
86 RCSNOCI:=.*\(.html\|VERSION\|MANIFEST\|configure\|install.sh\|config.log\|config.status\|config.h\|config.cache\|Makefile\|doc.*\|CVS.*\|.git.*\)
88 RUN_NON_PRIVILEGED := @RUN_NON_PRIVILEGED@
89 ifeq ($(RUN_NON_PRIVILEGED), 1)
98 all: fcron fcrontab fcrondyn convert-fcrontab files/fcron.conf initscripts
100 all: fcron fcrontab convert-fcrontab files/fcron.conf
104 $(CC) $(CFLAGS) -o $@ $(OBJSD) $(LIBS)
106 fcrontab: fcronsighup $(OBJSTAB)
107 $(CC) $(CFLAGS) -o $@ $(OBJSTAB) $(LIBS)
110 $(CC) $(CFLAGS) -o $@ $(OBJSDYN) $(LIBS)
112 fcronsighup: $(OBJSIG)
113 $(CC) $(CFLAGS) -o $@ $(OBJSIG) $(LIBS)
115 convert-fcrontab: $(OBJCONV)
116 $(CC) $(CFLAGS) -o $@ $(OBJCONV) $(LIBS)
118 exe_list_test: exe_list.o u_list.o exe_list_test.o log.o subs.o
119 $(CC) $(CFLAGS) -o $@ exe_list.o u_list.o exe_list_test.o log.o subs.o $(LIBS)
121 %.o: $(SRCDIR)/%.c $(HEADERSALL) $(SRCDIR)/%.h
122 $(CC) $(CFLAGS) -DPIDFILE="\"${PIDFILE}\"" -DREBOOT_LOCK="\"${REBOOT_LOCK}\"" \
123 -DFIFOFILE="\"${FIFOFILE}\"" -DETC="\"${ETC}\"" \
124 -DFCRON_SHELL="\"${FCRON_SHELL}\"" -DFCRON_CONF="\"${FCRON_CONF}\"" \
125 -DFCRONTABS="\"${FCRONTABS}\"" \
126 -DFCRON_ALLOW="\"${FCRON_ALLOW}\"" -DFCRON_DENY="\"${FCRON_DENY}\"" \
127 -DFCRON_SHELL="\"${FCRON_SHELL}\"" -DSENDMAIL="\"${SENDMAIL}\"" \
128 -DFCRON_EDITOR="\"${FCRON_EDITOR}\"" -DBINDIREX="\"${DESTBIN}\"" \
132 @(if test ! -d script; then mkdir script ; fi ; \
133 for F in sysVinit-launcher fcron.sh fcron.init.suse fcron.init.systemd ; do \
134 $(SRCDIR)/script/gen-in.pl $(SRCDIR)/script/$${F}.in script/$${F} ./ ; \
137 install: install-staged strip perms
138 ifeq ($(BOOTINSTALL), 1)
139 $(SRCDIR)/script/boot-install "$(INSTALL) -o $(ROOTNAME)" $(DESTSBIN) $(DEBUG) $(FCRONTABS) $(ANSWERALL) $(SRCDIR)
141 ifneq ($(SYSTEMD_DIR), no)
142 if test ! -d $(DESTDIR)$(SYSTEMD_DIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(SYSTEMD_DIR) ; fi
143 $(INSTALL) -m 644 files/fcron.init.systemd $(DESTDIR)$(SYSTEMD_DIR)/fcron.service
148 # needed by boot-install script :
149 echo `fcron -V 2>&1 | grep "^fcron "` > PREVIOUS_VERSION && chmod a+rw PREVIOUS_VERSION
151 $(SRCDIR)/script/user-group $(USERNAME) $(GROUPNAME) $(ANSWERALL) $(SRCDIR)
153 # check if the directories we use exist, and if not, create them
154 if test ! -d $(DESTDIR)$(DESTSBIN); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTSBIN) ; fi
155 if test ! -d $(DESTDIR)$(DESTBIN); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTBIN) ; fi
156 if test ! -d $(DESTDIR)$(ETC); then $(INSTALL) -m 755 -d $(DESTDIR)$(ETC) ; fi
157 if test ! -d $(DESTDIR)$(PIDDIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(PIDDIR) ; fi
158 if test ! -d $(DESTDIR)$(FIFODIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(FIFODIR) ; fi
159 # create the spool dir
160 $(INSTALL) -m 755 -d $(DESTDIR)$(FCRONTABS)
162 $(INSTALL) -m 755 fcron $(DESTDIR)$(DESTSBIN)
163 $(INSTALL) -m 755 fcrontab $(DESTDIR)$(DESTBIN)
164 $(INSTALL) -m 755 fcronsighup $(DESTDIR)$(DESTBIN)
165 ifeq ($(FCRONDYN), 1)
166 $(INSTALL) -m 755 fcrondyn $(DESTDIR)$(DESTBIN)
168 if test ! -f $(DESTDIR)$(ETC)/fcron.allow -a ! -f $(DESTDIR)$(ETC)/fcron.deny ; then $(INSTALL) -m 644 $(SRCDIR)/files/fcron.allow $(DESTDIR)$(ETC) ; $(INSTALL) -m 644 $(SRCDIR)/files/fcron.deny $(DESTDIR)$(ETC) ; fi
169 test -f $(DESTDIR)$(ETC)/fcron.conf || $(INSTALL) -m 644 files/fcron.conf $(DESTDIR)$(ETC)
171 $(MAKE) -C doc install-staged
174 perms: install-staged strip
175 # Note : we don't use "chown user:group file" because some systems use ":"
176 # and others "." as separator.
177 chown $(ROOTNAME) $(DESTDIR)$(DESTSBIN)
178 chgrp $(ROOTGROUP) $(DESTDIR)$(DESTSBIN)
179 chown $(ROOTNAME) $(DESTDIR)$(DESTBIN)
180 chgrp $(ROOTGROUP) $(DESTDIR)$(DESTBIN)
181 chown $(ROOTNAME) $(DESTDIR)$(ETC)
182 chgrp $(ROOTGROUP) $(DESTDIR)$(ETC)
183 chown $(ROOTNAME) $(DESTDIR)$(FIFODIR)
184 chgrp $(ROOTGROUP) $(DESTDIR)$(FIFODIR)
185 chown $(ROOTNAME) $(DESTDIR)$(PIDDIR)
186 chgrp $(ROOTGROUP) $(DESTDIR)$(PIDDIR)
188 # change spool dir mode
189 chown $(USERNAME) $(DESTDIR)$(FCRONTABS)
190 chgrp $(GROUPNAME) $(DESTDIR)$(FCRONTABS)
191 chmod 770 $(DESTDIR)$(FCRONTABS)
193 chown $(ROOTNAME) $(DESTDIR)$(DESTSBIN)/fcron
194 chgrp $(ROOTGROUP) $(DESTDIR)$(DESTSBIN)/fcron
195 chmod 110 $(DESTDIR)$(DESTSBIN)/fcron
197 chown $(USERNAME) $(DESTDIR)$(DESTBIN)/fcrontab
198 chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcrontab
199 chmod $(BINMODE) $(DESTDIR)$(DESTBIN)/fcrontab
201 chown $(ROOTNAME) $(DESTDIR)$(DESTBIN)/fcronsighup
202 chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcronsighup
203 chmod $(BINMODESIGHUP) $(DESTDIR)$(DESTBIN)/fcronsighup
205 ifeq ($(FCRONDYN), 1)
206 chown $(USERNAME) $(DESTDIR)$(DESTBIN)/fcrondyn
207 chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcrondyn
208 chmod $(BINMODE) $(DESTDIR)$(DESTBIN)/fcrondyn
210 chown $(ROOTNAME) $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny
211 chgrp $(GROUPNAME) $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny
212 chmod 640 $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny
214 chown $(ROOTNAME) $(DESTDIR)$(ETC)/fcron.conf
215 chgrp $(GROUPNAME) $(DESTDIR)$(ETC)/fcron.conf
216 chmod 640 $(DESTDIR)$(ETC)/fcron.conf
218 $(SRCDIR)/script/install-pam-conf $(SRCDIR) $(DESTDIR)$(ETC) $(ROOTNAME) $(ROOTGROUP) "$(INSTALL)"
221 # in order to get correct rights when upgrading :
223 find $(DESTDIR)$(FCRONTABS) -type f \( -name "*.orig" -a ! -name "$(ROOTNAME).orig" -a ! -name "$(SYSFCRONTAB).orig" \) -exec chown $(USERNAME) {} \; -exec chgrp $(GROUPNAME) {} \; -exec chmod 640 {} \;
224 find $(DESTDIR)$(FCRONTABS) -type f \( -name "$(ROOTNAME).orig" -o -name "$(SYSFCRONTAB).orig" \) -exec chown $(ROOTNAME) {} \; -exec chgrp $(GROUPNAME) {} \; -exec chmod 600 {} \;
225 # First, remove the potential fcrontab.sig, or it could not get removed by fcronsighup if it becomes root:root 600
226 rm -f $(DESTDIR)$(FCRONTABS)/fcrontab.sig
227 find $(DESTDIR)$(FCRONTABS) -type f ! -name "*.orig" -exec chown $(ROOTNAME) {} \; -exec chgrp $(ROOTGROUP) {} \; -exec chmod 600 {} \;
232 strip: install-staged
233 strip $(DESTDIR)$(DESTSBIN)/fcron
234 strip $(DESTDIR)$(DESTBIN)/fcrontab
235 strip $(DESTDIR)$(DESTBIN)/fcronsighup
236 ifeq ($(FCRONDYN), 1)
237 strip $(DESTDIR)$(DESTBIN)/fcrondyn
240 install-boot: install
241 $(SRCDIR)/script/boot-install "$(INSTALL) -o $(ROOTNAME)" $(DESTSBIN) $(DEBUG) $(FCRONTABS) $(ANSWERALL) $(SRCDIR)
243 install-restart: install
245 kill -TERM `pidof fcron` || exit 0
246 /etc/init.d/fcron restart
250 rm -f $(DESTDIR)$(DESTSBIN)/fcron
251 rm -f $(DESTDIR)$(DESTBIN)/fcrontab
252 rm -f $(DESTDIR)$(DESTBIN)/fcronsighup
253 rm -f $(DESTDIR)$(DESTBIN)/fcrondyn
254 $(MAKE) -C doc uninstall
255 $(SRCDIR)/script/boot-uninstall
259 rm -f fcron fcrontab fcrondyn fcronsighup convert-fcrontab files/fcron.conf
263 find ./ -name "*~" -exec rm -f {} \;
267 rm -f config.log config.status config.h config.cache Makefile PREVIOUS_VERSION \
268 files/fcron.conf script/fcron.init.suse script/fcron.init.systemd \
269 script/fcron.sh script/sysVinit-launcher
273 files/fcron.conf: $(SRCDIR)/files/fcron.conf.in config.h
274 if test ! -d files; then mkdir files ; fi
275 $(SRCDIR)/script/gen-in.pl $(SRCDIR)/files/fcron.conf.in files/fcron.conf ./
281 indent -linux -i4 -nsob -sc -psl -nce *.c *.h
283 configure: configure.in
284 # update configure script, then Makefile and config.h, and finally
285 # run make tar using the new Makefile (needed because the version
286 # is set in the configure.in file)
290 echo "---------------------------------------------" && \
291 echo "Success !" && \
292 echo "(Please ignore the following make error" && \
293 echo " and run your latest make command again)" && \
294 echo "---------------------------------------------" && \
298 # the symbolic links verX_X_X has been created since version 2.9.4
299 @(find ./ -type f ! -regex '.*RCS.*' ! -regex "$(RCSNOCI)" \
300 -exec ci -l -Nver`echo $(VERSION) | tr '.' '_'` {} \;)
304 tar: configure updatedoc vclean ciclean
306 echo $(VERSION) > ./VERSION
308 $(MAKE) -C doc tarclean
310 @(find ./ -type f ! -regex '.*RCS.*' ! -regex '.*CVS.*' ! -regex '.*\.git.*'| \
311 sed -e "s:^\./:fcron-$(VERSION)/:" > MANIFEST)
312 @(cd ..; ln -s fcron fcron-$(VERSION))
313 (cd ..; tar -czvf fcron-$(VERSION).src.tar.gz `cat fcron/MANIFEST`)
314 @(cd ..; rm -f fcron-$(VERSION))
316 @(cd ..; mv -f fcron-$(VERSION).src.tar.gz old-fcron-pkg/)