Fix SRTP compile issues for windows
[openssl.git] / util / mk1mf.pl
index 7860375c56adca1a483c618f481b3dbd79ac04f0..45d58ef26e9fa6c9afe1ee26d436a7d4e9035d95 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl
+#!/usr/bin/env perl
 # A bit of an evil hack but it post processes the file ../MINFO which
 # is generated by `make files` in the top directory.
 # This script outputs one mega makefile that has no shell stuff or any
@@ -67,7 +67,8 @@ my %mf_import = (
        MODES_ASM_OBJ  => \$mf_modes_asm,
         ENGINES_ASM_OBJ=> \$mf_engines_asm,
        FIPSCANISTERONLY  => \$mf_fipscanisteronly,
-       FIPSCANISTERINTERNAL  => \$mf_fipscanisterinternal
+       FIPSCANISTERINTERNAL  => \$mf_fipscanisterinternal,
+       EC_ASM         => \$mf_ec_asm,
 );
 
 open(IN,"<Makefile") || die "unable to open Makefile!\n";
@@ -192,7 +193,7 @@ $mkdir="-mkdir" unless defined $mkdir;
 $ranlib="echo ranlib";
 
 $cc=(defined($VARS{'CC'}))?$VARS{'CC'}:'cc';
-$src_dir=(defined($VARS{'SRC'}))?$VARS{'SRC'}:getcwd();
+$src_dir=(defined($VARS{'SRC'}))?$VARS{'SRC'}: $platform eq 'copy' ? getcwd() : '.';
 $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:'';
 
 # $bin_dir.=$o causes a core dump on my sparc :-(
@@ -455,6 +456,14 @@ for (;;)
        }
 close(IN);
 
+if ($orig_platform eq 'copy')
+       {
+       # Remove opensslconf.h so it doesn't get updated if we configure a
+       # different branch.
+       $exheader =~ s/[^ ]+\/opensslconf.h//;
+       $header =~ s/[^ ]+\/opensslconf.h//;
+       }
+
 if ($fips)
        {
 
@@ -609,7 +618,10 @@ EOF
        $ex_libs .= " $zlib_lib" if $zlib_opt == 1;
        }
 
+my $asm_def = $orig_platform eq 'copy' ? "" : "ASM=$bin_dir$asm";
+
 $defs= <<"EOF";
+# N.B. You MUST use -j on FreeBSD.
 # This makefile has been automatically generated from the OpenSSL distribution.
 # This single makefile will build the complete OpenSSL distribution and
 # by default leave the 'intertesting' output files in .${o}out and the stuff
@@ -668,7 +680,7 @@ RANLIB=$ranlib
 MKDIR=$mkdir
 MKLIB=$bin_dir$mklib
 MLFLAGS=$mlflags
-ASM=$bin_dir$asm
+$asm_def
 
 # FIPS validated module and support file locations
 
@@ -754,7 +766,8 @@ $banner
 
 # This needs to be invoked once, when the makefile is first constructed, or
 # after cleaning.
-init: \$(TMP_D) \$(LIB_D) headers
+init: \$(TMP_D) \$(LIB_D) \$(INC_D) \$(INCO_D) \$(BIN_D) \$(TEST_D) headers
+       \$(PERL) \$(SRC_D)/util/copy-if-different.pl "\$(SRC_D)/crypto/opensslconf.h" "\$(INCO_D)/opensslconf.h"
 
 headers: \$(HEADER) \$(EXHEADER)
 
@@ -899,6 +912,7 @@ if ($orig_platform eq 'copy') {
        $lib_obj{CRYPTO} .= fix_asm($mf_engines_asm, 'engines');
        $lib_obj{CRYPTO} .= fix_asm($mf_rc4_asm, 'crypto/rc4');
        $lib_obj{CRYPTO} .= fix_asm($mf_modes_asm, 'crypto/modes');
+       $lib_obj{CRYPTO} .= fix_asm($mf_ec_asm, 'crypto/ec');
 }
 
 foreach (values %lib_nam)
@@ -1268,15 +1282,15 @@ sub perlasm_compile_target
 
        my($ret);
        $bname =~ s/(.*)\.[^\.]$/$1/;
-       $ret ="\$(TMP_D)$o$bname.asm: $source\n";
+       $ret ="\$(TMP_D)$o$bname$asm_suffix: $source\n";
        $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n";
        if ($fipscanisteronly)
                {
-               $ret .= "\t\$(PERL) util\\fipsas.pl . \$@ norunasm \$(CFLAG)\n";
+               $ret .= "\t\$(PERL) util$o.pl . \$@ norunasm \$(CFLAG)\n";
                }
        $ret .= "\n";
-       $ret.="$target: \$(TMP_D)$o$bname.asm\n";
-       $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n";
+       $ret.="$target: \$(TMP_D)$o$bname$asm_suffix\n";
+       $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname$asm_suffix\n\n";
        return($ret);
        }
 
@@ -1304,9 +1318,11 @@ sub cc_compile_target
        $target =~ s/\//$o/g if $o ne "/";
        $source =~ s/\//$o/g if $o ne "/";
        $ret ="$target: \$(SRC_D)$o$source\n\t";
-       $ret.="\$(CC) -MMD ${ofile}$target $ex_flags -c \$(SRC_D)$o$source\n\n";
+       $ret.="\$(CC)";
+       $ret.= " -MMD" if $orig_platform eq "copy";
+       $ret.= " ${ofile}$target $ex_flags -c \$(SRC_D)$o$source\n\n";
        $target =~ s/\.o$/.d/;
-       $ret.=".sinclude \"$target\"\n\n";
+       $ret.=".sinclude \"$target\"\n\n" if $orig_platform eq "copy";
        return($ret);
        }
 
@@ -1371,7 +1387,7 @@ sub do_copy_rule
                if ($n =~ /bss_file/)
                        { $pp=".c"; }
                else    { $pp=$p; }
-               $ret.="$to${o}$n$pp: \$(SRC_D)$o$_$pp $to\n\t\$(PERL) \$(SRC_D)${o}util${o}copy-if-different.pl \"\$(SRC_D)$o$_$pp\" \"$to${o}$n$pp\"\n\n";
+               $ret.="$to${o}$n$pp: \$(SRC_D)$o$_$pp\n\t\$(PERL) \$(SRC_D)${o}util${o}copy-if-different.pl \"\$(SRC_D)$o$_$pp\" \"$to${o}$n$pp\"\n\n";
                }
        return($ret);
        }
@@ -1443,6 +1459,7 @@ sub read_options
                "dll" => \$shlib,
                "shared" => 0,
                "no-sctp" => 0,
+               "no-srtp" => 0,
                "no-gmp" => 0,
                "no-rfc3779" => 0,
                "no-montasm" => 0,
@@ -1451,6 +1468,7 @@ sub read_options
                "no-zlib" => 0,
                "no-zlib-dynamic" => 0,
                "no-ssl-trace" => 0,
+               "no-unit-test" => 0,
                "fips" => \$fips,
                "fipscanisterbuild" => [\$fips, \$fipscanisterbuild],
                "fipscanisteronly" => [\$fips, \$fipscanisterbuild, \$fipscanisteronly],