diff options
| author | Paul Eggert | 2019-04-10 19:42:37 -0700 |
|---|---|---|
| committer | Paul Eggert | 2019-04-10 21:00:47 -0700 |
| commit | 9994bf17cf532f2e1d4310341da7180342202191 (patch) | |
| tree | c1811a216072e3c83ed51f7eaa4e6f2bfa647483 /src/dmpstruct.awk | |
| parent | 0627a8d7bc6ffa29d7a503fd36e760778ecb9fa1 (diff) | |
| download | emacs-9994bf17cf532f2e1d4310341da7180342202191.tar.gz emacs-9994bf17cf532f2e1d4310341da7180342202191.zip | |
Bring back dmpstruct.h
Bring back the dmpstruct.h checking, and use it when
--enable-checking=structs is specified. The checking can be helpful
to some developers, although it gets in the way of others and is
not needed for ordinary tarball builds.
* src/dmpstruct.awk: Restore this file, with mode 644 not 755.
* configure.ac: New option-arg --enable-checking=structs,
implied by --enable-checking.
(CHECK_STRUCTS): New macro and var.
* src/Makefile.in (CHECK_STRUCTS): New macro.
(dmpstruct_headers, dmpstruct.h, dmpstruct.h):
Restore these macros and rules.
(pdumper.o): Restore this dependency if $(CHECK_STRUCTS) is true.
(mostlyclean): Remove dmpstruct.h.
* src/pdumper.c [CHECK_STRUCTS]: Include dmpstruct.h,
and restore checks against hashes.
Diffstat (limited to 'src/dmpstruct.awk')
| -rw-r--r-- | src/dmpstruct.awk | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/dmpstruct.awk b/src/dmpstruct.awk new file mode 100644 index 00000000000..55626cf8b21 --- /dev/null +++ b/src/dmpstruct.awk | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | # Copyright (C) 2018-2019 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 | |||
| 18 | BEGIN { | ||
| 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 | } | ||
| 43 | END { | ||
| 44 | print "#endif /* EMACS_DMPSTRUCT_H */" | ||
| 45 | } | ||