Module: wine Branch: master Commit: 51b57133c79ddc8787df37ebea22550cb42f6625 URL: https://source.winehq.org/git/wine.git/?a=commit;h=51b57133c79ddc8787df37ebe...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 5 00:20:57 2018 +0100
makefiles: Generate dummy dependencies for header files.
This allows building when a header file is removed.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
tools/makedep.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/tools/makedep.c b/tools/makedep.c index 57adf0b..c9ab24d 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -200,6 +200,7 @@ struct makefile struct strarray implib_objs; struct strarray all_targets; struct strarray phony_targets; + struct strarray dependencies; struct strarray install_rules[NB_INSTALL_RULES]; };
@@ -426,6 +427,17 @@ static void strarray_add_uniq( struct strarray *array, const char *str )
/******************************************************************* + * strarray_addall_uniq + */ +static void strarray_addall_uniq( struct strarray *array, struct strarray added ) +{ + unsigned int i; + + for (i = 0; i < added.count; i++) strarray_add_uniq( array, added.str[i] ); +} + + +/******************************************************************* * strarray_get_value * * Find a value in a name/value pair string array. @@ -3643,7 +3655,7 @@ static void output_sources( struct makefile *make ) if (!strcmp( ext, output_source_funcs[j].ext )) break;
output_source_funcs[j].fn( make, source, obj ); - free( obj ); + strarray_addall_uniq( &make->dependencies, source->dependencies ); }
/* special case for winetest: add resource files from other test dirs */ @@ -3705,9 +3717,14 @@ static void output_sources( struct makefile *make ) output_uninstall_rules( make ); }
+ if (make->dependencies.count) + { + output_filenames( make->dependencies ); + output( ":\n" ); + } + strarray_addall( &make->clean_files, make->object_files ); - for (i = 0; i < make->crossobj_files.count; i++) - strarray_add_uniq( &make->clean_files, make->crossobj_files.str[i] ); + strarray_addall_uniq( &make->clean_files, make->crossobj_files ); strarray_addall( &make->clean_files, make->all_targets ); strarray_addall( &make->clean_files, get_expanded_make_var_array( make, "EXTRA_TARGETS" ));