blob: 1b6b77cedf6d6c53291f4a1d60dd03305d9ab84b [file] [log] [blame]
Roland McGrath6d2b3492002-12-30 00:51:30 +00001# Automake input for strace.
2
Dmitry V. Levin4e4b5ad2011-02-27 00:28:50 +00003SUBDIRS = tests
4
Roland McGrath6d2b3492002-12-30 00:51:30 +00005bin_PROGRAMS = strace
6man_MANS = strace.1
Denys Vlasenko796f6e82012-03-09 14:21:59 +01007bin_SCRIPTS = strace-graph strace-log-merge
Roland McGrath6d2b3492002-12-30 00:51:30 +00008
Dmitry V. Levinee245d82012-02-25 15:34:10 +01009OS = linux
Roland McGrath6d2b3492002-12-30 00:51:30 +000010# ARCH is `i386', `m68k', `sparc', etc.
11ARCH = @arch@
Roland McGrath6d2b3492002-12-30 00:51:30 +000012
Dmitry V. Levin916aded2010-09-09 17:36:36 +000013ACLOCAL_AMFLAGS = -I m4
Dmitry V. Levin918e49b2010-09-09 17:41:15 +000014AM_CFLAGS = $(WARN_CFLAGS)
Mike Frysinger9004e122011-02-20 23:24:22 -050015AM_CPPFLAGS = -I$(srcdir)/$(OS)/$(ARCH) -I$(srcdir)/$(OS) -I$(builddir)/$(OS)
Roland McGrath6d2b3492002-12-30 00:51:30 +000016
Mike Frysinger761ed9b2014-02-16 01:59:20 -050017include xlat/Makemodule.am
18
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000019strace_SOURCES = \
Dmitry V. Levin304cd812014-12-06 03:53:16 +000020 access.c \
Dmitry V. Levinb94b9832014-12-11 19:25:02 +000021 affinity.c \
Dmitry V. Levin2b640342013-11-11 15:06:18 +000022 aio.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000023 bjm.c \
24 block.c \
Dmitry V. Levin95edb8b2014-12-03 20:50:08 +000025 cacheflush.c \
Dmitry V. Levin5e7987b2014-12-03 20:30:15 +000026 capability.c \
Dmitry V. Levin9b2f6742014-12-06 03:53:16 +000027 chdir.c \
Dmitry V. Levinad5cf1e2014-12-06 03:53:16 +000028 chmod.c \
Dmitry V. Levin2b7a53b2014-12-06 03:53:16 +000029 chown.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000030 count.c \
31 desc.c \
Dmitry V. Levin2ed2cc72014-09-11 22:40:37 +000032 dirent.c \
Dmitry V. Levin63f28dd2014-12-06 03:53:16 +000033 fadvise.c \
Dmitry V. Levin2795a5f2014-12-06 03:53:16 +000034 fallocate.c \
Dmitry V. Levin99db95d2014-02-05 04:13:18 +000035 fanotify.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000036 file.c \
Dmitry V. Levin665f10c2014-12-11 19:21:54 +000037 getcpu.c \
Dmitry V. Levina8364302014-12-06 03:53:16 +000038 getcwd.c \
Dmitry V. Levin2f332e92014-02-05 15:43:04 +000039 inotify.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000040 io.c \
41 ioctl.c \
Dmitry V. Levinfc4727d2014-02-05 17:27:43 +000042 ioprio.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000043 ipc.c \
Dmitry V. Levin90aa9f42014-02-05 13:48:26 +000044 kexec.c \
Dmitry V. Levin3acf4032014-02-05 22:41:45 +000045 keyctl.c \
Dmitry V. Levin99a05442014-04-10 14:10:17 +000046 ldt.c \
Dmitry V. Levin231b19f2014-12-06 03:53:16 +000047 link.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000048 loop.c \
Dmitry V. Levinb5d25ec2014-12-06 03:53:16 +000049 lseek.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000050 mem.c \
Dmitry V. Levindb23b342014-12-06 03:53:16 +000051 mknod.c \
Dmitry V. Levin6da7ca32014-12-03 21:12:07 +000052 mount.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000053 mtd.c \
54 net.c \
Dmitry V. Levin964d80a2014-12-06 03:53:16 +000055 open.c \
Dmitry V. Levinf6eb0d62014-12-03 20:00:42 +000056 or1k_atomic.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000057 pathtrace.c \
Dmitry V. Levind28b6a02014-12-03 21:06:11 +000058 personality.c \
Dmitry V. Levin53c993d2014-12-11 19:25:02 +000059 prctl.c \
Dmitry V. Levin9514ac72014-12-06 03:53:16 +000060 printmode.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000061 process.c \
Dmitry V. Levindb16c522014-12-11 19:21:54 +000062 process_vm.c \
Stefan Sørensenb88a6f82014-01-31 12:01:01 +010063 ptp.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000064 quota.c \
Dmitry V. Levin9e9ceab2014-12-06 03:53:16 +000065 readahead.c \
Dmitry V. Levin46245b32014-12-06 03:53:16 +000066 readlink.c \
Dmitry V. Levin9aaf88c2014-02-05 14:51:19 +000067 reboot.c \
Dmitry V. Levin6d20a0b2014-12-06 03:53:16 +000068 renameat.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000069 resource.c \
70 scsi.c \
71 signal.c \
72 sock.c \
Dmitry V. Levin2f6510c2014-08-21 03:17:48 +000073 socketutils.c \
Dmitry V. Levine36c72c2014-12-03 20:56:36 +000074 sram_alloc.c \
Dmitry V. Levin9a0dd742014-09-22 00:17:42 +000075 statfs.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000076 strace.c \
77 stream.c \
Dmitry V. Levin85a364a2014-12-06 03:53:16 +000078 swapon.c \
Dmitry V. Levin710b3ae2014-12-06 03:53:16 +000079 sync_file_range.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000080 syscall.c \
Dmitry V. Levin172241b2014-12-03 20:20:52 +000081 sysctl.c \
Dmitry V. Levin57d45a22014-09-29 23:13:05 +000082 sysinfo.c \
Dmitry V. Levinb21e2fb2014-12-03 21:01:35 +000083 syslog.c \
Dmitry V. Levin600e33c2014-12-03 20:08:44 +000084 sysmips.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000085 term.c \
86 time.c \
Dmitry V. Levin69341822014-12-06 03:53:16 +000087 truncate.c \
Dmitry V. Levind590f3c2014-12-06 03:53:16 +000088 umask.c \
Dmitry V. Levin542ca1e2014-12-03 21:09:26 +000089 umount.c \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000090 util.c \
Dmitry V. Levinfb470f32014-12-06 03:53:16 +000091 utime.c \
Dmitry V. Levin481e0672014-12-06 03:53:16 +000092 utimes.c \
Philippe De Muyter0cc96142014-11-03 21:27:40 +010093 v4l2.c \
Dmitry V. Levin769ffe92014-12-06 03:53:16 +000094 vsprintf.c \
95 xattr.c
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +000096
Luca Clementi327064b2013-07-23 00:11:35 -070097if USE_LIBUNWIND
98strace_SOURCES += unwind.c
99strace_CPPFLAGS = $(AM_CPPFLAGS) $(libunwind_CPPFLAGS)
100strace_LDFLAGS = $(libunwind_LDFLAGS)
101strace_LDADD = $(libunwind_LIBS)
102else
103strace_CPPFLAGS = $(AM_CPPFLAGS)
104endif
105
Roland McGrath2746edd2002-12-30 09:13:08 +0000106noinst_HEADERS = defs.h
Denys Vlasenko76f61be2013-03-06 18:59:09 +0100107# Enable this to get link map generated
108#strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile
Roland McGrath6d2b3492002-12-30 00:51:30 +0000109
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000110EXTRA_DIST = \
111 $(man_MANS) \
Dmitry V. Levindce75932013-04-30 23:52:12 +0000112 .version \
Mike Frysinger6c191362013-05-15 16:33:09 -0400113 COPYING \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000114 CREDITS \
115 ChangeLog \
116 ChangeLog-CVS \
117 README-linux \
118 README-linux-ptrace \
119 debian/changelog \
120 debian/compat \
121 debian/control \
122 debian/copyright \
123 debian/rules \
124 debian/source/format \
125 debian/strace-udeb.install \
126 debian/strace.docs \
127 debian/strace.examples \
128 debian/strace.install \
129 debian/strace.manpages \
130 debian/strace64.install \
131 debian/strace64.manpages \
132 debian/watch \
133 errnoent.sh \
Dmitry V. Levin00119f62014-11-04 01:40:42 +0000134 ioctlsort.c \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000135 linux/aarch64/errnoent1.h \
136 linux/aarch64/ioctlent.h.in \
137 linux/aarch64/ioctlent1.h \
138 linux/aarch64/signalent1.h \
139 linux/aarch64/syscallent.h \
140 linux/aarch64/syscallent1.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000141 linux/alpha/errnoent.h \
142 linux/alpha/ioctlent.h.in \
143 linux/alpha/signalent.h \
144 linux/alpha/syscallent.h \
Vineet Gupta7daacbb2013-08-16 12:47:06 +0530145 linux/arc/ioctlent.h.in \
146 linux/arc/syscallent.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000147 linux/arm/ioctlent.h.in \
148 linux/arm/syscallent.h \
149 linux/avr32/ioctlent.h.in \
150 linux/avr32/syscallent.h \
151 linux/bfin/ioctlent.h.in \
152 linux/bfin/syscallent.h \
153 linux/dummy.h \
154 linux/errnoent.h \
Dmitry V. Levin99db95d2014-02-05 04:13:18 +0000155 linux/fanotify.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000156 linux/hppa/errnoent.h \
157 linux/hppa/ioctlent.h.in \
158 linux/hppa/signalent.h \
159 linux/hppa/syscallent.h \
160 linux/i386/ioctlent.h.in \
161 linux/i386/syscallent.h \
162 linux/ia64/ioctlent.h.in \
163 linux/ia64/signalent.h \
164 linux/ia64/syscallent.h \
Dmitry V. Levin2f6510c2014-08-21 03:17:48 +0000165 linux/inet_diag.h \
Dmitry V. Levin2f332e92014-02-05 15:43:04 +0000166 linux/inotify.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000167 linux/ioctlent.h.in \
168 linux/ioctlent.sh \
Dmitry V. Levin90aa9f42014-02-05 13:48:26 +0000169 linux/kexec.h \
Dmitry V. Levin3acf4032014-02-05 22:41:45 +0000170 linux/keyctl.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000171 linux/m68k/ioctlent.h.in \
172 linux/m68k/syscallent.h \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000173 linux/metag/ioctlent.h.in \
174 linux/metag/syscallent.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000175 linux/microblaze/ioctlent.h.in \
176 linux/microblaze/syscallent.h \
177 linux/mips/errnoent.h \
178 linux/mips/ioctlent.h.in \
179 linux/mips/ioctlent.sh \
180 linux/mips/signalent.h \
Dmitry V. Levin34c445b2013-05-07 02:46:46 +0000181 linux/mips/syscallent-compat.h \
182 linux/mips/syscallent-n32.h \
183 linux/mips/syscallent-n64.h \
184 linux/mips/syscallent-o32.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000185 linux/mips/syscallent.h \
186 linux/mtd-abi.h \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000187 linux/or1k/ioctlent.h.in \
188 linux/or1k/syscallent.h \
Dmitry V. Levin2a32eaa2014-02-05 02:09:49 +0000189 linux/personality.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000190 linux/powerpc/errnoent1.h \
191 linux/powerpc/ioctlent.h.in \
192 linux/powerpc/ioctlent1.h \
193 linux/powerpc/signalent1.h \
194 linux/powerpc/syscallent.h \
195 linux/powerpc/syscallent1.h \
Stefan Sørensenb88a6f82014-01-31 12:01:01 +0100196 linux/ptp_clock.h \
Dmitry V. Levin9aaf88c2014-02-05 14:51:19 +0000197 linux/reboot.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000198 linux/s390/ioctlent.h.in \
199 linux/s390/syscallent.h \
200 linux/s390x/ioctlent.h.in \
201 linux/s390x/syscallent.h \
202 linux/sh/ioctlent.h.in \
203 linux/sh/syscallent.h \
204 linux/sh64/ioctlent.h.in \
205 linux/sh64/syscallent.h \
206 linux/signalent.h \
Dmitry V. Levin2f6510c2014-08-21 03:17:48 +0000207 linux/sock_diag.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000208 linux/sparc/dummy2.h \
209 linux/sparc/errnoent.h \
210 linux/sparc/errnoent1.h \
211 linux/sparc/gen.pl \
212 linux/sparc/ioctlent.h.in \
213 linux/sparc/ioctlent1.h \
214 linux/sparc/signalent.h \
215 linux/sparc/signalent1.h \
216 linux/sparc/syscall1.h \
217 linux/sparc/syscallent.h \
218 linux/sparc/syscallent1.h \
219 linux/sparc64/dummy2.h \
220 linux/sparc64/errnoent.h \
221 linux/sparc64/errnoent1.h \
222 linux/sparc64/errnoent2.h \
223 linux/sparc64/ioctlent.h.in \
224 linux/sparc64/ioctlent1.h \
225 linux/sparc64/ioctlent2.h \
226 linux/sparc64/signalent.h \
227 linux/sparc64/signalent1.h \
228 linux/sparc64/signalent2.h \
229 linux/sparc64/syscall1.h \
230 linux/sparc64/syscallent.h \
231 linux/sparc64/syscallent1.h \
232 linux/sparc64/syscallent2.h \
Dmitry V. Levinde462cf2013-05-07 18:38:01 +0400233 linux/subcall.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000234 linux/syscall.h \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000235 linux/tile/errnoent1.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000236 linux/tile/ioctlent.h.in \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000237 linux/tile/ioctlent1.h \
238 linux/tile/signalent1.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000239 linux/tile/syscallent.h \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000240 linux/tile/syscallent1.h \
Dmitry V. Levin8e0b8be2013-06-02 18:09:44 +0000241 linux/ubi-user.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000242 linux/x32/errnoent.h \
243 linux/x32/errnoent1.h \
244 linux/x32/ioctlent.h.in \
245 linux/x32/ioctlent1.h \
246 linux/x32/signalent.h \
247 linux/x32/signalent1.h \
248 linux/x32/syscallent.h \
249 linux/x32/syscallent1.h \
250 linux/x86_64/errnoent1.h \
251 linux/x86_64/errnoent2.h \
252 linux/x86_64/gentab.pl \
253 linux/x86_64/ioctlent.h.in \
254 linux/x86_64/ioctlent1.h \
255 linux/x86_64/ioctlent2.h \
256 linux/x86_64/signalent1.h \
257 linux/x86_64/signalent2.h \
258 linux/x86_64/syscallent.h \
259 linux/x86_64/syscallent1.h \
260 linux/x86_64/syscallent2.h \
Dmitry V. Levin0db34e72013-06-02 18:12:44 +0000261 linux/xtensa/ioctlent.h.in \
262 linux/xtensa/syscallent.h \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000263 signalent.sh \
264 strace-graph \
265 strace-log-merge \
266 strace.spec \
267 syscallent.sh \
Mike Frysinger761ed9b2014-02-16 01:59:20 -0500268 $(XLAT_INPUT_FILES) \
269 $(XLAT_HEADER_FILES) \
270 xlat/gen.sh \
Dmitry V. Levin7ae73a92013-04-30 23:34:51 +0000271 xlate.el
Roland McGrathbc44e402004-07-12 05:45:08 +0000272
Roland McGrath2b832df2009-10-06 17:46:56 -0700273.PHONY: srpm
Dmitry V. Levin525a39a2011-02-27 14:05:58 +0000274srpm: dist-xz
275 rpmbuild --define '%_srcrpmdir .' -ts $(distdir).tar.xz
Roland McGrath2b832df2009-10-06 17:46:56 -0700276
Dmitry V. Levindce75932013-04-30 23:52:12 +0000277BUILT_SOURCES = .version
278
279$(srcdir)/.version:
280 $(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
281
282dist-hook:
283 $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
284
285today = $(shell date +%Y-%m-%d)
286version_regexp = $(subst .,\.,$(VERSION))
287news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
288
289news-check: NEWS
290 $(AM_V_GEN)if head -1 $< | \
291 grep -x $(news_check_regexp) >/dev/null; then \
292 :; \
293 else \
294 echo >&2 '$<: check failed'; \
295 exit 1; \
296 fi
Mike Frysinger9004e122011-02-20 23:24:22 -0500297
Dmitry V. Levin00119f62014-11-04 01:40:42 +0000298ioctlent_h = $(builddir)/$(OS)/ioctlent.h
299BUILT_SOURCES += $(ioctlent_h)
300CLEANFILES = $(ioctlent_h)
301ioctlent_h_deps = $(srcdir)/$(OS)/ioctlent.h.in $(srcdir)/$(OS)/$(ARCH)/ioctlent.h.in
302$(ioctlent_h): $(top_builddir)/config.status $(ioctlent_h_deps)
303 $(MKDIR_P) $(builddir)/$(OS)
304 cat $(ioctlent_h_deps) | \
305 $(COMPILE) -E -P - | \
306 sed 's/^\([[:space:]]*{\)"[^"]\+",[[:space:]]*/\1/' | \
307 LC_ALL=C sort -u -k2,2 -k1,1 > $@
308
Roland McGrathbc44e402004-07-12 05:45:08 +0000309if MAINTAINER_MODE
Roland McGratha478d742009-10-06 17:41:02 -0700310
311gen_changelog_start_date = 2009-07-08 20:00
Dmitry V. Levindce75932013-04-30 23:52:12 +0000312$(srcdir)/ChangeLog: $(srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \
313 $(srcdir)/.version
Roland McGratha478d742009-10-06 17:41:02 -0700314 @rm -f $@.new
Dmitry V. Levindce75932013-04-30 23:52:12 +0000315 (cd $(srcdir); \
Dmitry V. Levin594399d2011-11-05 13:32:27 +0000316 ./gitlog-to-changelog --append-dot \
317 --since='$(gen_changelog_start_date)'; \
Roland McGratha478d742009-10-06 17:41:02 -0700318 echo; echo; echo 'See ChangeLog-CVS for older changes.' \
319 ) > $@.new
320 chmod 444 $@.new
321 mv -f $@.new $@
322
Dmitry V. Levindce75932013-04-30 23:52:12 +0000323$(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \
324 $(srcdir)/Makefile.in $(srcdir)/.version
Dmitry V. Levin59138a22011-02-24 01:51:15 +0000325 $(AM_V_GEN) \
Mike Frysinger67c4d432014-08-14 04:05:37 -0400326 ( \
Dmitry V. Levindce75932013-04-30 23:52:12 +0000327 cd $(srcdir); \
Dmitry V. Levin59138a22011-02-24 01:51:15 +0000328 sed '/^##/,$$d' CREDITS.in; \
329 { sed -n '1,/^##>/d; s/ \+/\t/; s/^./&/p' CREDITS.in; \
330 git log --pretty=format:'%aN %aE'; \
331 } | LC_ALL=C sort -u \
332 | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}'; \
Mike Frysinger67c4d432014-08-14 04:05:37 -0400333 ) > $@-t && mv $@-t $@
Dmitry V. Levin59138a22011-02-24 01:51:15 +0000334
Dmitry V. Levin76ac37d2009-10-09 22:10:09 +0000335export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
336
Lubomir Rintel544a8102014-10-16 12:05:43 +0200337INCLUDEDIR = /usr/include
338KERNEL_RELEASE = $(shell uname -r)
339# Candidates for the kernel headers tree.
340KERNEL_INCLUDE = \
341 /lib/modules/$(KERNEL_RELEASE)/build/include \
342 /usr/src/linux-$(KERNEL_RELEASE)/include \
343 $(INCLUDEDIR)
344IOCTLDIR = $(shell find $(KERNEL_INCLUDE) -maxdepth 0 -type d -print -quit 2>/dev/null)
345IOCTLASM = $(INCLUDEDIR)/asm
Roland McGrathbc44e402004-07-12 05:45:08 +0000346
Dmitry V. Levin00119f62014-11-04 01:40:42 +0000347noinst_PROGRAMS = ioctlsort
348ioctlsort_SOURCES = ioctlsort.c
349nodist_ioctlsort_SOURCES = ioctls.h ioctldefs.h
350CLEANFILES += $(nodist_ioctlsort_SOURCES)
351ioctlsort.$(OBJEXT): $(nodist_ioctlsort_SOURCES)
Roland McGrathbc44e402004-07-12 05:45:08 +0000352ioctls.h: $(srcdir)/linux/ioctlent.sh
Roland McGrathadc2b302004-07-12 06:11:03 +0000353 $(SHELL) $< $(IOCTLDIR) $(IOCTLASM)
Roland McGrathbc44e402004-07-12 05:45:08 +0000354ioctldefs.h: ioctls.h ;
355
Dmitry V. Levin00119f62014-11-04 01:40:42 +0000356ioctlent_h_in = linux/ioctlent.h.in
357BUILT_SOURCES += $(ioctlent_h_in)
358$(srcdir)/$(ioctlent_h_in): ioctlsort
359 $(<D)/$(<F) > $@
Mike Frysinger9004e122011-02-20 23:24:22 -0500360
Dmitry V. Levin00119f62014-11-04 01:40:42 +0000361endif