addition to previous commit, properly implement make lint.
[oweals/gnunet.git] / Makefile.am
1 # This Makefile.am is in the public domain
2 AM_CPPFLAGS = -I$(top_srcdir)/src/include
3
4 # only documentation (ALL of the documentation)
5 if DOCUMENTATION_ONLY
6   SUBDIRS = doc
7 else
8   SUBDIRS = m4 src po pkgconfig
9 endif
10
11 # documentation on / off switch (affects all of the documentation)
12 if DOCUMENTATION
13   SUBDIRS += doc
14 endif
15
16 # only manpages, needs "doc" subdir
17 if INCLUDE_MANPAGES
18   SUBDIRS += doc
19 endif
20
21 if !TALER_ONLY
22   SUBDIRS += contrib
23 endif
24
25 EXTRA_DIST = \
26  ABOUT-NLS \
27  config.rpath \
28  acinclude.m4 \
29  README.1st
30
31 gnunetincludedir = $(includedir)/gnunet
32 gnunetinclude_HEADERS = gnunet_config.h
33
34 docdir = $(datadir)/doc/gnunet/
35 doc_DATA = COPYING README
36
37 ACLOCAL_AMFLAGS = -I m4
38
39 if HAVE_UNCRUSTIFY_BINARY
40 MCRUSTIFY = find $(top_srcdir) -type f -name '*.c' -or -name '*.h' -print0 | xargs -0 uncrustify -c $(top_srcdir)/contrib/uncrustify.cfg -q --replace --no-backup 2>&1 || true
41 else
42 MCRUSTIFY = echo "crustify: skipped"
43 endif
44
45 if HAVE_YAPF_BINARY
46 MYAPF = find $(top_srcdir) -type f -name '*.py' -or -name '*.py.in' -print0 | xargs -0 $(YAPF_BINARY) -i 2>&1 || true
47 else
48 MYAPF = echo "yapf: skipped"
49 endif
50
51 pretty:
52         $(MCRUSTIFY)
53         $(MYAPF)
54
55 lint: check-bashisms check-texinfo check-man check-python
56
57 check-bashisms:
58 if HAVE_CHECKBASHISMS
59         printf "If checkbashisms.pl is in PATH, run checkbashism on all .sh files.\n"
60         find '.' -type f ! -path '*/.*' ! -path '*/_*' -name '*.sh' -print0 | xargs -0 checkbashisms.pl -f 2>&1 | tee $(srcdir)/bashism.log || true
61 else
62     printf "No checkbashisms in PATH, skipped"
63 endif
64
65 check-man:
66         printf "Running lint-man.sh in doc/man.\n"
67         @cd $(top_srcdir)/doc/man ; ../../contrib/scripts/lint/lint-man.sh || true
68
69 check-python:
70         printf "Running flake8 and 2to3 if detected.\n"
71         $(top_srcdir)/contrib/scripts/lint/lint-python.sh || true
72
73 # exception to add: ignore license files.
74 # exception to add: uref's can go above 79 chars.
75 check-texinfo:
76         printf "Running basic texinfo linters\n"
77         printf "...lines containing tabstops?\n" 2>&1 | tee $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
78         printf "...lines containing tabstops?\n" 2>&1 | tee $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
79         @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/\t/ {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_handbook.log || true
80         @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/\t/ {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_tutorial.log || true
81         printf "...line length over 79 chars?\n" 2>&1 | tee $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
82         @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk 'length>79 {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_handbook.log || true
83         printf "...line length over 79 chars?\n" 2>&1 | tee $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
84         @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk 'length>79 {print FILENAME":"NR":"$$0}' > $(srcdir)/texinfo_tutorial.log || true
85         printf "...lines containing macros incompatible with old makeinfo?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
86         @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@geq\{\}/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
87         printf "...lines containing macros incompatible with old makeinfo?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
88         @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@geq\{\}/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
89         printf "...lines containing macros incompatible with texi2mdoc?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
90         @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@footnote\{/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
91         printf "...lines containing macros incompatible with texi2mdoc?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
92         @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/@footnote\{/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
93         printf "...lines telling us what is left TODO or to fix?\n" 2>&1 | tee -a $(top_srcdir)/doc/handbook/texinfo_handbook.log || true
94         @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/TODO/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
95         @cd $(top_srcdir)/doc/handbook ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/XXX/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_handbook.log || true
96         printf "...lines telling us what is left TODO or to fix?\n" 2>&1 | tee -a $(top_srcdir)/doc/tutorial/texinfo_tutorial.log || true
97         @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/TODO/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true
98         @cd $(top_srcdir)/doc/tutorial ; find . -type f ! -path '*/.*' -name '*.texi' -print0 | xargs -0 awk '/XXX/ {print FILENAME":"NR":"$$0}' >> $(srcdir)/texinfo_tutorial.log || true