X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=util%2Fmk1mf.pl;h=25a3801123c6869a588108da9e3622fa2ed10253;hp=ba2e2a4f52bda90b2fc83039f9449ed915f29cbc;hb=ad2695b1b753caa53d9127a6e869ed3692b08fee;hpb=6bc8e6b898f5adf77d171e3977c16af9cb888685 diff --git a/util/mk1mf.pl b/util/mk1mf.pl index ba2e2a4f52..25a3801123 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -10,6 +10,12 @@ $OPTIONS=""; $ssl_version=""; $banner="\t\@echo Building OpenSSL"; +my $no_static_engine = 1; +my $engines = ""; +local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic +local $zlib_lib = ""; + + open(IN,") { $ssl_version=$1 if (/^VERSION=(.*)$/); @@ -18,29 +24,26 @@ while() { } close(IN); -die "Makefile.ssl is not the toplevel Makefile!\n" if $ssl_version eq ""; +die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq ""; $infile="MINFO"; %ops=( "VC-WIN32", "Microsoft Visual C++ [4-6] - Windows NT or 9X", + "VC-WIN64I", "Microsoft C/C++ - Win64/IA-64", + "VC-WIN64A", "Microsoft C/C++ - Win64/x64", "VC-CE", "Microsoft eMbedded Visual C++ 3.0 - Windows CE ONLY", "VC-NT", "Microsoft Visual C++ [4-6] - Windows NT ONLY", - "VC-W31-16", "Microsoft Visual C++ 1.52 - Windows 3.1 - 286", - "VC-WIN16", "Alias for VC-W31-32", - "VC-W31-32", "Microsoft Visual C++ 1.52 - Windows 3.1 - 386+", - "VC-MSDOS","Microsoft Visual C++ 1.52 - MSDOS", "Mingw32", "GNU C++ - Windows NT or 9x", "Mingw32-files", "Create files with DOS copy ...", "BC-NT", "Borland C++ 4.5 - Windows NT", - "BC-W31", "Borland C++ 4.5 - Windows 3.1 - PROBABLY NOT WORKING", - "BC-MSDOS","Borland C++ 4.5 - MSDOS", "linux-elf","Linux elf", "ultrix-mips","DEC mips ultrix", "FreeBSD","FreeBSD distribution", "OS2-EMX", "EMX GCC OS/2", - "netware-clib", "CodeWarrior for NetWare - CLib", - "netware-libc", "CodeWarrior for NetWare - LibC", + "netware-clib", "CodeWarrior for NetWare - CLib - with WinSock Sockets", + "netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets", + "netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets", "default","cc under unix", ); @@ -98,6 +101,8 @@ 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 || $no_sha); @@ -110,7 +115,8 @@ $out_def="out"; $inc_def="outinc"; $tmp_def="tmp"; -$mkdir="-mkdir"; +$perl="perl" unless defined $perl; +$mkdir="-mkdir" unless defined $mkdir; ($ssl,$crypto)=("ssl","crypto"); $ranlib="echo ranlib"; @@ -125,33 +131,12 @@ $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:''; $NT=0; push(@INC,"util/pl","pl"); -if ($platform eq "VC-MSDOS") - { - $asmbits=16; - $msdos=1; - require 'VC-16.pl'; - } -elsif ($platform eq "VC-W31-16") - { - $asmbits=16; - $msdos=1; $win16=1; - require 'VC-16.pl'; - } -elsif (($platform eq "VC-W31-32") || ($platform eq "VC-WIN16")) - { - $asmbits=32; - $msdos=1; $win16=1; - require 'VC-16.pl'; - } -elsif (($platform eq "VC-WIN32") || ($platform eq "VC-NT")) +if (($platform =~ /VC-(.+)/)) { - $NT = 1 if $platform eq "VC-NT"; + $FLAVOR=$1; + $NT = 1 if $1 eq "NT"; require 'VC-32.pl'; } -elsif ($platform eq "VC-CE") - { - require 'VC-CE.pl'; - } elsif ($platform eq "Mingw32") { require 'Mingw32.pl'; @@ -165,23 +150,6 @@ elsif ($platform eq "BC-NT") $bc=1; require 'BC-32.pl'; } -elsif ($platform eq "BC-W31") - { - $bc=1; - $msdos=1; $w16=1; - require 'BC-16.pl'; - } -elsif ($platform eq "BC-Q16") - { - $msdos=1; $w16=1; $shlib=0; $qw=1; - require 'BC-16.pl'; - } -elsif ($platform eq "BC-MSDOS") - { - $asmbits=16; - $msdos=1; - require 'BC-16.pl'; - } elsif ($platform eq "FreeBSD") { require 'unix.pl'; @@ -204,9 +172,11 @@ elsif ($platform eq "OS2-EMX") $wc=1; require 'OS2-EMX.pl'; } -elsif (($platform eq "netware-clib") || ($platform eq "netware-libc")) +elsif (($platform eq "netware-clib") || ($platform eq "netware-libc") || + ($platform eq "netware-libc-bsdsock")) { - $LIBC=1 if $platform eq "netware-libc"; + $LIBC=1 if $platform eq "netware-libc" || $platform eq "netware-libc-bsdsock"; + $BSDSOCK=1 if $platform eq "netware-libc-bsdsock"; require 'netware.pl'; } else @@ -223,8 +193,6 @@ $inc_dir=(defined($VARS{'INC'}))?$VARS{'INC'}:$inc_def; $bin_dir=$bin_dir.$o unless ((substr($bin_dir,-1,1) eq $o) || ($bin_dir eq '')); -print STDERR "XCFLAGS is $xcflags\n"; - $cflags= "$xcflags$cflags" if $xcflags ne ""; $cflags.=" -DOPENSSL_NO_IDEA" if $no_idea; @@ -245,6 +213,7 @@ $cflags.=" -DOPENSSL_NO_DES" if $no_des; $cflags.=" -DOPENSSL_NO_RSA" if $no_rsa; $cflags.=" -DOPENSSL_NO_DSA" if $no_dsa; $cflags.=" -DOPENSSL_NO_DH" if $no_dh; +$cflags.=" -DOPENSSL_NO_WHIRLPOOL" if $no_whirlpool; $cflags.=" -DOPENSSL_NO_SOCK" if $no_sock; $cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2; $cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3; @@ -255,6 +224,19 @@ $cflags.=" -DOPENSSL_NO_ECDSA" if $no_ecdsa; $cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh; $cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; $cflags.=" -DOPENSSL_NO_HW" if $no_hw; + +$cflags.= " -DZLIB" if $zlib_opt; +$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2; + +if ($no_static_engine) + { + $cflags .= " -DOPENSSL_NO_STATIC_ENGINE"; + } +else + { + $cflags .= " -DOPENSSL_NO_DYNAMIC_ENGINE"; + } + #$cflags.=" -DRSAref" if $rsaref ne ""; ## if ($unix) @@ -264,6 +246,7 @@ $cflags.=" -DOPENSSL_NO_HW" if $no_hw; $ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); + %shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL", "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO"); @@ -308,14 +291,20 @@ for (;;) if ($key eq "KRB5_INCLUDES") { $cflags .= " $val";} + if ($key eq "ZLIB_INCLUDE") + { $cflags .= " -I$val";} + + if ($key eq "LIBZLIB") + { $zlib_lib = "$val" if $val ne "";} + if ($key eq "LIBKRB5") - { $ex_libs .= " $val";} + { $ex_libs .= " $val" if $val ne "";} if ($key eq "TEST") - { $test.=&var_add($dir,$val); } + { $test.=&var_add($dir,$val, 0); } if (($key eq "PROGS") || ($key eq "E_OBJ")) - { $e_exe.=&var_add($dir,$val); } + { $e_exe.=&var_add($dir,$val, 0); } if ($key eq "LIB") { @@ -324,19 +313,46 @@ for (;;) } if ($key eq "EXHEADER") - { $exheader.=&var_add($dir,$val); } + { $exheader.=&var_add($dir,$val, 1); } if ($key eq "HEADER") - { $header.=&var_add($dir,$val); } + { $header.=&var_add($dir,$val, 1); } - if ($key eq "LIBOBJ") - { $libobj=&var_add($dir,$val); } + if ($key eq "LIBOBJ" && ($dir ne "engines" || !$no_static_engine)) + { $libobj=&var_add($dir,$val, 0); } + if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine) + { $engines.=$val } if (!($_=)) { $_="RELATIVE_DIRECTORY=FINISHED\n"; } } close(IN); +if ($shlib) + { + $extra_install= <<"EOF"; + \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}bin + \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}bin + \$(CP) \$(L_SSL) \$(INSTALLTOP)${o}lib + \$(CP) \$(L_CRYPTO) \$(INSTALLTOP)${o}lib +EOF + if ($no_static_engine) + { + $extra_install .= <<"EOF" + \$(MKDIR) \$(INSTALLTOP)${o}engines + \$(CP) \$(E_SHLIB) \$(INSTALLTOP)${o}engines +EOF + } + } +else + { + $extra_install= <<"EOF"; + \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}lib + \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}lib +EOF + $ex_libs .= " $zlib_lib" if $zlib_opt == 1; + } + $defs= <<"EOF"; # This makefile has been automatically generated from the OpenSSL distribution. # This single makefile will build the complete OpenSSL distribution and @@ -355,14 +371,6 @@ EOF $defs .= $preamble if defined $preamble; -if ($platform eq "VC-CE") - { - $defs.= <<"EOF"; -!INCLUDE <\$(WCECOMPAT)/wcedefs.mak> - -EOF - } - $defs.= <<"EOF"; INSTALLTOP=$INSTALLTOP @@ -415,6 +423,7 @@ TMP_D=$tmp_dir INC_D=$inc_dir INCO_D=$inc_dir${o}openssl +PERL=$perl CP=$cp RM=$rm RANLIB=$ranlib @@ -434,12 +443,14 @@ CRYPTO=$crypto # BIN_D - Binary output directory # TEST_D - Binary test file output directory # LIB_D - library output directory +# ENG_D - dynamic engine output directory # Note: if you change these point to different directories then uncomment out # the lines around the 'NB' comment below. # BIN_D=\$(OUT_D) TEST_D=\$(OUT_D) LIB_D=\$(OUT_D) +ENG_D=\$(OUT_D) # INCL_D - local library directory # OBJ_D - temp object file directory @@ -495,11 +506,11 @@ $banner headers: \$(HEADER) \$(EXHEADER) @ -lib: \$(LIBS_DEP) +lib: \$(LIBS_DEP) \$(E_SHLIB) exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep -install: +install: all \$(MKDIR) \$(INSTALLTOP) \$(MKDIR) \$(INSTALLTOP)${o}bin \$(MKDIR) \$(INSTALLTOP)${o}include @@ -507,8 +518,13 @@ install: \$(MKDIR) \$(INSTALLTOP)${o}lib \$(CP) \$(INCO_D)${o}*.\[ch\] \$(INSTALLTOP)${o}include${o}openssl \$(CP) \$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin - \$(CP) \$(O_SSL) \$(INSTALLTOP)${o}lib - \$(CP) \$(O_CRYPTO) \$(INSTALLTOP)${o}lib + \$(CP) apps${o}openssl.cnf \$(INSTALLTOP) +$extra_install + + +test: \$(T_EXE) + cd \$(BIN_D) + ..${o}ms${o}test clean: \$(RM) \$(TMP_D)$o*.* @@ -567,11 +583,11 @@ foreach (split(/\s+/,$exheader)){ $h{$_}=1; } foreach (split(/\s+/,$header)) { $h.=$_." " unless $h{$_}; } chop($h); $header=$h; -$defs.=&do_defs("HEADER",$header,"\$(INCL_D)",".h"); -$rules.=&do_copy_rule("\$(INCL_D)",$header,".h"); +$defs.=&do_defs("HEADER",$header,"\$(INCL_D)",""); +$rules.=&do_copy_rule("\$(INCL_D)",$header,""); -$defs.=&do_defs("EXHEADER",$exheader,"\$(INCO_D)",".h"); -$rules.=&do_copy_rule("\$(INCO_D)",$exheader,".h"); +$defs.=&do_defs("EXHEADER",$exheader,"\$(INCO_D)",""); +$rules.=&do_copy_rule("\$(INCO_D)",$exheader,""); $defs.=&do_defs("T_OBJ",$test,"\$(OBJ_D)",$obj); $rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)"); @@ -666,6 +682,16 @@ foreach (split(/\s+/,$test)) $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)"); } +$defs.=&do_defs("E_SHLIB",$engines,"\$(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,""); + } + + + $rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)"); @@ -677,7 +703,7 @@ if ($platform eq "linux-elf") { print <<"EOF"; # Generate perlasm output files %.cpp: - (cd \$(\@D)/..; PERL=perl make -f Makefile.ssl asm/\$(\@F)) + (cd \$(\@D)/..; PERL=perl make -f Makefile asm/\$(\@F)) EOF } print "###################################################################\n"; @@ -689,7 +715,7 @@ print $rules; # directories sub var_add { - local($dir,$val)=@_; + local($dir,$val,$keepext)=@_; local(@a,$_,$ret); return("") if $no_engine && $dir =~ /\/engine/; @@ -715,10 +741,11 @@ sub var_add return("") if $no_sock && $dir =~ /\/proxy/; return("") if $no_bf && $dir =~ /\/bf/; return("") if $no_cast && $dir =~ /\/cast/; + return("") if $no_whirlpool && $dir =~ /\/whrlpool/; $val =~ s/^\s*(.*)\s*$/$1/; @a=split(/\s+/,$val); - grep(s/\.[och]$//,@a); + grep(s/\.[och]$//,@a) unless $keepext; @a=grep(!/^e_.*_3d$/,@a) if $no_des; @a=grep(!/^e_.*_d$/,@a) if $no_des; @@ -819,14 +846,14 @@ sub do_defs $ret.=$t; } # hack to add version info on MSVC - if ($shlib && ($platform eq "VC-WIN32") || ($platform eq "VC-NT")) + if ($shlib && (($platform eq "VC-WIN32") || ($platform eq "VC-NT"))) { if ($var eq "CRYPTOOBJ") { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; } elsif ($var eq "SSLOBJ") { $ret.="\$(OBJ_D)\\\$(SSL).res "; } } - chop($ret); + chomp($ret); $ret.="\n\n"; return($ret); } @@ -949,6 +976,7 @@ sub read_options "no-sha1" => \$no_sha1, "no-ripemd" => \$no_ripemd, "no-mdc2" => \$no_mdc2, + "no-whirlpool" => \$no_whirlpool, "no-patents" => [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa], "no-rsa" => \$no_rsa, @@ -1003,10 +1031,19 @@ sub read_options } } } - elsif (/^enable-zlib$/) { $xcflags = "-DZLIB $xcflags"; } + elsif (/^no-comp$/) { $xcflags = "-DOPENSSL_NO_COMP $xcflags"; } + elsif (/^enable-zlib$/) { $zlib_opt = 1 if $zlib_opt == 0 } elsif (/^enable-zlib-dynamic$/) { - $xcflags = "-DZLIB_SHARED -DZLIB $xcflags"; + $zlib_opt = 2; + } + elsif (/^no-static-engine/) + { + $no_static_engine = 1; + } + elsif (/^enable-static-engine/) + { + $no_static_engine = 0; } # There are also enable-xxx options which correspond to # the no-xxx. Since the scalars are enabled by default