]> granicus.if.org Git - strace/blobdiff - Makefile.am
Filter out redundant ioctl entries early
[strace] / Makefile.am
index 7b44f1e65f6a23539012680d482a7b2edcae0f5d..fa6e73e6e2ac7886a04a1ed0443fdf092d192394 100644 (file)
 # Automake input for strace.
 
+SUBDIRS = tests
+
 bin_PROGRAMS = strace
 man_MANS = strace.1
-bin_SCRIPTS = strace-graph
+bin_SCRIPTS = strace-graph strace-log-merge
 
-# OS is one of `linux', `sunos4', `svr4', or `freebsd'.
-OS             = @opsys@
+OS             = linux
 # ARCH is `i386', `m68k', `sparc', etc.
 ARCH           = @arch@
 
-AM_CFLAGS = $(WARNFLAGS)
-INCLUDES = -I$(OS)/$(ARCH) -I$(srcdir)/$(OS)/$(ARCH) -I$(OS) -I$(srcdir)/$(OS)
+ACLOCAL_AMFLAGS = -I m4
+AM_CFLAGS = $(WARN_CFLAGS)
+AM_CPPFLAGS = -I$(srcdir)/$(OS)/$(ARCH) -I$(srcdir)/$(OS) -I$(builddir)/$(OS)
+
+include xlat/Makemodule.am
+
+strace_SOURCES =       \
+       aio.c           \
+       bjm.c           \
+       block.c         \
+       count.c         \
+       desc.c          \
+       dirent.c        \
+       fanotify.c      \
+       file.c          \
+       inotify.c       \
+       io.c            \
+       ioctl.c         \
+       ioprio.c        \
+       ipc.c           \
+       kexec.c         \
+       keyctl.c        \
+       ldt.c           \
+       loop.c          \
+       mem.c           \
+       mtd.c           \
+       net.c           \
+       pathtrace.c     \
+       process.c       \
+       ptp.c           \
+       quota.c         \
+       reboot.c        \
+       resource.c      \
+       scsi.c          \
+       signal.c        \
+       sock.c          \
+       socketutils.c   \
+       statfs.c        \
+       strace.c        \
+       stream.c        \
+       syscall.c       \
+       sysinfo.c       \
+       system.c        \
+       term.c          \
+       time.c          \
+       util.c          \
+       vsprintf.c
+
+if USE_LIBUNWIND
+strace_SOURCES += unwind.c
+strace_CPPFLAGS = $(AM_CPPFLAGS) $(libunwind_CPPFLAGS)
+strace_LDFLAGS = $(libunwind_LDFLAGS)
+strace_LDADD = $(libunwind_LIBS)
+else
+strace_CPPFLAGS = $(AM_CPPFLAGS)
+endif
 
-strace_SOURCES = strace.c syscall.c util.c desc.c file.c ipc.c \
-                io.c ioctl.c mem.c net.c process.c bjm.c quota.c \
-                resource.c signal.c sock.c system.c term.c time.c \
-                proc.c stream.c
 noinst_HEADERS = defs.h
