X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=Configurations%2Fwindows-makefile.tmpl;h=cb1b4e696d90b67899c5bc97c0af596de228b19d;hp=6f3c8483e25df1e28447c289ab9ef3bdb7b0bf4f;hb=bbd9a50fa8e371927c290170ab6b8ac2597e5ff9;hpb=2fe730362812e3c7d364197449a9439e3cb5915b diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index 6f3c8483e2..cb1b4e696d 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -96,7 +96,7 @@ LDFLAGS={- $target{lflags} -} 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} -} @@ -139,6 +139,20 @@ list-tests: @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 ################################################### @@ -167,6 +181,54 @@ configdata.pm: {- $config{build_file_template} -} $(SRCDIR)\Configure 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}; @@ -222,7 +284,7 @@ EOF 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) << @@ -251,6 +313,11 @@ $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}});