Module: wine Branch: master Commit: 8ec232132853ee9efae4c5bde9fce665d9846ca1 URL: https://source.winehq.org/git/wine.git/?a=commit;h=8ec232132853ee9efae4c5bde...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Sep 23 14:44:50 2021 +0200
makefiles: Use explicit header path for sanity checks.
This makes it possible to use a local config.h.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
tools/makedep.c | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/tools/makedep.c b/tools/makedep.c index 9110035d633..6e10e4d3be4 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -907,26 +907,6 @@ static struct file *add_file( const char *name ) */ static void add_dependency( struct file *file, const char *name, enum incl_type type ) { - /* enforce some rules for the Wine tree */ - - if (!strcmp( name, "config.h" )) - { - if (strendswith( file->name, ".h" )) - fatal_error( "config.h must not be included by a header file\n" ); - if (file->deps_count) - fatal_error( "config.h must be included before anything else\n" ); - } - else if (!strcmp( name, "wine/port.h" )) - { - if (strendswith( file->name, ".h" )) - fatal_error( "wine/port.h must not be included by a header file\n" ); - if (!file->deps_count) fatal_error( "config.h must be included before wine/port.h\n" ); - if (file->deps_count > 1) - fatal_error( "wine/port.h must be included before everything except config.h\n" ); - if (strcmp( file->deps[0].name, "config.h" )) - fatal_error( "config.h must be included before wine/port.h\n" ); - } - if (file->deps_count >= file->deps_size) { file->deps_size *= 2; @@ -1630,9 +1610,6 @@ static void add_all_includes( struct makefile *make, struct incl_file *parent, s { unsigned int i;
- parent->files_count = 0; - parent->files_size = file->deps_count; - parent->files = xmalloc( parent->files_size * sizeof(*parent->files) ); for (i = 0; i < file->deps_count; i++) { switch (file->deps[i].type) @@ -2094,7 +2071,22 @@ static void get_dependencies( struct incl_file *file, struct incl_file *source ) return; /* library is imported only when building a typelib */ file->owner = source; strarray_add( &source->dependencies, file->filename ); + + /* sanity checks */ + if ((!strcmp( file->filename, "include/config.h" ) && file != source->files[0]) || + (!strcmp( file->filename, "include/wine/port.h" ) && file != source->files[1])) + { + input_file_name = source->filename; + input_line = 0; + for (i = 0; i < source->file->deps_count; i++) + { + if (!strcmp( source->file->deps[i].name, file->name )) + input_line = source->file->deps[i].line; + } + fatal_error( "%s must be included before other headers\n", file->name ); + } } + for (i = 0; i < file->files_count; i++) get_dependencies( file->files[i], source ); }