LDOUTFLAG={- $target{loutflag} || "/out:" -}
EX_LIBS={- $target{ex_libs} -}
LIB_CFLAGS={- join(" ", $target{lib_cflags}, $target{shared_cflag}) || "" -}
-SHARED_LDFLAGS={- $target{shared_ldflag} || "" -}
+LIB_LDFLAGS={- $target{shared_ldflag} || "" -}
DSO_CFLAGS={- join(" ", $target{dso_cflags}, $target{shared_cflag}) || "" -}
DSO_LDFLAGS={- join(" ", $target{dso_lflags}, $target{shared_ldflag}) || "" -}
BIN_CFLAGS={- $target{bin_cflags} -}
@set PERL=$(PERL)
@$(PERL) $(SRCDIR)\test\run_tests.pl list
+libclean:
+ del /Q /F $(LIBS) $(SHLIBS)
+ del lib.pdb
+
+clean: libclean
+ del /Q /F $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS)
+ del /Q /S /F *.asm
+ del /Q /S /F *.d
+ del /Q /S /F *.obj
+ del /Q /S /F *.pdb
+ del /Q /S /F *.exp
+ del /Q /S /F engines\*.ilk
+ del /Q /S /F engines\*.lib
+
depend:
# Building targets ###################################################
return map { shlib_import($_) } @_;
}
+ sub generatesrc {
+ my %args = @_;
+ (my $target = $args{src}) =~ s/\.[sS]$/.asm/;
+ my $generator = join(" ", @{$args{generator}});
+ my $incs = join("", map { " /I ".$_ } @{$args{incs}});
+
+ if ($target !~ /\.asm$/) {
+ return <<"EOF";
+$target: $args{generator}->[0]
+ \$(PERL) $generator > \$@
+EOF
+ } else {
+ if ($args{generator}->[0] =~ /\.pl$/) {
+ $generator = '$(PERL) '.$generator;
+ } elsif ($args{generator}->[0] =~ /\.S$/) {
+ $generator = undef;
+ } else {
+ die "Generator type for $src unknown: $generator\n";
+ }
+
+ if (defined($generator)) {
+ # If the target is named foo.S in build.info, we want to
+ # end up generating foo.s in two steps.
+ if ($args{src} =~ /\.S$/) {
+ return <<"EOF";
+$target: $args{generator}->[0]
+ set ASM=\$(AS)
+ set CC=\$(CC)
+ $generator \$@.S
+ \$(CC) \$(CFLAGS) $incs /EP /C \$@.S > \$@
+ del /Q \$@.S
+EOF
+ }
+ # Otherwise....
+ return <<"EOF";
+$target: $args{generator}->[0]
+ set ASM=\$(AS)
+ set CC=\$(CC)
+ $generator \$@
+EOF
+ }
+ return <<"EOF";
+$target: $args{generator}->[0]
+ \$(CC) \$(CFLAGS) $incs /EP /C \$< > \$@
+EOF
+ }
+ }
+
sub src2obj {
my %args = @_;
my $obj = $args{obj};
return <<"EOF"
$target: $deps $ordinalsfile
\$(PERL) $mkdef_pl "$mkdef_key" 32 > $shlib.def
- \$(LD) \$(LDFLAGS) \$(SHARED_LDFLAGS) \\
+ \$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) \\
/implib:$target \$(LDOUTFLAG)$shlib$shlibext /def:$shlib.def @<<
$objs$linklibs \$(EX_LIBS)
<<
EOF
}
sub obj2lib {
+ # Because static libs and import libs are both named the same in native
+ # Windows, we can't have both. We skip the static lib in that case,
+ # as the shared libs are what we use anyway.
+ return "" unless $disabled{"shared"};
+
my %args = @_;
my $lib = $args{lib};
my $objs = join("\n", map { $_.$objext } @{$args{objs}});