diff options
Diffstat (limited to 'Configurations/windows-makefile.tmpl')
-rw-r--r-- | Configurations/windows-makefile.tmpl | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index 1e3d63f8d1..521f72d7b7 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -848,7 +848,10 @@ EOF my %args = @_; my $lib = $args{lib}; my @objs = map { platform->convertext($_) } - grep { platform->isobj($_) || platform->isres($_) } + grep { platform->isobj($_) } + @{$args{objs}}; + my @ress = map { platform->convertext($_) } + grep { platform->isres($_) } @{$args{objs}}; my @defs = map { platform->def($_) } grep { platform->isdef($_) } @@ -857,10 +860,11 @@ EOF die "More than one exported symbols list" if scalar @defs > 1; my $linklibs = join("", map { "$_$target{ld_resp_delim}" } @deps); my $objs = join($target{ld_resp_delim}, @objs); - my $deps = join(" ", @objs, @defs, @deps); + my $ress = join($target{ld_resp_delim}, @ress); + my $deps = join(" ", @objs, @ress, @defs, @deps); my $import = platform->sharedlib_import($lib); my $dll = platform->sharedlib($lib); - my $shared_def = join("", map { " $target{lddefflag}$_" } @defs); + my $shared_def = $target{lddefflag} . join("", @defs); my $implib_rule = $target{ld_implib_rule} || ""; my $implib_flag = $target{ld_implib_flag} ? "$target{ld_implib_flag}$import" @@ -875,7 +879,7 @@ $dll: $deps IF EXIST $full.manifest DEL /F /Q $full.manifest IF EXIST \$@ DEL /F /Q \$@ \$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) @<< $implib_flag || (DEL /Q \$(\@B).* $import; EXIT 1) -$objs$target{ld_resp_delim}\$(LDOUTFLAG)$dll$target{ldpostoutflag}$target{ld_resp_delim}$linklibs\$(LIB_EX_LIBS)$shared_def +$objs$target{ld_resp_delim}\$(LDOUTFLAG)$dll$target{ldpostoutflag}$target{ld_resp_delim}$linklibs\$(LIB_EX_LIBS)$target{ld_resp_delim}$shared_def$target{ldresflag}$ress << IF EXIST $dll.manifest \\ \$(MT) \$(MTFLAGS) \$(MTINFLAG)$dll.manifest \$(MTOUTFLAG)$dll @@ -892,21 +896,26 @@ EOF my $dso = platform->dso($args{module}); my $dso_n = platform->dsoname($args{module}); my @objs = map { platform->convertext($_) } - grep { platform->isobj($_) || platform->isres($_) } + grep { platform->isobj($_) } + @{$args{objs}}; + my @ress = map { platform->convertext($_) } + grep { platform->isres($_) } @{$args{objs}}; my @defs = map { platform->def($_) } grep { platform->isdef($_) } @{$args{objs}}; my @deps = compute_lib_depends(@{$args{deps}}); + die "More than one exported symbols list" if scalar @defs > 1; my $objs = join($target{ld_resp_delim}, @objs); + my $ress = join($target{ld_resp_delim}, @ress); my $linklibs = join("", map { "$_$target{ld_resp_delim}" } @deps); - my $deps = join(" ", @objs, @defs, @deps); - my $shared_def = join("", map { " $target{lddefflag}$_" } @defs); + my $deps = join(" ", @objs, @ress, @defs, @deps); + my $shared_def = $target{lddefflag} . join("", @defs); return <<"EOF"; $dso: $deps IF EXIST $dso.manifest DEL /F /Q $dso.manifest \$(LD) \$(LDFLAGS) \$(DSO_LDFLAGS) @<< || (DEL /Q \$(\@B).* $dso_n.*; EXIT 1) -$objs$target{ld_resp_delim}\$(LDOUTFLAG)$dso$target{ldpostoutflag}$target{ld_resp_delim}$linklibs \$(DSO_EX_LIBS)$shared_def +$objs$target{ld_resp_delim}\$(LDOUTFLAG)$dso$target{ldpostoutflag}$target{ld_resp_delim}$linklibs \$(DSO_EX_LIBS)$target{ld_resp_delim}$shared_def$target{ldresflag}$ress << IF EXIST $dso.manifest \\ \$(MT) \$(MTFLAGS) \$(MTINFLAG)$dso.manifest \$(MTOUTFLAG)$dso @@ -929,17 +938,20 @@ EOF my %args = @_; my $bin = platform->bin($args{bin}); my @objs = map { platform->convertext($_) } - grep { platform->isobj($_) || platform->isres($_) } + grep { platform->isobj($_) } + @{$args{objs}}; + my @ress = map { platform->convertext($_) } + grep { platform->isres($_) } @{$args{objs}}; my @deps = compute_lib_depends(@{$args{deps}}); my $objs = join($target{ld_resp_delim}, @objs); my $linklibs = join("", map { "$_$target{ld_resp_delim}" } @deps); - my $deps = join(" ", @objs, @deps); + my $deps = join(" ", @objs, @ress, @deps); return <<"EOF"; $bin: $deps IF EXIST $bin.manifest DEL /F /Q $bin.manifest \$(LD) \$(LDFLAGS) \$(BIN_LDFLAGS) @<< -$objs$target{ld_resp_delim}\$(LDOUTFLAG)$bin$target{ldpostoutflag}$target{ld_resp_delim}$linklibs\$(BIN_EX_LIBS) +$objs$target{ld_resp_delim}\$(LDOUTFLAG)$bin$target{ldpostoutflag}$target{ld_resp_delim}$linklibs\$(BIN_EX_LIBS)$target{ldresflag}$target{ldresflag}$ress << IF EXIST $bin.manifest \\ \$(MT) \$(MTFLAGS) \$(MTINFLAG)$bin.manifest \$(MTOUTFLAG)$bin |