+# Enable this to get link map generated
+#strace_CFLAGS = $(AM_CFLAGS) -Wl,-Map=strace.mapfile
+
+EXTRA_DIST =                           \
+       $(man_MANS)                     \
+       .version                        \
+       COPYING                         \
+       CREDITS                         \
+       ChangeLog                       \
+       ChangeLog-CVS                   \
+       README-linux                    \
+       README-linux-ptrace             \
+       debian/changelog                \
+       debian/compat                   \
+       debian/control                  \
+       debian/copyright                \
+       debian/rules                    \
+       debian/source/format            \
+       debian/strace-udeb.install      \
+       debian/strace.docs              \
+       debian/strace.examples          \
+       debian/strace.install           \
+       debian/strace.manpages          \
+       debian/strace64.install         \
+       debian/strace64.manpages        \
+       debian/watch                    \
+       errnoent.sh                     \
+       linux/aarch64/errnoent1.h       \
+       linux/aarch64/ioctlent.h.in     \
+       linux/aarch64/ioctlent1.h       \
+       linux/aarch64/signalent1.h      \
+       linux/aarch64/syscallent.h      \
+       linux/aarch64/syscallent1.h     \
+       linux/alpha/errnoent.h          \
+       linux/alpha/ioctlent.h.in       \
+       linux/alpha/signalent.h         \
+       linux/alpha/syscallent.h        \
+       linux/arc/ioctlent.h.in         \
+       linux/arc/syscallent.h          \
+       linux/arm/ioctlent.h.in         \
+       linux/arm/syscallent.h          \
+       linux/avr32/ioctlent.h.in       \
+       linux/avr32/syscallent.h        \
+       linux/bfin/ioctlent.h.in        \
+       linux/bfin/syscallent.h         \
+       linux/dummy.h                   \
+       linux/errnoent.h                \
+       linux/fanotify.h                \
+       linux/hppa/errnoent.h           \
+       linux/hppa/ioctlent.h.in        \
+       linux/hppa/signalent.h          \
+       linux/hppa/syscallent.h         \
+       linux/i386/ioctlent.h.in        \
+       linux/i386/syscallent.h         \
+       linux/ia64/ioctlent.h.in        \
+       linux/ia64/signalent.h          \
+       linux/ia64/syscallent.h         \
+       linux/inet_diag.h               \
+       linux/inotify.h                 \
+       linux/ioctlent.h.in             \
+       linux/ioctlent.sh               \
+       linux/ioctlsort.c               \
+       linux/kexec.h                   \
+       linux/keyctl.h                  \
+       linux/m68k/ioctlent.h.in        \
+       linux/m68k/syscallent.h         \
+       linux/metag/ioctlent.h.in       \
+       linux/metag/syscallent.h        \
+       linux/microblaze/ioctlent.h.in  \
+       linux/microblaze/syscallent.h   \
+       linux/mips/errnoent.h           \
+       linux/mips/ioctlent.h.in        \
+       linux/mips/ioctlent.sh          \
+       linux/mips/signalent.h          \
+       linux/mips/syscallent-compat.h  \
+       linux/mips/syscallent-n32.h     \
+       linux/mips/syscallent-n64.h     \
+       linux/mips/syscallent-o32.h     \
+       linux/mips/syscallent.h         \
+       linux/mtd-abi.h                 \
+       linux/or1k/ioctlent.h.in        \
+       linux/or1k/syscallent.h         \
+       linux/personality.h             \
+       linux/powerpc/errnoent1.h       \
+       linux/powerpc/ioctlent.h.in     \
+       linux/powerpc/ioctlent1.h       \
+       linux/powerpc/signalent1.h      \
+       linux/powerpc/syscallent.h      \
+       linux/powerpc/syscallent1.h     \
+       linux/ptp_clock.h               \
+       linux/reboot.h                  \
+       linux/s390/ioctlent.h.in        \
+       linux/s390/syscallent.h         \
+       linux/s390x/ioctlent.h.in       \
+       linux/s390x/syscallent.h        \
+       linux/sh/ioctlent.h.in          \
+       linux/sh/syscallent.h           \
+       linux/sh64/ioctlent.h.in        \
+       linux/sh64/syscallent.h         \
+       linux/signalent.h               \
+       linux/sock_diag.h               \
+       linux/sparc/dummy2.h            \
+       linux/sparc/errnoent.h          \
+       linux/sparc/errnoent1.h         \
+       linux/sparc/gen.pl              \
+       linux/sparc/ioctlent.h.in       \
+       linux/sparc/ioctlent1.h         \
+       linux/sparc/signalent.h         \
+       linux/sparc/signalent1.h        \
+       linux/sparc/syscall1.h          \
+       linux/sparc/syscallent.h        \
+       linux/sparc/syscallent1.h       \
+       linux/sparc64/dummy2.h          \
+       linux/sparc64/errnoent.h        \
+       linux/sparc64/errnoent1.h       \
+       linux/sparc64/errnoent2.h       \
+       linux/sparc64/ioctlent.h.in     \
+       linux/sparc64/ioctlent1.h       \
+       linux/sparc64/ioctlent2.h       \
+       linux/sparc64/signalent.h       \
+       linux/sparc64/signalent1.h      \
+       linux/sparc64/signalent2.h      \
+       linux/sparc64/syscall1.h        \
+       linux/sparc64/syscallent.h      \
+       linux/sparc64/syscallent1.h     \
+       linux/sparc64/syscallent2.h     \
+       linux/subcall.h                 \
+       linux/syscall.h                 \
+       linux/tile/errnoent1.h          \
+       linux/tile/ioctlent.h.in        \
+       linux/tile/ioctlent1.h          \
+       linux/tile/signalent1.h         \
+       linux/tile/syscallent.h         \
+       linux/tile/syscallent1.h        \
+       linux/ubi-user.h                \
+       linux/x32/errnoent.h            \
+       linux/x32/errnoent1.h           \
+       linux/x32/ioctlent.h.in         \
+       linux/x32/ioctlent1.h           \
+       linux/x32/signalent.h           \
+       linux/x32/signalent1.h          \
+       linux/x32/syscallent.h          \
+       linux/x32/syscallent1.h         \
+       linux/x86_64/errnoent1.h        \
+       linux/x86_64/errnoent2.h        \
+       linux/x86_64/gentab.pl          \
+       linux/x86_64/ioctlent.h.in      \
+       linux/x86_64/ioctlent1.h        \
+       linux/x86_64/ioctlent2.h        \
+       linux/x86_64/signalent1.h       \
+       linux/x86_64/signalent2.h       \
+       linux/x86_64/syscallent.h       \
+       linux/x86_64/syscallent1.h      \
+       linux/x86_64/syscallent2.h      \
+       linux/xtensa/ioctlent.h.in      \
+       linux/xtensa/syscallent.h       \
+       signalent.sh                    \
+       strace-graph                    \
+       strace-log-merge                \
+       strace.spec                     \
+       syscallent.sh                   \
+       $(XLAT_INPUT_FILES)             \
+       $(XLAT_HEADER_FILES)            \
+       xlat/gen.sh                     \
+       xlate.el
+
+.PHONY: srpm
+srpm: dist-xz
+       rpmbuild --define '%_srcrpmdir .' -ts $(distdir).tar.xz
+
+BUILT_SOURCES = .version
+
+$(srcdir)/.version:
+       $(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
 
-EXTRA_DIST = $(man_MANS) errnoent.sh signalent.sh syscallent.sh ioctlsort.c \
-            debian/changelog debian/control debian/copyright debian/rules \
-            strace.spec \
-            strace-graph COPYRIGHT CREDITS PORTING \
-            README-CVS README-freebsd README-linux README-sunos4 README-svr4 \
-            linux/ioctlsort.c linux/ioctlent.sh \
-            linux/ioctlent.h linux/errnoent.h linux/signalent.h \
-            linux/syscall.h linux/syscallent.h linux/dummy.h \
-            linux/alpha/errnoent.h linux/alpha/ioctlent.h \
-            linux/alpha/signalent.h linux/alpha/syscallent.h \
-            linux/arm/syscallent.h \
-            linux/hppa/errnoent.h linux/hppa/ioctlent.h \
-            linux/hppa/signalent.h linux/hppa/syscallent.h \
-            linux/ia64/syscallent.h linux/ia64/errnoent.h \
-            linux/ia64/ioctlent.h linux/ia64/signalent.h \
-            linux/m68k/syscallent.h \
-            linux/mips/ioctlent.sh linux/mips/errnoent.h \
-            linux/mips/ioctlent.h linux/mips/signalent.h \
-            linux/mips/syscallent.h \
-            linux/powerpc/syscallent.h \
-            linux/powerpc/errnoent.h linux/powerpc/ioctlent.h \
-            linux/powerpc/signalent.h \
-            linux/s390/errnoent.h linux/s390/ioctlent.h \
-            linux/s390/signalent.h linux/s390/syscallent.h \
-            linux/s390x/errnoent.h linux/s390x/ioctlent.h \
-            linux/s390x/signalent.h linux/s390x/syscallent.h \
-            linux/sh/syscallent.h linux/sh/errnoent.h \
-            linux/sh/ioctlent.h linux/sh/signalent.h \
-            linux/sh64/syscallent.h \
-            linux/sparc/dummy2.h \
-            linux/sparc/errnoent.h linux/sparc/errnoent1.h \
-            linux/sparc/ioctlent.h linux/sparc/ioctlent1.h \
-            linux/sparc/signalent.h linux/sparc/signalent1.h \
-            linux/sparc/syscall.h linux/sparc/syscall1.h \
-            linux/sparc/syscallent.h linux/sparc/syscallent1.h \
-            linux/sparc/gen.pl linux/sparc/syscall.h.2 \
-            linux/sparc64/dummy2.h linux/sparc64/errnoent.h \
-            linux/sparc64/errnoent1.h linux/sparc64/errnoent2.h \
-            linux/sparc64/ioctlent.h linux/sparc64/ioctlent1.h \
-            linux/sparc64/ioctlent2.h linux/sparc64/signalent.h \
-            linux/sparc64/signalent1.h linux/sparc64/signalent2.h \
-            linux/sparc64/syscall.h linux/sparc64/syscall1.h \
-            linux/sparc64/syscallent.h linux/sparc64/syscallent1.h \
-            linux/sparc64/syscallent2.h \
-            linux/x86_64/syscallent.h linux/x86_64/gentab.pl \
-            linux/x86_64/errnoent1.h linux/x86_64/ioctlent1.h \
-            linux/x86_64/signalent1.h linux/x86_64/syscallent1.h \
-            freebsd/ioctlent.sh \
-            freebsd/syscalls.cat freebsd/syscalls.pl freebsd/syscalls.print \
-            freebsd/i386/errnoent.h freebsd/i386/ioctlent.h \
-            freebsd/i386/signalent.h \
-            freebsd/i386/syscall.h freebsd/i386/syscallent.h \
-            sunos4/dummy.h sunos4/errnoent.h \
-            sunos4/ioctlent.h sunos4/ioctlent.sh sunos4/signalent.h \
-            sunos4/syscall.h sunos4/syscallent.h \
-            svr4/dummy.h svr4/errnoent.h svr4/ioctlent.h svr4/ioctlent.sh \
-            svr4/signalent.h svr4/syscall.h svr4/syscallent.h \
-            xlate.el
+dist-hook:
+       $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
+
+today = $(shell date +%Y-%m-%d)
+version_regexp = $(subst .,\.,$(VERSION))
+news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
+
+news-check: NEWS
+       $(AM_V_GEN)if head -1 $< |                              \
+         grep -x $(news_check_regexp) >/dev/null; then         \
+               :;                                              \
+       else                                                    \
+               echo >&2 '$<: check failed';                    \
+               exit 1;                                         \
+       fi
 
 if MAINTAINER_MODE
-if LINUX
+
+gen_changelog_start_date = 2009-07-08 20:00
+$(srcdir)/ChangeLog: $(srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \
+                    $(srcdir)/.version
+       @rm -f $@.new
+       (cd $(srcdir); \
+        ./gitlog-to-changelog --append-dot \
+          --since='$(gen_changelog_start_date)'; \
+        echo; echo; echo 'See ChangeLog-CVS for older changes.' \
+       ) > $@.new
+       chmod 444 $@.new
+       mv -f $@.new $@
+
+$(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \
+                  $(srcdir)/Makefile.in $(srcdir)/.version
+       $(AM_V_GEN)                                                     \
+       (                                                               \
+         cd $(srcdir);                                                 \
+         sed '/^##/,$$d' CREDITS.in;                                   \
+         { sed -n '1,/^##>/d; s/  \+/\t/; s/^./&/p' CREDITS.in;        \
+           git log --pretty=format:'%aN        %aE';                   \
+         } | LC_ALL=C sort -u                                          \
+           | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}';             \
+       ) > $@-t && mv $@-t $@
+
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
 
 IOCTLDIR = /usr/include
 IOCTLASM = asm
+IOCTLSORT_INCLUDEDIR = $(IOCTLDIR)
 
-if I386
-ioctlent_h = linux/ioctlent.h
-else
-ioctlent_h = linux/$(ARCH)/ioctlent.h
-endif
+ioctlent_h_in = linux/ioctlent.h.in
 
-BUILT_SOURCES = $(ioctlent_h)
+BUILT_SOURCES += $(ioctlent_h_in)
 
-$(srcdir)/$(ioctlent_h): ioctlsort
+$(srcdir)/$(ioctlent_h_in): ioctlsort
        $(<D)/$(<F) > $@
 ioctlsort: $(srcdir)/linux/ioctlsort.c ioctls.h ioctldefs.h
-       $(filter-out -I%,$(LINK.c)) -I. -I$(IOCTLDIR) $(filter -I%,$(LINK.c)) \
+       $(filter-out -I%,$(LINK.c)) -I. -I$(IOCTLSORT_INCLUDEDIR) \
+       $(filter -I%,$(LINK.c)) \
          -o $@ $<
 ioctls.h: $(srcdir)/linux/ioctlent.sh
        $(SHELL) $< $(IOCTLDIR) $(IOCTLASM)
 ioctldefs.h: ioctls.h ;
 
 endif
-endif
+
+ioctlent_h = $(builddir)/$(OS)/ioctlent.h
+BUILT_SOURCES += $(ioctlent_h)
+CLEANFILES = $(ioctlent_h)
+ioctlent_h_deps = $(srcdir)/$(OS)/ioctlent.h.in $(srcdir)/$(OS)/$(ARCH)/ioctlent.h.in
+$(ioctlent_h): $(top_builddir)/config.status $(ioctlent_h_deps)
+       $(MKDIR_P) $(builddir)/$(OS)
+       cat $(ioctlent_h_deps) | \
+               $(COMPILE) -E -P - | \
+               LC_ALL=C sort -u -k3,3 -k2,2 > $@