1 # Freeze M4 files. 2 3 # Copyright (C) 2002, 2004, 2006-2012 Free Software Foundation, Inc. 4 5 # This program is free software: you can redistribute it and/or modify 6 # it under the terms of the GNU General Public License as published by 7 # the Free Software Foundation, either version 3 of the License, or 8 # (at your option) any later version. 9 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 # GNU General Public License for more details. 14 15 # You should have received a copy of the GNU General Public License 16 # along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 19 ## ----------------- ## 20 ## Freeze M4 files. ## 21 ## ----------------- ## 22 23 SUFFIXES = .m4 .m4f 24 25 AUTOM4TE_CFG = $(top_builddir)/lib/autom4te.cfg 26 $(AUTOM4TE_CFG): $(top_srcdir)/lib/autom4te.in 27 cd $(top_builddir)/lib && $(MAKE) $(AM_MAKEFLAGS) autom4te.cfg 28 29 # Do not use AUTOM4TE here, since maint.mk (my-distcheck) 30 # checks if we are independent of Autoconf by defining AUTOM4TE (and 31 # others) to `false'. Autoconf provides autom4te, so that doesn't 32 # apply to us. 33 MY_AUTOM4TE = \ 34 autom4te_perllibdir='$(top_srcdir)'/lib \ 35 AUTOM4TE_CFG='$(AUTOM4TE_CFG)' $(top_builddir)/bin/autom4te \ 36 -B '$(top_builddir)'/lib -B '$(top_srcdir)'/lib # keep ` ' 37 38 # When processing the file with diversion disabled, there must be no 39 # output but comments and empty lines. 40 # If freezing produces output, something went wrong: a bad `divert', 41 # or an improper paren etc. 42 # It may happen that the output does not end with an end of line, hence 43 # force an end of line when reporting errors. 44 .m4.m4f: 45 $(MY_AUTOM4TE) \ 46 --language=$* \ 47 --freeze \ 48 --output=$@ 49 50 # Factor the dependencies between all the frozen files. 51 # Some day we should explain to Automake how to use autom4te to compute 52 # the dependencies... 53 src_libdir = $(top_srcdir)/lib 54 build_libdir = $(top_builddir)/lib 55 56 m4f_dependencies = $(top_builddir)/bin/autom4te $(AUTOM4TE_CFG) 57 58 # For parallel builds. 59 $(build_libdir)/m4sugar/version.m4: 60 cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4 61 62 m4sugar_m4f_dependencies = \ 63 $(m4f_dependencies) \ 64 $(src_libdir)/m4sugar/m4sugar.m4 \ 65 $(build_libdir)/m4sugar/version.m4 66 67 m4sh_m4f_dependencies = \ 68 $(m4sugar_m4f_dependencies) \ 69 $(src_libdir)/m4sugar/m4sh.m4 70 71 autotest_m4f_dependencies = \ 72 $(m4sh_m4f_dependencies) \ 73 $(src_libdir)/autotest/autotest.m4 \ 74 $(src_libdir)/autotest/general.m4 \ 75 $(src_libdir)/autotest/specific.m4 76 77 autoconf_m4f_dependencies = \ 78 $(m4sh_m4f_dependencies) \ 79 $(src_libdir)/autoconf/autoscan.m4 \ 80 $(src_libdir)/autoconf/general.m4 \ 81 $(src_libdir)/autoconf/autoheader.m4 \ 82 $(src_libdir)/autoconf/autoupdate.m4 \ 83 $(src_libdir)/autoconf/autotest.m4 \ 84 $(src_libdir)/autoconf/status.m4 \ 85 $(src_libdir)/autoconf/oldnames.m4 \ 86 $(src_libdir)/autoconf/specific.m4 \ 87 $(src_libdir)/autoconf/lang.m4 \ 88 $(src_libdir)/autoconf/c.m4 \ 89 $(src_libdir)/autoconf/fortran.m4 \ 90 $(src_libdir)/autoconf/erlang.m4 \ 91 $(src_libdir)/autoconf/go.m4 \ 92 $(src_libdir)/autoconf/functions.m4 \ 93 $(src_libdir)/autoconf/headers.m4 \ 94 $(src_libdir)/autoconf/types.m4 \ 95 $(src_libdir)/autoconf/libs.m4 \ 96 $(src_libdir)/autoconf/programs.m4 \ 97 $(src_libdir)/autoconf/autoconf.m4 98 99 100 ## --------------------------- ## 101 ## Run ETAGS on some M4 code. ## 102 ## --------------------------- ## 103 104 ETAGS_FOR_M4 = \ 105 --lang=none \ 106 --regex='/\(m4_define\|define\)(\[\([^]]*\)\]/\2/' 107 108 ETAGS_FOR_M4SUGAR = \ 109 $(ETAGS_FOR_M4) \ 110 --regex='/m4_defun(\[\([^]]*\)\]/\1/' 111 112 ETAGS_FOR_AUTOCONF = \ 113 $(ETAGS_FOR_M4SUGAR) \ 114 --regex='/\(A[CU]_DEFUN\|AU_ALIAS\)(\[\([^]]*\)\]/\2/' \ 115 --regex='/AN_\(FUNCTION\|HEADER\|IDENTIFIER\|LIBRARY\|MAKEVAR\|PROGRAM\)(\[\([^]]*\)\]/\2/' 116 117 118 ## -------------------------------- ## 119 ## Looking for forbidden patterns. ## 120 ## -------------------------------- ## 121 122 check-forbidden-patterns: 123 @if (cd $(srcdir) && \ 124 $(GREP) $(forbidden_patterns) $(forbidden_patterns_files)) \ 125 >forbidden.log; then \ 126 echo "ERROR: forbidden patterns were found:" >&2; \ 127 sed "s|^|$*.m4: |" <forbidden.log >&2; \ 128 echo >&2; \ 129 exit 1; \ 130 else \ 131 rm -f forbidden.log; \ 132 fi 133