X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=util%2Fmk1mf.pl;h=a2cd0407e1fad150d51204055856641e655b914a;hp=e7cbea883d66d109d70af4aad99927a54e28543d;hb=8e56a4227bcd2e3eeb1cb18f3d0d5876ed76a8ce;hpb=b184e3ef73200cb3b7914a603b43a5b8a074c85f diff --git a/util/mk1mf.pl b/util/mk1mf.pl index e7cbea883d..a2cd0407e1 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -11,6 +11,7 @@ use Cwd; $INSTALLTOP="/usr/local"; $OPENSSLDIR="/usr/local/ssl"; +$ENGINESDIR="/usr/local/lib/engines"; $OPTIONS=""; $ssl_version=""; $banner="\t\@echo Building OpenSSL"; @@ -47,9 +48,12 @@ my %mf_import = ( OPTIONS => \$OPTIONS, INSTALLTOP => \$INSTALLTOP, OPENSSLDIR => \$OPENSSLDIR, + ENGINESDIR => \$ENGINESDIR, PLATFORM => \$mf_platform, CC => \$mf_cc, CFLAG => \$mf_cflag, + CFLAG_Q => \$mf_cflag_q, + SHARED_CFLAG => \$mf_shared_cflag, DEPFLAG => \$mf_depflag, CPUID_OBJ => \$mf_cpuid_asm, BN_ASM => \$mf_bn_asm, @@ -102,7 +106,6 @@ $infile="MINFO"; "VC-NT", "Microsoft Visual C++ [4-6] - Windows NT ONLY", "Mingw32", "GNU C++ - Windows NT or 9x", "Mingw32-files", "Create files with DOS copy ...", - "BC-NT", "Borland C++ 4.5 - Windows NT", "linux-elf","Linux elf", "ultrix-mips","DEC mips ultrix", "FreeBSD","FreeBSD distribution", @@ -130,7 +133,8 @@ foreach (@ARGV) print STDERR <<"EOF"; and [options] can be one of no-md2 no-md4 no-md5 no-sha no-mdc2 - Skip this digest - no-ripemd + no-rmd160 + no-blake2 - No blake2 no-rc2 no-rc4 no-rc5 no-idea no-des - Skip this symetric cipher no-bf no-cast no-aes no-camellia no-seed no-rsa no-dsa no-dh - Skip this public key cipher @@ -144,6 +148,7 @@ and [options] can be one of no-hw - No hw no-async - No Async (use NULL) no-autoalginit - Don't auto load algorithms in libcrypto + no-autoerrinit - Don't auto load error strings for libcrypto or libssl nasm - Use NASM for x86 asm nw-nasm - Use NASM x86 asm for NetWare nw-mwasm - Use Metrowerks x86 asm for NetWare @@ -171,8 +176,6 @@ foreach (grep(!/^$/, split(/ /, $OPTIONS))) print STDERR "unknown option - $_\n" if !&read_options; } -$no_static_engine = 0 if (!$shlib); - $no_mdc2=1 if ($no_des); $no_ssl3=1 if ($no_md5); @@ -220,11 +223,6 @@ elsif ($platform eq "Mingw32-files") { require 'Mingw32f.pl'; } -elsif ($platform eq "BC-NT") - { - $bc=1; - require 'BC-32.pl'; - } elsif ($platform eq "FreeBSD") { require 'unix.pl'; @@ -300,11 +298,12 @@ $cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; $cflags.=" -DOPENSSL_NO_HW" if $no_hw; $cflags.=" -DOPENSSL_NO_ASYNC" if $no_async; $cflags.=" -DOPENSSL_NO_AUTOALGINIT" if $no_autoalginit; +$cflags.=" -DOPENSSL_NO_AUTOERRINIT" if $no_autoerrinit; $cflags.=" -DOPENSSL_FIPS" if $fips; -$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake; $cflags.=" -DOPENSSL_NO_EC2M" if $no_ec2m; $cflags.= " -DZLIB" if $zlib_opt; $cflags.= " -DZLIB_SHARED" if $zlib_opt == 2; +$cflags.=" -DOPENSSL_PIC"; if ($no_static_engine) { @@ -323,7 +322,7 @@ else { $cflags="$c_flags$cflags" if ($c_flags ne ""); } if ($orig_platform eq 'copy') { - $cflags = $mf_cflag; + $cflags = "$mf_cflag $mf_shared_cflag"; $cc = $mf_cc; } @@ -548,8 +547,10 @@ if ($fips) { open (IN, "util/fipslib_path.txt") || fipslib_error(); $fipslibdir = ; - chomp $fipslibdir; close IN; + $fipslibdir = "" unless defined($fipslibdir); + $fipslibdir =~ s{\R$}{}; + fipslib_error() if ($fipslibdir eq ""); } fips_check_files($fipslibdir, "fipscanister.lib", "fipscanister.lib.sha1", @@ -612,6 +613,15 @@ EOF my $asm_def = $orig_platform eq 'copy' ? "" : "ASM=$bin_dir$asm"; +$cflags =~ s/\((ENGINESDIR|OPENSSLDIR)\)/\(${1}_QQ\)/g; +(my $cflags_q = $cflags) =~ s/([\\"])/\\$1/g; +(my $INSTALLTOP_Q = $INSTALLTOP) =~ s/([\\"])/\\$1/g; +(my $INSTALLTOP_QQ = $INSTALLTOP_Q) =~ s/\\/\\\\/g; +(my $OPENSSLDIR_Q = $OPENSSLDIR) =~ s/([\\"])/\\$1/g; +(my $OPENSSLDIR_QQ = $OPENSSLDIR_Q) =~ s/\\/\\\\/g; +(my $ENGINESDIR_Q = $ENGINESDIR) =~ s/([\\"])/\\$1/g; +(my $ENGINESDIR_QQ = $ENGINESDIR_Q) =~ s/\\/\\\\/g; + $defs= <<"EOF"; # N.B. You MUST use -j on FreeBSD. # This makefile has been automatically generated from the OpenSSL distribution. @@ -633,12 +643,17 @@ $defs .= $preamble if defined $preamble; $defs.= <<"EOF"; INSTALLTOP=$INSTALLTOP +INSTALLTOP_QQ=$INSTALLTOP_QQ OPENSSLDIR=$OPENSSLDIR +OPENSSLDIR_QQ=$OPENSSLDIR_QQ +ENGINESDIR=$ENGINESDIR +ENGINESDIR_QQ=$ENGINESDIR_QQ # Set your compiler options PLATFORM=$platform CC=$bin_dir${cc} CFLAG=$cflags +CFLAG_Q=$cflags_q APP_CFLAG=$app_cflag LIB_CFLAG=$lib_cflag SHLIB_CFLAG=$shl_cflag @@ -651,7 +666,7 @@ EX_LIBS=$ex_libs # The OpenSSL directory SRC_D=$src_dir -LINK=$link +LINK_CMD=$link LFLAGS=$lflags RSC=$rsc FIPSLINK=\$(PERL) util${o}fipslink.pl @@ -768,6 +783,7 @@ install: all \$(MKDIR) \"\$(INSTALLTOP)${o}include\" \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\" \$(MKDIR) \"\$(INSTALLTOP)${o}lib\" + \$(MKDIR) \"\$(INSTALLTOP)${o}lib${o}engines\" $extra_install clean: @@ -785,44 +801,14 @@ reallyclean: EOF -$rules .= &do_rehash_rule("rehash.time", "certs/demo apps tools"); +$rules .= &do_rehash_rule("rehash.time", "apps tools"); $rules .= &do_test_rule("test", "rehash.time", "run_tests.pl"); -my $platform_cpp_symbol = "MK1MF_PLATFORM_$platform"; -$platform_cpp_symbol =~ s/-/_/g; -if (open(IN,"crypto/buildinf.h")) - { - # Remove entry for this platform in existing file buildinf.h. - - my $old_buildinf_h = ""; - while () - { - if (/^\#ifdef $platform_cpp_symbol$/) - { - while () { last if (/^\#endif/); } - } - else - { - $old_buildinf_h .= $_; - } - } - close(IN); - - open(OUT,">crypto/buildinf.h") || die "Can't open buildinf.h"; - print OUT $old_buildinf_h; - close(OUT); - } - -open (OUT,">>crypto/buildinf.h") || die "Can't open buildinf.h"; -printf OUT <<"EOF"; -#ifdef $platform_cpp_symbol - /* auto-generated/updated by util/mk1mf.pl for crypto/cversion.c */ - #define CFLAGS "compiler: $cc $cflags" - #define PLATFORM "$platform" +$rules .= <<"EOF"; +crypto${o}buildinf.h : MINFO + \$(PERL) util${o}mkbuildinf.pl "\$(CC) \$(CFLAG_Q)" "\$(PLATFORM)" > crypto${o}buildinf.h +$(OBJ_D)${o}cversion${obj} : crypto${o}buildinf.h EOF -printf OUT " #define DATE \"%s\"\n", scalar gmtime(); -printf OUT "#endif\n"; -close(OUT); # Strip off trailing ' ' foreach (keys %lib_obj) { $lib_obj{$_}=&clean_up_ws($lib_obj{$_}); } @@ -1044,7 +1030,6 @@ sub var_add return("") if $no_dh && $dir =~ /\/dh/; return("") if $no_ec && $dir =~ /\/ec/; return("") if $no_cms && $dir =~ /\/cms/; - return("") if $no_jpake && $dir =~ /\/jpake/; return("") if !$fips && $dir =~ /^fips/; if ($no_des && $dir =~ /\/des/) { @@ -1083,6 +1068,7 @@ sub var_add @a=grep(!/(^md4)|(_md4$)/,@a) if $no_md4; @a=grep(!/(^md5)|(_md5$)/,@a) if $no_md5; @a=grep(!/(rmd)|(ripemd)/,@a) if $no_ripemd; + @a=grep(!/(^blake)/,@a) if $no_blake2; @a=grep(!/(^d2i_r_)|(^i2d_r_)/,@a) if $no_rsa; @a=grep(!/(^p_open$)/,@a) if $no_rsa; @@ -1169,7 +1155,7 @@ sub do_defs elsif ($var eq "SSLOBJ") { $ret.="\$(OBJ_D)\\\$(SSL).res "; } } - chomp($ret); + chomp($ret); # Does this actually do something? /RL $ret.="\n\n"; return($ret); } @@ -1240,7 +1226,7 @@ sub perlasm_compile_target my($ret); $bname =~ s/(.*)\.[^\.]$/$1/; $ret ="\$(TMP_D)$o$bname$asm_suffix: $source\n"; - $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n"; + $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) \$\@\n"; if ($fipscanisteronly) { $ret .= "\t\$(PERL) util$o.pl . \$@ norunasm \$(CFLAG)\n"; @@ -1271,7 +1257,6 @@ sub cc_compile_target local($target,$source,$ex_flags)=@_; local($ret); - $ex_flags.=" -DMK1MF_BUILD -D$platform_cpp_symbol" if ($source =~ /cversion/); $target =~ s/\//$o/g if $o ne "/"; $source =~ s/\//$o/g if $o ne "/"; $ret ="$target: \$(SRC_D)$o$source\n\t"; @@ -1306,7 +1291,7 @@ sub do_asm_rule my $plasm = $objfile; $plasm =~ s/${obj}/.pl/; $ret.="$srcfile: $plasm\n"; - $ret.="\t\$(PERL) $plasm $asmtype \$(CFLAG) >$srcfile\n\n"; + $ret.="\t\$(PERL) $plasm $asmtype \$(CFLAG) $srcfile\n\n"; } $ret.="$objfile: $srcfile\n"; @@ -1388,7 +1373,8 @@ sub read_options "no-md2" => \$no_md2, "no-md4" => \$no_md4, "no-md5" => \$no_md5, - "no-ripemd" => \$no_ripemd, + "no-rmd160" => \$no_ripemd, + "no-blake2" => \$no_blake2, "no-mdc2" => \$no_mdc2, "no-whirlpool" => \$no_whirlpool, "no-patents" => @@ -1403,9 +1389,9 @@ sub read_options "gaswin" => \$gaswin, "no-ssl3" => \$no_ssl3, "no-ssl3-method" => 0, + "no-weak-ssl-ciphers" => 0, "no-srp" => \$no_srp, "no-cms" => \$no_cms, - "no-jpake" => \$no_jpake, "no-ec2m" => \$no_ec2m, "no-ec_nistp_64_gcc_128" => 0, "no-err" => \$no_err, @@ -1414,9 +1400,11 @@ sub read_options "no-gost" => \$no_gost, "no-engine" => \$no_engine, "no-egd" => 0, + "no-heartbeats" => 0, "no-hw" => \$no_hw, "no-async" => \$no_async, "no-autoalginit" => \$no_autoalginit, + "no-autoerrinit" => \$no_autoerrinit, "just-ssl" => [\$no_rc2, \$no_idea, \$no_des, \$no_bf, \$no_cast, \$no_md2, \$no_mdc2, \$no_dsa, \$no_dh, @@ -1426,6 +1414,7 @@ sub read_options "gcc" => \$gcc, "debug" => \$debug, "--debug" => \$debug, + "--classic" => 0, "profile" => \$profile, "shlib" => \$shlib, "dll" => \$shlib, @@ -1444,6 +1433,7 @@ sub read_options "no-deprecated" => 0, "no-ocb" => 0, "no-crypto-mdebug" => 0, + "no-crypto-mdebug-backtrace" => 0, "fips" => \$fips, "fipscanisterbuild" => [\$fips, \$fipscanisterbuild], "fipscanisteronly" => [\$fips, \$fipscanisterbuild, \$fipscanisteronly], @@ -1470,11 +1460,11 @@ sub read_options { $zlib_opt = 2; } - elsif (/^no-static-engine/) + elsif (/^no-static-engine/ or /^enable-dynamic-engine/) { $no_static_engine = 1; } - elsif (/^enable-static-engine/) + elsif (/^no-dynamic-engine/ or /^enable-static-engine/) { $no_static_engine = 0; } @@ -1488,18 +1478,6 @@ sub read_options if (exists $valid_options{$t}) {return 1;} return 0; - } - # experimental-xxx is mostly like enable-xxx, but opensslconf.v - # will still set OPENSSL_NO_xxx unless we set OPENSSL_EXPERIMENTAL_xxx. - # (No need to fail if we don't know the algorithm -- this is for adventurous users only.) - elsif (/^experimental-/) - { - my $algo, $ALGO; - ($algo = $_) =~ s/^experimental-//; - ($ALGO = $algo) =~ tr/[a-z]/[A-Z]/; - - $xcflags="-DOPENSSL_EXPERIMENTAL_$ALGO $xcflags"; - } elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; } elsif (/^-[lL].*$/) { $l_flags.="$_ "; }