Signed-off-by: Paul Gofman pgofman@codeweavers.com --- tools/makedep.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/tools/makedep.c b/tools/makedep.c index 536d2263e35..c62a662b214 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -177,8 +177,10 @@ struct makefile struct strarray programs; struct strarray scripts; struct strarray imports; + struct strarray extra_target_imports; struct strarray subdirs; struct strarray delayimports; + struct strarray extra_target_delayimports; struct strarray extradllflags; struct strarray install_lib; struct strarray install_dev; @@ -1789,6 +1791,28 @@ static struct strarray get_expanded_make_var_array( const struct makefile *make, return ret; }
+static struct strarray get_expanded_make_multiple_var_array( const struct makefile *make, const char *name_suffix ) +{ + struct strarray ret = empty_strarray; + unsigned int i, name_suffix_len; + char *value, *token; + + name_suffix_len = strlen( name_suffix ); + + for (i = 0; i < make->vars.count / 2; ++i) + { + const char *str = make->vars.str[i * 2]; + unsigned int len = strlen( str ); + + if (len > name_suffix_len && !strcmp( str + len - name_suffix_len, name_suffix ) + && (value = get_expanded_make_variable( make, str ))) + { + for (token = strtok( value, " \t" ); token; token = strtok( NULL, " \t" )) + strarray_add_uniq( &ret, token ); + } + } + return ret; +}
/******************************************************************* * get_expanded_file_local_var @@ -4271,7 +4295,11 @@ static void load_sources( struct makefile *make ) make->programs = get_expanded_make_var_array( make, "PROGRAMS" ); make->scripts = get_expanded_make_var_array( make, "SCRIPTS" ); make->imports = get_expanded_make_var_array( make, "IMPORTS" ); + make->extra_target_imports + = get_expanded_make_multiple_var_array( make, "_IMPORTS" ); make->delayimports = get_expanded_make_var_array( make, "DELAYIMPORTS" ); + make->extra_target_delayimports + = get_expanded_make_multiple_var_array( make, "_DELAYIMPORTS" ); make->extradllflags = get_expanded_make_var_array( make, "EXTRADLLFLAGS" ); make->install_lib = get_expanded_make_var_array( make, "INSTALL_LIB" ); make->install_dev = get_expanded_make_var_array( make, "INSTALL_DEV" ); @@ -4363,6 +4391,10 @@ static void load_sources( struct makefile *make ) { for (i = 0; i < make->imports.count; i++) strarray_add_uniq( &cross_import_libs, make->imports.str[i] ); + + for (i = 0; i < make->extra_target_imports.count; i++) + strarray_add_uniq( &cross_import_libs, make->extra_target_imports.str[i] ); + if (make->is_win16) strarray_add_uniq( &cross_import_libs, "kernel" ); strarray_add_uniq( &cross_import_libs, "winecrt0" ); strarray_add_uniq( &cross_import_libs, "kernel32" ); @@ -4370,8 +4402,13 @@ static void load_sources( struct makefile *make ) }
if (!*dll_ext || make->is_cross) + { + for (i = 0; i < make->extra_target_delayimports.count; i++) + strarray_add_uniq( &delay_import_libs, get_base_name( make->extra_target_delayimports.str[i] )); + for (i = 0; i < make->delayimports.count; i++) strarray_add_uniq( &delay_import_libs, get_base_name( make->delayimports.str[i] )); + } }