X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=util%2Fmk1mf.pl;h=7901ff121da96845f18dd02ae1d95a79b1bff2cf;hp=59c688bbfac78303c442621f14c64349b6165b38;hb=668bcfd5ca237fdf6fbef1ab463697a4a48caf39;hpb=c3de647e7d50cb9a4154d4548f3981c7b13f3bfd diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 59c688bbfa..7901ff121d 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -13,6 +13,7 @@ $banner="\t\@echo Building OpenSSL"; my $no_static_engine = 1; my $engines = ""; +my @engines_obj = ""; my $otherlibs = ""; local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic local $zlib_lib = ""; @@ -59,7 +60,8 @@ my %mf_import = ( WP_ASM_OBJ => \$mf_wp_asm, CMLL_ENC => \$mf_cm_asm, MODES_ASM_OBJ => \$mf_modes_asm, - FIPSCANISTERONLY => \$mf_fipscanisteronly + FIPSCANISTERONLY => \$mf_fipscanisteronly, + FIPSCANISTERINTERNAL => \$mf_fipscanisterinternal ); open(IN,"; for (;;) { - chop; + s/\s*$//; # was chop, didn't work in mixture of perls for Windows... ($key,$val)=/^([^=]+)=(.*)/; if ($key eq "RELATIVE_DIRECTORY") @@ -410,8 +412,13 @@ for (;;) if ($key eq "HEADER") { $header.=&var_add($dir,$val, 1); } - if ($key eq "LIBOBJ" && ($dir ne "engines" || !$no_static_engine)) + if ($key eq "LIBOBJ") + { + if ($dir ne "engines" || !$no_static_engine) { $libobj=&var_add($dir,$val, 0); } + else + { push(@engines_obj,split(/\s+/,&var_add($dir,$val,0))); } + } if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine) { $engines.=$val } @@ -542,6 +549,8 @@ if ($fipscanisteronly) $libs_dep = ""; } +$cp2 = $cp unless defined $cp2; + $extra_install= <<"EOF"; \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\" \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin\" @@ -554,7 +563,7 @@ if ($fipscanisteronly) $extra_install = <<"EOF"; \$(CP) \"\$(O_FIPSCANISTER)\" \"\$(INSTALLTOP)${o}lib\" \$(CP) \"\$(O_FIPSCANISTER).sha1\" \"\$(INSTALLTOP)${o}lib\" - \$(CP) \"fips${o}fips_premain.c\" \"\$(INSTALLTOP)${o}lib\" + \$(CP2) \"fips${o}fips_premain.c\" \"\$(INSTALLTOP)${o}lib\" \$(CP) \"fips${o}fips_premain.c.sha1\" \"\$(INSTALLTOP)${o}lib\" \$(CP) \"\$(INCO_D)${o}fips.h\" \"\$(INSTALLTOP)${o}include${o}openssl\" \$(CP) \"\$(INCO_D)${o}fips_rand.h\" \"\$(INSTALLTOP)${o}include${o}openssl\" @@ -640,6 +649,7 @@ INCO_D=$inc_dir${o}openssl PERL=$perl CP=$cp +CP2=$cp2 RM=$rm RANLIB=$ranlib MKDIR=$mkdir @@ -832,10 +842,10 @@ if ($fips) } $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj", "fips${o}sha${o}fips_standalone_sha1.c", - "\$(SHLIB_CFLAGS)"); + "\$(APP_CFLAGS)"); $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj", "fips${o}fips_premain.c", - "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)"); + "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(APP_CFLAGS)"); } foreach (values %lib_nam) @@ -895,8 +905,11 @@ $defs.=&do_defs("E_SHLIB",$engines . $otherlibs,"\$(ENG_D)",$shlibp); foreach (split(/\s+/,$engines)) { - $rules.=&do_compile_rule("\$(OBJ_D)","engines${o}e_$_",$lib); - $rules.= &do_lib_rule("\$(OBJ_D)${o}e_${_}.obj","\$(ENG_D)$o$_$shlibp","",$shlib,""); + my $engine = $_; + my @objs = grep {/e_$engine/} @engines_obj; + $rules.=&do_compile_rule("\$(OBJ_D)",join(" ",@objs),$lib); + map {$_=~s/.*\/([^\/]+)$/\$(OBJ_D)${o}$1$obj/} @objs; + $rules.= &do_lib_rule(join(" ",@objs),"\$(ENG_D)$o$engine$shlibp","",$shlib,""); } @@ -924,7 +937,7 @@ if ($fips) { $rules.= &do_lib_rule("\$(CRYPTOOBJ)", "\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)", ""); - $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(FIPSOBJ)", + $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)", "\$(LIB_D)$o$crypto_compat",$crypto,$shlib,"\$(SO_CRYPTO)", ""); } } @@ -1193,7 +1206,7 @@ sub perlasm_compile_target $bname =~ s/(.*)\.[^\.]$/$1/; $ret ="\$(TMP_D)$o$bname.asm: $source\n"; $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n"; - if ($cflags =~ /-DOPENSSL_FIPSSYMS/) + if ($fipscanisteronly) { $ret .= "\t\$(PERL) util\\fipsas.pl . \$@ norunasm \$(CFLAG)\n"; } @@ -1210,7 +1223,9 @@ sub Sasm_compile_target $bname =~ s/(.*)\.[^\.]$/$1/; $ret ="\$(TMP_D)$o$bname.asm: $source\n"; - $ret.="\t\$(CC) -E \$(CFLAG) $source >\$\@\n\n"; + $ret.="\t\$(CC) -E \$(CFLAG) $source >\$\@\n"; + $ret.="\t\$(PERL) util\\fipsas.pl . \$@ norunasm \$(CFLAG)\n" if $fipscanisteronly; + $ret.="\n"; $ret.="$target: \$(TMP_D)$o$bname.asm\n"; $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n"; return($ret); @@ -1339,7 +1354,7 @@ sub read_options "no-cms" => \$no_cms, "no-jpake" => \$no_jpake, "no-ec2m" => \$no_ec2m, - "no-ec-nistp224-64-gcc-128" => 0, + "no-ec_nistp_64_gcc_128" => 0, "no-err" => \$no_err, "no-sock" => \$no_sock, "no-krb5" => \$no_krb5, @@ -1361,6 +1376,7 @@ sub read_options "shlib" => \$shlib, "dll" => \$shlib, "shared" => 0, + "no-sctp" => 0, "no-gmp" => 0, "no-rfc3779" => 0, "no-montasm" => 0, @@ -1368,9 +1384,11 @@ sub read_options "no-store" => 0, "no-zlib" => 0, "no-zlib-dynamic" => 0, + "no-ssl-trace" => 0, "fips" => \$fips, "fipscanisterbuild" => [\$fips, \$fipscanisterbuild], "fipscanisteronly" => [\$fips, \$fipscanisterbuild, \$fipscanisteronly], + "fipscheck" => [\$fips, \$fipscanisterbuild, \$fipscanisteronly], ); if (exists $valid_options{$_})