1# Copyright (C) 2018-2021 Free Software Foundation, Inc. 2# 3# This file is part of GNU Emacs. 4# 5# GNU Emacs 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 (at 8# your option) any later version. 9# 10# GNU Emacs 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 GNU Emacs. If not, see <https://www.gnu.org/licenses/>. 17 18BEGIN { 19 print "/* Generated by dmpstruct.awk */" 20 print "#ifndef EMACS_DMPSTRUCT_H" 21 print "#define EMACS_DMPSTRUCT_H" 22 struct_name = "" 23 tmpfile = "dmpstruct.tmp" 24} 25# Match a type followed by optional syntactic whitespace 26/^(enum|struct|union) [a-zA-Z0-9_]+([\t ]|\/\*.*\*\/)*$/ { 27 struct_name = $2 28 close (tmpfile) 29} 30/^(enum|struct|union) [a-zA-Z0-9_]+([\t ]|\/\*.*\*\/)*$/, /^( )?};$/ { 31 print $0 > tmpfile 32} 33/^( )?} *(GCALIGNED_STRUCT)? *;$/ { 34 if (struct_name != "") { 35 fflush (tmpfile) 36 cmd = "../lib-src/make-fingerprint -r " tmpfile 37 cmd | getline hash 38 close (cmd) 39 printf "#define HASH_%s_%.10s\n", struct_name, hash 40 struct_name = "" 41 } 42} 43END { 44 print "#endif /* EMACS_DMPSTRUCT_H */" 45} 46