makefiles: Add dependencies for the import lib symlinks.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b07cc3fe0c
commit
b211bd7b64
|
@ -2151,6 +2151,24 @@ static int needs_delay_lib( const struct makefile *make )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* needs_implib_symlink
|
||||||
|
*/
|
||||||
|
static int needs_implib_symlink( const struct makefile *make )
|
||||||
|
{
|
||||||
|
if (!make->module) return 0;
|
||||||
|
if (!make->importlib) return 0;
|
||||||
|
if (make->is_win16 && make->disabled) return 0;
|
||||||
|
if (strncmp( make->base_dir, "dlls/", 5 )) return 0;
|
||||||
|
if (!strcmp( make->module, make->importlib )) return 0;
|
||||||
|
if (!strchr( make->importlib, '.' ) &&
|
||||||
|
!strncmp( make->module, make->importlib, strlen( make->importlib )) &&
|
||||||
|
!strcmp( make->module + strlen( make->importlib ), ".dll" ))
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
* add_default_libraries
|
* add_default_libraries
|
||||||
*/
|
*/
|
||||||
|
@ -2227,8 +2245,12 @@ static struct strarray add_import_libs( const struct makefile *make, struct stra
|
||||||
if (is_cross || !*dll_ext || submake->staticimplib)
|
if (is_cross || !*dll_ext || submake->staticimplib)
|
||||||
lib = base_dir_path( submake, strmake( "lib%s.a", name ));
|
lib = base_dir_path( submake, strmake( "lib%s.a", name ));
|
||||||
else
|
else
|
||||||
|
{
|
||||||
strarray_add( deps, top_obj_dir_path( make,
|
strarray_add( deps, top_obj_dir_path( make,
|
||||||
strmake( "%s/lib%s.def", submake->base_dir, name )));
|
strmake( "%s/lib%s.def", submake->base_dir, name )));
|
||||||
|
if (needs_implib_symlink( submake ))
|
||||||
|
strarray_add( deps, top_obj_dir_path( make, strmake( "dlls/lib%s.def", name )));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2237,13 +2259,17 @@ static struct strarray add_import_libs( const struct makefile *make, struct stra
|
||||||
|
|
||||||
if (lib)
|
if (lib)
|
||||||
{
|
{
|
||||||
if (delay && !delay_load_flag && (is_cross || !*dll_ext))
|
const char *ext = NULL;
|
||||||
lib = replace_extension( lib, ".a", ".delay.a" );
|
|
||||||
else if (is_cross)
|
if (delay && !delay_load_flag && (is_cross || !*dll_ext)) ext = ".delay.a";
|
||||||
lib = replace_extension( lib, ".a", ".cross.a" );
|
else if (is_cross) ext = ".cross.a";
|
||||||
|
if (ext) lib = replace_extension( lib, ".a", ext );
|
||||||
lib = top_obj_dir_path( make, lib );
|
lib = top_obj_dir_path( make, lib );
|
||||||
strarray_add( deps, lib );
|
strarray_add( deps, lib );
|
||||||
strarray_add( &ret, lib );
|
strarray_add( &ret, lib );
|
||||||
|
if (needs_implib_symlink( top_makefile->submakes[j] ))
|
||||||
|
strarray_add( deps, top_obj_dir_path( make,
|
||||||
|
strmake( "dlls/lib%s%s", name, ext ? ext : ".a" )));
|
||||||
}
|
}
|
||||||
else strarray_add( &ret, strmake( "-l%s", name ));
|
else strarray_add( &ret, strmake( "-l%s", name ));
|
||||||
}
|
}
|
||||||
|
@ -2608,17 +2634,7 @@ static struct strarray output_importlib_symlinks( const struct makefile *parent,
|
||||||
const char *lib, *dst, *ext[4];
|
const char *lib, *dst, *ext[4];
|
||||||
int i, count = 0;
|
int i, count = 0;
|
||||||
|
|
||||||
if (!make->module) return ret;
|
ext[count++] = (*dll_ext && !make->implib_objs.count) ? "def" : "a";
|
||||||
if (!make->importlib) return ret;
|
|
||||||
if (make->is_win16 && make->disabled) return ret;
|
|
||||||
if (strncmp( make->base_dir, "dlls/", 5 )) return ret;
|
|
||||||
if (!strcmp( make->module, make->importlib )) return ret;
|
|
||||||
if (!strchr( make->importlib, '.' ) &&
|
|
||||||
!strncmp( make->module, make->importlib, strlen( make->importlib )) &&
|
|
||||||
!strcmp( make->module + strlen( make->importlib ), ".dll" ))
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ext[count++] = *dll_ext ? "def" : "a";
|
|
||||||
if (needs_delay_lib( make )) ext[count++] = "delay.a";
|
if (needs_delay_lib( make )) ext[count++] = "delay.a";
|
||||||
if (needs_cross_lib( make )) ext[count++] = "cross.a";
|
if (needs_cross_lib( make )) ext[count++] = "cross.a";
|
||||||
|
|
||||||
|
@ -3739,6 +3755,7 @@ static void output_subdirs( struct makefile *make )
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (needs_implib_symlink( submake ))
|
||||||
strarray_addall( &symlinks, output_importlib_symlinks( make, submake ));
|
strarray_addall( &symlinks, output_importlib_symlinks( make, submake ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue