Ben Laurie | 6311681 | 2013-10-20 21:54:46 +0100 | [diff] [blame] | 1 | #!/usr/bin/env perl |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 2 | # A bit of an evil hack but it post processes the file ../MINFO which |
| 3 | # is generated by `make files` in the top directory. |
| 4 | # This script outputs one mega makefile that has no shell stuff or any |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 5 | # funny stuff (if the target is not "copy"). |
| 6 | # If the target is "copy", then it tries to create a makefile that can be |
| 7 | # safely used with the -j flag and that is compatible with the top-level |
| 8 | # Makefile, in the sense that it uses the same options and assembler files etc. |
| 9 | |
| 10 | use Cwd; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 11 | |
Bodo Möller | 559b52a | 1999-05-06 23:46:26 +0000 | [diff] [blame] | 12 | $INSTALLTOP="/usr/local/ssl"; |
Dr. Stephen Henson | b8bb15f | 2006-05-28 00:49:49 +0000 | [diff] [blame] | 13 | $OPENSSLDIR="/usr/local/ssl"; |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 14 | $OPTIONS=""; |
| 15 | $ssl_version=""; |
Richard Levitte | eff5f61 | 2000-03-28 18:56:04 +0000 | [diff] [blame] | 16 | $banner="\t\@echo Building OpenSSL"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 17 | |
Dr. Stephen Henson | f858d22 | 2005-11-06 20:51:49 +0000 | [diff] [blame] | 18 | my $no_static_engine = 1; |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 19 | my $engines = ""; |
Andy Polyakov | 2b1f17f | 2011-09-18 15:40:11 +0000 | [diff] [blame] | 20 | my @engines_obj = ""; |
Dr. Stephen Henson | 223c59e | 2010-07-24 17:52:43 +0000 | [diff] [blame] | 21 | my $otherlibs = ""; |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 22 | local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic |
| 23 | local $zlib_lib = ""; |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 24 | local $perl_asm = 0; # 1 to autobuild asm files from perl scripts |
| 25 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 26 | local $fips_canister_path = ""; |
| 27 | my $fips_premain_dso_exe_path = ""; |
| 28 | my $fips_premain_c_path = ""; |
| 29 | my $fips_sha1_exe_path = ""; |
| 30 | |
| 31 | local $fipscanisterbuild = 0; |
| 32 | |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 33 | my $fipscanisteronly = 0; |
| 34 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 35 | my $fipslibdir = ""; |
| 36 | my $baseaddr = ""; |
| 37 | |
| 38 | my $ex_l_libs = ""; |
| 39 | |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 40 | my $build_targets = "lib exe"; |
| 41 | my $libs_dep = "\$(O_CRYPTO) \$(O_SSL)"; |
| 42 | |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 43 | # Options to import from top level Makefile |
| 44 | |
| 45 | my %mf_import = ( |
| 46 | VERSION => \$ssl_version, |
| 47 | OPTIONS => \$OPTIONS, |
| 48 | INSTALLTOP => \$INSTALLTOP, |
| 49 | OPENSSLDIR => \$OPENSSLDIR, |
| 50 | PLATFORM => \$mf_platform, |
Ben Laurie | 5108690 | 2013-02-27 22:20:37 +0000 | [diff] [blame] | 51 | CC => \$mf_cc, |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 52 | CFLAG => \$mf_cflag, |
| 53 | DEPFLAG => \$mf_depflag, |
| 54 | CPUID_OBJ => \$mf_cpuid_asm, |
| 55 | BN_ASM => \$mf_bn_asm, |
| 56 | DES_ENC => \$mf_des_asm, |
| 57 | AES_ENC => \$mf_aes_asm, |
| 58 | BF_ENC => \$mf_bf_asm, |
| 59 | CAST_ENC => \$mf_cast_asm, |
| 60 | RC4_ENC => \$mf_rc4_asm, |
| 61 | RC5_ENC => \$mf_rc5_asm, |
| 62 | MD5_ASM_OBJ => \$mf_md5_asm, |
| 63 | SHA1_ASM_OBJ => \$mf_sha_asm, |
| 64 | RMD160_ASM_OBJ => \$mf_rmd_asm, |
| 65 | WP_ASM_OBJ => \$mf_wp_asm, |
Dr. Stephen Henson | dc527a6 | 2011-02-11 16:49:01 +0000 | [diff] [blame] | 66 | CMLL_ENC => \$mf_cm_asm, |
Dr. Stephen Henson | e161120 | 2011-04-21 16:58:51 +0000 | [diff] [blame] | 67 | MODES_ASM_OBJ => \$mf_modes_asm, |
Ben Laurie | 656829b | 2013-03-04 14:11:18 +0000 | [diff] [blame] | 68 | ENGINES_ASM_OBJ=> \$mf_engines_asm, |
Dr. Stephen Henson | cb551bf | 2011-06-22 12:59:53 +0000 | [diff] [blame] | 69 | FIPSCANISTERONLY => \$mf_fipscanisteronly, |
Ben Laurie | 71614df | 2014-10-04 22:58:13 +0100 | [diff] [blame] | 70 | FIPSCANISTERINTERNAL => \$mf_fipscanisterinternal, |
| 71 | EC_ASM => \$mf_ec_asm, |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 72 | ); |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 73 | |
Dr. Stephen Henson | f68854b | 2005-04-19 00:12:36 +0000 | [diff] [blame] | 74 | open(IN,"<Makefile") || die "unable to open Makefile!\n"; |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 75 | while(<IN>) { |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 76 | my ($mf_opt, $mf_ref); |
| 77 | while (($mf_opt, $mf_ref) = each %mf_import) { |
Ben Laurie | 7bbb8c5 | 2013-03-03 02:56:45 +0000 | [diff] [blame] | 78 | if (/^$mf_opt\s*=\s*(.*)$/ && !defined($$mfref)) { |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 79 | $$mf_ref = $1; |
| 80 | } |
| 81 | } |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 82 | } |
Ulf Möller | ce457a5 | 1999-05-13 17:24:35 +0000 | [diff] [blame] | 83 | close(IN); |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 84 | |
Dr. Stephen Henson | 71b7858b | 2009-05-06 16:55:55 +0000 | [diff] [blame] | 85 | $debug = 1 if $mf_platform =~ /^debug-/; |
| 86 | |
Dr. Stephen Henson | ce02589 | 2011-06-22 12:30:18 +0000 | [diff] [blame] | 87 | if ($mf_fipscanisterinternal eq "y") { |
Dr. Stephen Henson | e161120 | 2011-04-21 16:58:51 +0000 | [diff] [blame] | 88 | $fips = 1; |
| 89 | $fipscanisterbuild = 1; |
| 90 | $fipscanisteronly = 1; |
| 91 | } |
| 92 | |
| 93 | |
Bodo Möller | a7a90b2 | 2005-04-26 23:22:49 +0000 | [diff] [blame] | 94 | die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq ""; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 95 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 96 | $infile="MINFO"; |
| 97 | |
| 98 | %ops=( |
Dr. Stephen Henson | 06c6849 | 1999-03-03 02:01:26 +0000 | [diff] [blame] | 99 | "VC-WIN32", "Microsoft Visual C++ [4-6] - Windows NT or 9X", |
Andy Polyakov | 1875e6d | 2005-07-05 11:44:45 +0000 | [diff] [blame] | 100 | "VC-WIN64I", "Microsoft C/C++ - Win64/IA-64", |
| 101 | "VC-WIN64A", "Microsoft C/C++ - Win64/x64", |
Richard Levitte | 0bf23d9 | 2002-11-15 22:37:18 +0000 | [diff] [blame] | 102 | "VC-CE", "Microsoft eMbedded Visual C++ 3.0 - Windows CE ONLY", |
Dr. Stephen Henson | 06c6849 | 1999-03-03 02:01:26 +0000 | [diff] [blame] | 103 | "VC-NT", "Microsoft Visual C++ [4-6] - Windows NT ONLY", |
Ulf Möller | 31a674d | 1999-05-06 00:46:34 +0000 | [diff] [blame] | 104 | "Mingw32", "GNU C++ - Windows NT or 9x", |
Ulf Möller | 12d7d32 | 1999-05-07 17:51:29 +0000 | [diff] [blame] | 105 | "Mingw32-files", "Create files with DOS copy ...", |
Ulf Möller | 31a674d | 1999-05-06 00:46:34 +0000 | [diff] [blame] | 106 | "BC-NT", "Borland C++ 4.5 - Windows NT", |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 107 | "linux-elf","Linux elf", |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 108 | "ultrix-mips","DEC mips ultrix", |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 109 | "FreeBSD","FreeBSD distribution", |
Richard Levitte | dc01b6b | 2001-07-01 22:39:46 +0000 | [diff] [blame] | 110 | "OS2-EMX", "EMX GCC OS/2", |
Richard Levitte | b764ab9 | 2005-06-13 03:23:50 +0000 | [diff] [blame] | 111 | "netware-clib", "CodeWarrior for NetWare - CLib - with WinSock Sockets", |
Dr. Stephen Henson | eef0c1f | 2008-01-03 22:43:04 +0000 | [diff] [blame] | 112 | "netware-clib-bsdsock", "CodeWarrior for NetWare - CLib - with BSD Sockets", |
Richard Levitte | b764ab9 | 2005-06-13 03:23:50 +0000 | [diff] [blame] | 113 | "netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets", |
| 114 | "netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets", |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 115 | "default","cc under unix", |
Ben Laurie | d0aeeee | 2013-03-02 04:44:36 +0000 | [diff] [blame] | 116 | "auto", "auto detect from top level Makefile", |
| 117 | "copy", "copy from top level Makefile" |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 118 | ); |
| 119 | |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 120 | $platform=""; |
Dr. Stephen Henson | 6bc8e6b | 2005-04-24 02:21:02 +0000 | [diff] [blame] | 121 | my $xcflags=""; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 122 | foreach (@ARGV) |
| 123 | { |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 124 | if (!&read_options && !defined($ops{$_})) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 125 | { |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 126 | print STDERR "unknown option - $_\n"; |
Bodo Möller | 748365e | 1999-05-31 21:58:18 +0000 | [diff] [blame] | 127 | print STDERR "usage: perl mk1mf.pl [options] [system]\n"; |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 128 | print STDERR "\nwhere [system] can be one of the following\n"; |
| 129 | foreach $i (sort keys %ops) |
| 130 | { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; } |
| 131 | print STDERR <<"EOF"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 132 | and [options] can be one of |
Richard Levitte | 3009458 | 2000-08-14 14:05:53 +0000 | [diff] [blame] | 133 | no-md2 no-md4 no-md5 no-sha no-mdc2 - Skip this digest |
| 134 | no-ripemd |
Richard Levitte | 77dd9c1 | 2001-04-08 04:35:58 +0000 | [diff] [blame] | 135 | no-rc2 no-rc4 no-rc5 no-idea no-des - Skip this symetric cipher |
Bodo Möller | 96afc1c | 2007-04-23 23:48:59 +0000 | [diff] [blame] | 136 | no-bf no-cast no-aes no-camellia no-seed |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 137 | no-rsa no-dsa no-dh - Skip this public key cipher |
| 138 | no-ssl2 no-ssl3 - Skip this version of SSL |
| 139 | just-ssl - remove all non-ssl keys/digest |
| 140 | no-asm - No x86 asm |
Richard Levitte | 97f5644 | 2000-12-31 01:43:11 +0000 | [diff] [blame] | 141 | no-krb5 - No KRB5 |
Ben Laurie | edc032b | 2011-03-12 17:01:19 +0000 | [diff] [blame] | 142 | no-srp - No SRP |
Richard Levitte | 01682a8 | 2002-04-20 10:23:56 +0000 | [diff] [blame] | 143 | no-ec - No EC |
| 144 | no-ecdsa - No ECDSA |
Richard Levitte | 0b13e9f | 2003-01-30 17:39:26 +0000 | [diff] [blame] | 145 | no-ecdh - No ECDH |
| 146 | no-engine - No engine |
Richard Levitte | 5cd48ab | 2003-01-30 20:03:45 +0000 | [diff] [blame] | 147 | no-hw - No hw |
Dr. Stephen Henson | bbdb543 | 1999-07-12 18:12:43 +0000 | [diff] [blame] | 148 | nasm - Use NASM for x86 asm |
Richard Levitte | 4d8743f | 2003-11-28 13:10:58 +0000 | [diff] [blame] | 149 | nw-nasm - Use NASM x86 asm for NetWare |
Dr. Stephen Henson | eef0c1f | 2008-01-03 22:43:04 +0000 | [diff] [blame] | 150 | nw-mwasm - Use Metrowerks x86 asm for NetWare |
Ulf Möller | 2da0c11 | 2000-02-28 19:16:41 +0000 | [diff] [blame] | 151 | gaswin - Use GNU as with Mingw32 |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 152 | no-socks - No socket code |
| 153 | no-err - No error strings |
| 154 | dll/shlib - Build shared libraries (MS) |
| 155 | debug - Debug build |
Ulf Möller | d55a3cf | 2000-07-21 19:00:38 +0000 | [diff] [blame] | 156 | profile - Profiling build |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 157 | gcc - Use Gcc (unix) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 158 | |
| 159 | Values that can be set |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 160 | TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 161 | |
| 162 | -L<ex_lib_path> -l<ex_lib> - extra library flags (unix) |
| 163 | -<ex_cc_flags> - extra 'cc' flags, |
| 164 | added (MS), or replace (unix) |
| 165 | EOF |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 166 | exit(1); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 167 | } |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 168 | $platform=$_; |
| 169 | } |
Richard Levitte | 7f2113a | 2000-12-31 01:54:18 +0000 | [diff] [blame] | 170 | foreach (grep(!/^$/, split(/ /, $OPTIONS))) |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 171 | { |
| 172 | print STDERR "unknown option - $_\n" if !&read_options; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 173 | } |
| 174 | |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 175 | $no_static_engine = 0 if (!$shlib); |
| 176 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 177 | $no_mdc2=1 if ($no_des); |
| 178 | |
Ulf Möller | 8cf6522 | 1999-05-08 10:42:06 +0000 | [diff] [blame] | 179 | $no_ssl3=1 if ($no_md5 || $no_sha); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 180 | $no_ssl3=1 if ($no_rsa && $no_dh); |
| 181 | |
Richard Levitte | 6f9079f | 2002-01-02 16:55:35 +0000 | [diff] [blame] | 182 | $no_ssl2=1 if ($no_md5); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 183 | $no_ssl2=1 if ($no_rsa); |
| 184 | |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 185 | $out_def="out"; |
| 186 | $inc_def="outinc"; |
| 187 | $tmp_def="tmp"; |
| 188 | |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 189 | $perl="perl" unless defined $perl; |
| 190 | $mkdir="-mkdir" unless defined $mkdir; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 191 | |
| 192 | ($ssl,$crypto)=("ssl","crypto"); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 193 | $ranlib="echo ranlib"; |
| 194 | |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 195 | $cc=(defined($VARS{'CC'}))?$VARS{'CC'}:'cc'; |
Dr. Stephen Henson | f3a3903 | 2014-02-15 19:48:05 +0000 | [diff] [blame] | 196 | $src_dir=(defined($VARS{'SRC'}))?$VARS{'SRC'}: $platform eq 'copy' ? getcwd() : '.'; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 197 | $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:''; |
| 198 | |
| 199 | # $bin_dir.=$o causes a core dump on my sparc :-( |
| 200 | |
Dr. Stephen Henson | 6bc8e6b | 2005-04-24 02:21:02 +0000 | [diff] [blame] | 201 | |
Dr. Stephen Henson | 06c6849 | 1999-03-03 02:01:26 +0000 | [diff] [blame] | 202 | $NT=0; |
| 203 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 204 | push(@INC,"util/pl","pl"); |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 205 | |
Ben Laurie | d0aeeee | 2013-03-02 04:44:36 +0000 | [diff] [blame] | 206 | if ($platform eq "auto" || $platform eq 'copy') { |
Ben Laurie | 3c76bcd | 2013-02-27 22:07:26 +0000 | [diff] [blame] | 207 | $orig_platform = $platform; |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 208 | $platform = $mf_platform; |
| 209 | print STDERR "Imported platform $mf_platform\n"; |
| 210 | } |
| 211 | |
Andy Polyakov | 1875e6d | 2005-07-05 11:44:45 +0000 | [diff] [blame] | 212 | if (($platform =~ /VC-(.+)/)) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 213 | { |
Andy Polyakov | 1875e6d | 2005-07-05 11:44:45 +0000 | [diff] [blame] | 214 | $FLAVOR=$1; |
| 215 | $NT = 1 if $1 eq "NT"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 216 | require 'VC-32.pl'; |
| 217 | } |
Ulf Möller | 31a674d | 1999-05-06 00:46:34 +0000 | [diff] [blame] | 218 | elsif ($platform eq "Mingw32") |
| 219 | { |
| 220 | require 'Mingw32.pl'; |
| 221 | } |
Ulf Möller | 12d7d32 | 1999-05-07 17:51:29 +0000 | [diff] [blame] | 222 | elsif ($platform eq "Mingw32-files") |
| 223 | { |
| 224 | require 'Mingw32f.pl'; |
| 225 | } |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 226 | elsif ($platform eq "BC-NT") |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 227 | { |
| 228 | $bc=1; |
| 229 | require 'BC-32.pl'; |
| 230 | } |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 231 | elsif ($platform eq "FreeBSD") |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 232 | { |
| 233 | require 'unix.pl'; |
| 234 | $cflags='-DTERMIO -D_ANSI_SOURCE -O2 -fomit-frame-pointer'; |
| 235 | } |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 236 | elsif ($platform eq "linux-elf") |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 237 | { |
| 238 | require "unix.pl"; |
| 239 | require "linux.pl"; |
| 240 | $unix=1; |
| 241 | } |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 242 | elsif ($platform eq "ultrix-mips") |
| 243 | { |
| 244 | require "unix.pl"; |
| 245 | require "ultrix.pl"; |
| 246 | $unix=1; |
| 247 | } |
Richard Levitte | dc01b6b | 2001-07-01 22:39:46 +0000 | [diff] [blame] | 248 | elsif ($platform eq "OS2-EMX") |
| 249 | { |
| 250 | $wc=1; |
| 251 | require 'OS2-EMX.pl'; |
| 252 | } |
Richard Levitte | b764ab9 | 2005-06-13 03:23:50 +0000 | [diff] [blame] | 253 | elsif (($platform eq "netware-clib") || ($platform eq "netware-libc") || |
Dr. Stephen Henson | eef0c1f | 2008-01-03 22:43:04 +0000 | [diff] [blame] | 254 | ($platform eq "netware-clib-bsdsock") || ($platform eq "netware-libc-bsdsock")) |
Richard Levitte | 4d8743f | 2003-11-28 13:10:58 +0000 | [diff] [blame] | 255 | { |
Richard Levitte | b764ab9 | 2005-06-13 03:23:50 +0000 | [diff] [blame] | 256 | $LIBC=1 if $platform eq "netware-libc" || $platform eq "netware-libc-bsdsock"; |
Dr. Stephen Henson | eef0c1f | 2008-01-03 22:43:04 +0000 | [diff] [blame] | 257 | $BSDSOCK=1 if ($platform eq "netware-libc-bsdsock") || ($platform eq "netware-clib-bsdsock"); |
Richard Levitte | 4d8743f | 2003-11-28 13:10:58 +0000 | [diff] [blame] | 258 | require 'netware.pl'; |
| 259 | } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 260 | else |
| 261 | { |
| 262 | require "unix.pl"; |
| 263 | |
| 264 | $unix=1; |
| 265 | $cflags.=' -DTERMIO'; |
| 266 | } |
| 267 | |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 268 | $out_dir=(defined($VARS{'OUT'}))?$VARS{'OUT'}:$out_def.($debug?".dbg":""); |
| 269 | $tmp_dir=(defined($VARS{'TMP'}))?$VARS{'TMP'}:$tmp_def.($debug?".dbg":""); |
| 270 | $inc_dir=(defined($VARS{'INC'}))?$VARS{'INC'}:$inc_def; |
| 271 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 272 | $bin_dir=$bin_dir.$o unless ((substr($bin_dir,-1,1) eq $o) || ($bin_dir eq '')); |
| 273 | |
Dr. Stephen Henson | 6bc8e6b | 2005-04-24 02:21:02 +0000 | [diff] [blame] | 274 | $cflags= "$xcflags$cflags" if $xcflags ne ""; |
| 275 | |
Richard Levitte | cf1b7d9 | 2001-02-19 16:06:34 +0000 | [diff] [blame] | 276 | $cflags.=" -DOPENSSL_NO_IDEA" if $no_idea; |
Richard Levitte | 77dd9c1 | 2001-04-08 04:35:58 +0000 | [diff] [blame] | 277 | $cflags.=" -DOPENSSL_NO_AES" if $no_aes; |
Bodo Möller | f3dea9a | 2006-06-09 15:44:59 +0000 | [diff] [blame] | 278 | $cflags.=" -DOPENSSL_NO_CAMELLIA" if $no_camellia; |
Bodo Möller | 96afc1c | 2007-04-23 23:48:59 +0000 | [diff] [blame] | 279 | $cflags.=" -DOPENSSL_NO_SEED" if $no_seed; |
Richard Levitte | cf1b7d9 | 2001-02-19 16:06:34 +0000 | [diff] [blame] | 280 | $cflags.=" -DOPENSSL_NO_RC2" if $no_rc2; |
| 281 | $cflags.=" -DOPENSSL_NO_RC4" if $no_rc4; |
| 282 | $cflags.=" -DOPENSSL_NO_RC5" if $no_rc5; |
| 283 | $cflags.=" -DOPENSSL_NO_MD2" if $no_md2; |
| 284 | $cflags.=" -DOPENSSL_NO_MD4" if $no_md4; |
| 285 | $cflags.=" -DOPENSSL_NO_MD5" if $no_md5; |
| 286 | $cflags.=" -DOPENSSL_NO_SHA" if $no_sha; |
| 287 | $cflags.=" -DOPENSSL_NO_SHA1" if $no_sha1; |
Richard Levitte | 7e38616 | 2003-02-14 05:20:25 +0000 | [diff] [blame] | 288 | $cflags.=" -DOPENSSL_NO_RIPEMD" if $no_ripemd; |
Richard Levitte | cf1b7d9 | 2001-02-19 16:06:34 +0000 | [diff] [blame] | 289 | $cflags.=" -DOPENSSL_NO_MDC2" if $no_mdc2; |
| 290 | $cflags.=" -DOPENSSL_NO_BF" if $no_bf; |
| 291 | $cflags.=" -DOPENSSL_NO_CAST" if $no_cast; |
| 292 | $cflags.=" -DOPENSSL_NO_DES" if $no_des; |
| 293 | $cflags.=" -DOPENSSL_NO_RSA" if $no_rsa; |
| 294 | $cflags.=" -DOPENSSL_NO_DSA" if $no_dsa; |
| 295 | $cflags.=" -DOPENSSL_NO_DH" if $no_dh; |
Dr. Stephen Henson | ec645d9 | 2005-12-05 00:53:10 +0000 | [diff] [blame] | 296 | $cflags.=" -DOPENSSL_NO_WHIRLPOOL" if $no_whirlpool; |
Richard Levitte | cf1b7d9 | 2001-02-19 16:06:34 +0000 | [diff] [blame] | 297 | $cflags.=" -DOPENSSL_NO_SOCK" if $no_sock; |
| 298 | $cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2; |
| 299 | $cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3; |
Dr. Stephen Henson | 525de5d | 2007-08-12 23:59:05 +0000 | [diff] [blame] | 300 | $cflags.=" -DOPENSSL_NO_TLSEXT" if $no_tlsext; |
Ben Laurie | edc032b | 2011-03-12 17:01:19 +0000 | [diff] [blame] | 301 | $cflags.=" -DOPENSSL_NO_SRP" if $no_srp; |
Dr. Stephen Henson | 88db4e6 | 2008-04-03 23:29:15 +0000 | [diff] [blame] | 302 | $cflags.=" -DOPENSSL_NO_CMS" if $no_cms; |
Richard Levitte | cf1b7d9 | 2001-02-19 16:06:34 +0000 | [diff] [blame] | 303 | $cflags.=" -DOPENSSL_NO_ERR" if $no_err; |
Richard Levitte | 01682a8 | 2002-04-20 10:23:56 +0000 | [diff] [blame] | 304 | $cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5; |
| 305 | $cflags.=" -DOPENSSL_NO_EC" if $no_ec; |
| 306 | $cflags.=" -DOPENSSL_NO_ECDSA" if $no_ecdsa; |
Richard Levitte | 0b13e9f | 2003-01-30 17:39:26 +0000 | [diff] [blame] | 307 | $cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh; |
Dr. Stephen Henson | 4ed7b78 | 2010-09-02 17:45:23 +0000 | [diff] [blame] | 308 | $cflags.=" -DOPENSSL_NO_GOST" if $no_gost; |
Richard Levitte | 0b13e9f | 2003-01-30 17:39:26 +0000 | [diff] [blame] | 309 | $cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; |
Richard Levitte | 5cd48ab | 2003-01-30 20:03:45 +0000 | [diff] [blame] | 310 | $cflags.=" -DOPENSSL_NO_HW" if $no_hw; |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 311 | $cflags.=" -DOPENSSL_FIPS" if $fips; |
Dr. Stephen Henson | 79bd20f | 2008-11-24 17:27:08 +0000 | [diff] [blame] | 312 | $cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake; |
Dr. Stephen Henson | 36246be | 2011-02-12 17:38:40 +0000 | [diff] [blame] | 313 | $cflags.=" -DOPENSSL_NO_EC2M" if $no_ec2m; |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 314 | $cflags.= " -DZLIB" if $zlib_opt; |
| 315 | $cflags.= " -DZLIB_SHARED" if $zlib_opt == 2; |
| 316 | |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 317 | if ($no_static_engine) |
| 318 | { |
| 319 | $cflags .= " -DOPENSSL_NO_STATIC_ENGINE"; |
| 320 | } |
| 321 | else |
| 322 | { |
| 323 | $cflags .= " -DOPENSSL_NO_DYNAMIC_ENGINE"; |
| 324 | } |
| 325 | |
Richard Levitte | ccb9643 | 2000-11-08 17:51:37 +0000 | [diff] [blame] | 326 | #$cflags.=" -DRSAref" if $rsaref ne ""; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 327 | |
Ulf Möller | d55a3cf | 2000-07-21 19:00:38 +0000 | [diff] [blame] | 328 | ## if ($unix) |
| 329 | ## { $cflags="$c_flags" if ($c_flags ne ""); } |
| 330 | ##else |
| 331 | { $cflags="$c_flags$cflags" if ($c_flags ne ""); } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 332 | |
Ben Laurie | d0aeeee | 2013-03-02 04:44:36 +0000 | [diff] [blame] | 333 | if ($orig_platform eq 'copy') { |
| 334 | $cflags = $mf_cflag; |
| 335 | $cc = $mf_cc; |
| 336 | } |
Ben Laurie | 3c76bcd | 2013-02-27 22:07:26 +0000 | [diff] [blame] | 337 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 338 | $ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); |
| 339 | |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 340 | |
Richard Levitte | f09628e | 2000-12-31 00:06:47 +0000 | [diff] [blame] | 341 | %shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL", |
| 342 | "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO"); |
| 343 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 344 | if ($msdos) |
| 345 | { |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 346 | $banner ="\t\@echo Make sure you have run 'perl Configure $platform' in the\n"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 347 | $banner.="\t\@echo top level directory, if you don't have perl, you will\n"; |
| 348 | $banner.="\t\@echo need to probably edit crypto/bn/bn.h, check the\n"; |
| 349 | $banner.="\t\@echo documentation for details.\n"; |
| 350 | } |
| 351 | |
| 352 | # have to do this to allow $(CC) under unix |
| 353 | $link="$bin_dir$link" if ($link !~ /^\$/); |
| 354 | |
| 355 | $INSTALLTOP =~ s|/|$o|g; |
Dr. Stephen Henson | b8bb15f | 2006-05-28 00:49:49 +0000 | [diff] [blame] | 356 | $OPENSSLDIR =~ s|/|$o|g; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 357 | |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 358 | ############################################# |
| 359 | # We parse in input file and 'store' info for later printing. |
| 360 | open(IN,"<$infile") || die "unable to open $infile:$!\n"; |
| 361 | $_=<IN>; |
| 362 | for (;;) |
| 363 | { |
Andy Polyakov | 7bb98ee | 2012-07-15 13:40:04 +0000 | [diff] [blame] | 364 | s/\s*$//; # was chop, didn't work in mixture of perls for Windows... |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 365 | |
| 366 | ($key,$val)=/^([^=]+)=(.*)/; |
| 367 | if ($key eq "RELATIVE_DIRECTORY") |
| 368 | { |
| 369 | if ($lib ne "") |
| 370 | { |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 371 | if ($fips && $dir =~ /^fips/) |
| 372 | { |
| 373 | $uc = "FIPS"; |
| 374 | } |
| 375 | else |
| 376 | { |
| 377 | $uc=$lib; |
| 378 | $uc =~ s/^lib(.*)\.a/$1/; |
| 379 | $uc =~ tr/a-z/A-Z/; |
| 380 | } |
| 381 | if (($uc ne "FIPS") || $fipscanisterbuild) |
| 382 | { |
| 383 | $lib_nam{$uc}=$uc; |
| 384 | $lib_obj{$uc}.=$libobj." "; |
| 385 | } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 386 | } |
| 387 | last if ($val eq "FINISHED"); |
| 388 | $lib=""; |
| 389 | $libobj=""; |
| 390 | $dir=$val; |
| 391 | } |
| 392 | |
| 393 | if ($key eq "KRB5_INCLUDES") |
| 394 | { $cflags .= " $val";} |
| 395 | |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 396 | if ($key eq "ZLIB_INCLUDE") |
Dr. Stephen Henson | 1291dfd | 2005-12-06 13:36:59 +0000 | [diff] [blame] | 397 | { $cflags .= " $val" if $val ne "";} |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 398 | |
| 399 | if ($key eq "LIBZLIB") |
| 400 | { $zlib_lib = "$val" if $val ne "";} |
| 401 | |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 402 | if ($key eq "LIBKRB5") |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 403 | { $ex_libs .= " $val" if $val ne "";} |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 404 | |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 405 | if ($key eq "TEST" && (!$fipscanisteronly || $dir =~ /^fips/ )) |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 406 | { $test.=&var_add($dir,$val, 0); } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 407 | |
| 408 | if (($key eq "PROGS") || ($key eq "E_OBJ")) |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 409 | { $e_exe.=&var_add($dir,$val, 0); } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 410 | |
| 411 | if ($key eq "LIB") |
| 412 | { |
| 413 | $lib=$val; |
| 414 | $lib =~ s/^.*\/([^\/]+)$/$1/; |
| 415 | } |
Dr. Stephen Henson | 223c59e | 2010-07-24 17:52:43 +0000 | [diff] [blame] | 416 | if ($key eq "LIBNAME" && $no_static_engine) |
| 417 | { |
| 418 | $lib=$val; |
| 419 | $lib =~ s/^.*\/([^\/]+)$/$1/; |
| 420 | $otherlibs .= " $lib"; |
| 421 | } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 422 | |
| 423 | if ($key eq "EXHEADER") |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 424 | { $exheader.=&var_add($dir,$val, 1); } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 425 | |
| 426 | if ($key eq "HEADER") |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 427 | { $header.=&var_add($dir,$val, 1); } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 428 | |
Andy Polyakov | 2b1f17f | 2011-09-18 15:40:11 +0000 | [diff] [blame] | 429 | if ($key eq "LIBOBJ") |
| 430 | { |
| 431 | if ($dir ne "engines" || !$no_static_engine) |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 432 | { $libobj=&var_add($dir,$val, 0); } |
Andy Polyakov | 2b1f17f | 2011-09-18 15:40:11 +0000 | [diff] [blame] | 433 | else |
| 434 | { push(@engines_obj,split(/\s+/,&var_add($dir,$val,0))); } |
| 435 | } |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 436 | if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine) |
| 437 | { $engines.=$val } |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 438 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 439 | if ($key eq "FIPS_EX_OBJ") |
| 440 | { |
| 441 | $fips_ex_obj=&var_add("crypto",$val,0); |
| 442 | } |
| 443 | |
| 444 | if ($key eq "FIPSLIBDIR") |
| 445 | { |
| 446 | $fipslibdir=$val; |
| 447 | $fipslibdir =~ s/\/$//; |
| 448 | $fipslibdir =~ s/\//$o/g; |
| 449 | } |
| 450 | |
| 451 | if ($key eq "BASEADDR") |
| 452 | { $baseaddr=$val;} |
| 453 | |
Dr. Stephen Henson | 2dc08d5 | 2005-04-20 16:22:58 +0000 | [diff] [blame] | 454 | if (!($_=<IN>)) |
| 455 | { $_="RELATIVE_DIRECTORY=FINISHED\n"; } |
| 456 | } |
| 457 | close(IN); |
| 458 | |
Dr. Stephen Henson | a50f718 | 2014-06-12 10:48:24 +0100 | [diff] [blame] | 459 | if ($orig_platform eq 'copy') |
| 460 | { |
| 461 | # Remove opensslconf.h so it doesn't get updated if we configure a |
| 462 | # different branch. |
| 463 | $exheader =~ s/[^ ]+\/opensslconf.h//; |
| 464 | $header =~ s/[^ ]+\/opensslconf.h//; |
| 465 | } |
Ben Laurie | 894172f | 2014-05-24 15:42:18 +0100 | [diff] [blame] | 466 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 467 | if ($fips) |
| 468 | { |
| 469 | |
| 470 | foreach (split " ", $fips_ex_obj) |
| 471 | { |
| 472 | $fips_exclude_obj{$1} = 1 if (/\/([^\/]*)$/); |
| 473 | } |
| 474 | foreach (split " ", |
Dr. Stephen Henson | dc527a6 | 2011-02-11 16:49:01 +0000 | [diff] [blame] | 475 | "$mf_cpuid_asm $mf_aes_asm $mf_sha_asm $mf_bn_asm " . |
| 476 | "$mf_des_asm $mf_modes_asm") |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 477 | { |
| 478 | s/\.o//; |
| 479 | $fips_exclude_obj{$_} = 1; |
| 480 | } |
| 481 | my @ltmp = split " ", $lib_obj{"CRYPTO"}; |
| 482 | |
| 483 | |
| 484 | $lib_obj{"CRYPTO"} = ""; |
| 485 | |
| 486 | foreach(@ltmp) |
| 487 | { |
| 488 | if (/\/([^\/]*)$/ && exists $fips_exclude_obj{$1}) |
| 489 | { |
| 490 | if ($fipscanisterbuild) |
| 491 | { |
| 492 | $lib_obj{"FIPS"} .= "$_ "; |
| 493 | } |
| 494 | } |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 495 | elsif (!$fipscanisteronly) |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 496 | { |
| 497 | $lib_obj{"CRYPTO"} .= "$_ "; |
| 498 | } |
| 499 | } |
| 500 | |
| 501 | } |
| 502 | |
| 503 | if ($fipscanisterbuild) |
| 504 | { |
| 505 | $fips_canister_path = "\$(LIB_D)${o}fipscanister.lib" if $fips_canister_path eq ""; |
| 506 | $fips_premain_c_path = "\$(LIB_D)${o}fips_premain.c"; |
| 507 | } |
| 508 | else |
| 509 | { |
| 510 | if ($fips_canister_path eq "") |
| 511 | { |
| 512 | $fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.lib"; |
| 513 | } |
| 514 | |
| 515 | if ($fips_premain_c_path eq "") |
| 516 | { |
| 517 | $fips_premain_c_path = "\$(FIPSLIB_D)${o}fips_premain.c"; |
| 518 | } |
| 519 | } |
| 520 | |
| 521 | if ($fips) |
| 522 | { |
| 523 | if ($fips_sha1_exe_path eq "") |
| 524 | { |
| 525 | $fips_sha1_exe_path = |
| 526 | "\$(BIN_D)${o}fips_standalone_sha1$exep"; |
| 527 | } |
| 528 | } |
| 529 | else |
| 530 | { |
| 531 | $fips_sha1_exe_path = ""; |
| 532 | } |
| 533 | |
| 534 | if ($fips_premain_dso_exe_path eq "") |
| 535 | { |
| 536 | $fips_premain_dso_exe_path = "\$(BIN_D)${o}fips_premain_dso$exep"; |
| 537 | } |
| 538 | |
| 539 | # $ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips); |
| 540 | |
| 541 | if ($fips) |
| 542 | { |
| 543 | if (!$shlib) |
| 544 | { |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 545 | $build_targets .= " \$(LIB_D)$o$crypto_compat \$(PREMAIN_DSO_EXE)"; |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 546 | $ex_l_libs .= " \$(O_FIPSCANISTER)"; |
| 547 | $ex_libs_dep .= " \$(O_FIPSCANISTER)" if $fipscanisterbuild; |
| 548 | } |
| 549 | if ($fipscanisterbuild) |
| 550 | { |
| 551 | $fipslibdir = "\$(LIB_D)"; |
| 552 | } |
| 553 | else |
| 554 | { |
| 555 | if ($fipslibdir eq "") |
| 556 | { |
| 557 | open (IN, "util/fipslib_path.txt") || fipslib_error(); |
| 558 | $fipslibdir = <IN>; |
| 559 | chomp $fipslibdir; |
| 560 | close IN; |
| 561 | } |
| 562 | fips_check_files($fipslibdir, |
| 563 | "fipscanister.lib", "fipscanister.lib.sha1", |
| 564 | "fips_premain.c", "fips_premain.c.sha1"); |
| 565 | } |
| 566 | } |
| 567 | |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 568 | if ($fipscanisteronly) |
| 569 | { |
| 570 | $build_targets = "\$(O_FIPSCANISTER) \$(T_EXE)"; |
| 571 | $libs_dep = ""; |
| 572 | } |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 573 | |
Dr. Stephen Henson | 0b41fcc | 2011-06-18 17:18:25 +0000 | [diff] [blame] | 574 | $cp2 = $cp unless defined $cp2; |
| 575 | |
Dr. Stephen Henson | c3de647 | 2011-06-15 21:04:09 +0000 | [diff] [blame] | 576 | $extra_install= <<"EOF"; |
| 577 | \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\" |
| 578 | \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin\" |
| 579 | \$(MKDIR) \"\$(OPENSSLDIR)\" |
| 580 | \$(CP) apps${o}openssl.cnf \"\$(OPENSSLDIR)\" |
| 581 | EOF |
| 582 | |
| 583 | if ($fipscanisteronly) |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 584 | { |
Dr. Stephen Henson | c3de647 | 2011-06-15 21:04:09 +0000 | [diff] [blame] | 585 | $extra_install = <<"EOF"; |
| 586 | \$(CP) \"\$(O_FIPSCANISTER)\" \"\$(INSTALLTOP)${o}lib\" |
| 587 | \$(CP) \"\$(O_FIPSCANISTER).sha1\" \"\$(INSTALLTOP)${o}lib\" |
Dr. Stephen Henson | 0b41fcc | 2011-06-18 17:18:25 +0000 | [diff] [blame] | 588 | \$(CP2) \"fips${o}fips_premain.c\" \"\$(INSTALLTOP)${o}lib\" |
Dr. Stephen Henson | c3de647 | 2011-06-15 21:04:09 +0000 | [diff] [blame] | 589 | \$(CP) \"fips${o}fips_premain.c.sha1\" \"\$(INSTALLTOP)${o}lib\" |
| 590 | \$(CP) \"\$(INCO_D)${o}fips.h\" \"\$(INSTALLTOP)${o}include${o}openssl\" |
| 591 | \$(CP) \"\$(INCO_D)${o}fips_rand.h\" \"\$(INSTALLTOP)${o}include${o}openssl\" |
| 592 | \$(CP) "\$(BIN_D)${o}fips_standalone_sha1$exep" \"\$(INSTALLTOP)${o}bin\" |
| 593 | \$(CP) \"util${o}fipslink.pl\" \"\$(INSTALLTOP)${o}bin\" |
| 594 | EOF |
| 595 | } |
| 596 | elsif ($shlib) |
| 597 | { |
| 598 | $extra_install .= <<"EOF"; |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 599 | \$(CP) \"\$(O_SSL)\" \"\$(INSTALLTOP)${o}bin\" |
| 600 | \$(CP) \"\$(O_CRYPTO)\" \"\$(INSTALLTOP)${o}bin\" |
| 601 | \$(CP) \"\$(L_SSL)\" \"\$(INSTALLTOP)${o}lib\" |
| 602 | \$(CP) \"\$(L_CRYPTO)\" \"\$(INSTALLTOP)${o}lib\" |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 603 | EOF |
| 604 | if ($no_static_engine) |
| 605 | { |
| 606 | $extra_install .= <<"EOF" |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 607 | \$(MKDIR) \"\$(INSTALLTOP)${o}lib${o}engines\" |
| 608 | \$(CP) \"\$(E_SHLIB)\" \"\$(INSTALLTOP)${o}lib${o}engines\" |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 609 | EOF |
| 610 | } |
| 611 | } |
| 612 | else |
| 613 | { |
Dr. Stephen Henson | c3de647 | 2011-06-15 21:04:09 +0000 | [diff] [blame] | 614 | $extra_install .= <<"EOF"; |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 615 | \$(CP) \"\$(O_SSL)\" \"\$(INSTALLTOP)${o}lib\" |
| 616 | \$(CP) \"\$(O_CRYPTO)\" \"\$(INSTALLTOP)${o}lib\" |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 617 | EOF |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 618 | $ex_libs .= " $zlib_lib" if $zlib_opt == 1; |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 619 | } |
| 620 | |
Dr. Stephen Henson | 70857a4 | 2014-07-01 14:11:28 +0100 | [diff] [blame] | 621 | my $asm_def = $orig_platform eq 'copy' ? "" : "ASM=$bin_dir$asm"; |
| 622 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 623 | $defs= <<"EOF"; |
Ben Laurie | 3675fb8 | 2013-04-01 18:22:58 +0100 | [diff] [blame] | 624 | # N.B. You MUST use -j on FreeBSD. |
Dr. Stephen Henson | e527ba0 | 1999-02-22 01:26:40 +0000 | [diff] [blame] | 625 | # This makefile has been automatically generated from the OpenSSL distribution. |
| 626 | # This single makefile will build the complete OpenSSL distribution and |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 627 | # by default leave the 'intertesting' output files in .${o}out and the stuff |
| 628 | # that needs deleting in .${o}tmp. |
| 629 | # The file was generated by running 'make makefile.one', which |
| 630 | # does a 'make files', which writes all the environment variables from all |
| 631 | # the makefiles to the file call MINFO. This file is used by |
| 632 | # util${o}mk1mf.pl to generate makefile.one. |
| 633 | # The 'makefile per directory' system suites me when developing this |
| 634 | # library and also so I can 'distribute' indervidual library sections. |
| 635 | # The one monster makefile better suits building in non-unix |
| 636 | # environments. |
| 637 | |
Richard Levitte | 7a1f92f | 2002-12-03 14:20:44 +0000 | [diff] [blame] | 638 | EOF |
| 639 | |
Richard Levitte | 0b352c5 | 2003-11-28 14:51:30 +0000 | [diff] [blame] | 640 | $defs .= $preamble if defined $preamble; |
| 641 | |
Richard Levitte | 7a1f92f | 2002-12-03 14:20:44 +0000 | [diff] [blame] | 642 | $defs.= <<"EOF"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 643 | INSTALLTOP=$INSTALLTOP |
Dr. Stephen Henson | b8bb15f | 2006-05-28 00:49:49 +0000 | [diff] [blame] | 644 | OPENSSLDIR=$OPENSSLDIR |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 645 | |
| 646 | # Set your compiler options |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 647 | PLATFORM=$platform |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 648 | CC=$bin_dir${cc} |
| 649 | CFLAG=$cflags |
| 650 | APP_CFLAG=$app_cflag |
| 651 | LIB_CFLAG=$lib_cflag |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 652 | SHLIB_CFLAG=$shl_cflag |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 653 | APP_EX_OBJ=$app_ex_obj |
| 654 | SHLIB_EX_OBJ=$shlib_ex_obj |
| 655 | # add extra libraries to this define, for solaris -lsocket -lnsl would |
| 656 | # be added |
| 657 | EX_LIBS=$ex_libs |
| 658 | |
Dr. Stephen Henson | e527ba0 | 1999-02-22 01:26:40 +0000 | [diff] [blame] | 659 | # The OpenSSL directory |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 660 | SRC_D=$src_dir |
| 661 | |
| 662 | LINK=$link |
| 663 | LFLAGS=$lflags |
Dr. Stephen Henson | fc6a6a1 | 2002-10-04 21:22:47 +0000 | [diff] [blame] | 664 | RSC=$rsc |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 665 | FIPSLINK=\$(PERL) util${o}fipslink.pl |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 666 | |
Ben Laurie | 7067cbc | 2013-02-27 04:16:23 +0000 | [diff] [blame] | 667 | # The output directory for everything interesting |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 668 | OUT_D=$out_dir |
| 669 | # The output directory for all the temporary muck |
| 670 | TMP_D=$tmp_dir |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 671 | # The output directory for the header files |
| 672 | INC_D=$inc_dir |
Bodo Möller | ec57782 | 1999-04-23 22:13:45 +0000 | [diff] [blame] | 673 | INCO_D=$inc_dir${o}openssl |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 674 | |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 675 | PERL=$perl |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 676 | CP=$cp |
Dr. Stephen Henson | 0b41fcc | 2011-06-18 17:18:25 +0000 | [diff] [blame] | 677 | CP2=$cp2 |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 678 | RM=$rm |
| 679 | RANLIB=$ranlib |
Ulf Möller | 12d7d32 | 1999-05-07 17:51:29 +0000 | [diff] [blame] | 680 | MKDIR=$mkdir |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 681 | MKLIB=$bin_dir$mklib |
| 682 | MLFLAGS=$mlflags |
Dr. Stephen Henson | 70857a4 | 2014-07-01 14:11:28 +0100 | [diff] [blame] | 683 | $asm_def |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 684 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 685 | # FIPS validated module and support file locations |
| 686 | |
| 687 | E_PREMAIN_DSO=fips_premain_dso |
| 688 | |
| 689 | FIPSLIB_D=$fipslibdir |
| 690 | BASEADDR=$baseaddr |
| 691 | FIPS_PREMAIN_SRC=$fips_premain_c_path |
| 692 | O_FIPSCANISTER=$fips_canister_path |
| 693 | FIPS_SHA1_EXE=$fips_sha1_exe_path |
| 694 | PREMAIN_DSO_EXE=$fips_premain_dso_exe_path |
| 695 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 696 | ###################################################### |
| 697 | # You should not need to touch anything below this point |
| 698 | ###################################################### |
| 699 | |
Dr. Stephen Henson | e527ba0 | 1999-02-22 01:26:40 +0000 | [diff] [blame] | 700 | E_EXE=openssl |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 701 | SSL=$ssl |
| 702 | CRYPTO=$crypto |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 703 | |
| 704 | # BIN_D - Binary output directory |
| 705 | # TEST_D - Binary test file output directory |
| 706 | # LIB_D - library output directory |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 707 | # ENG_D - dynamic engine output directory |
Dr. Stephen Henson | e2e044f | 1999-03-17 23:30:39 +0000 | [diff] [blame] | 708 | # Note: if you change these point to different directories then uncomment out |
| 709 | # the lines around the 'NB' comment below. |
| 710 | # |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 711 | BIN_D=\$(OUT_D) |
| 712 | TEST_D=\$(OUT_D) |
| 713 | LIB_D=\$(OUT_D) |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 714 | ENG_D=\$(OUT_D) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 715 | |
| 716 | # INCL_D - local library directory |
| 717 | # OBJ_D - temp object file directory |
| 718 | OBJ_D=\$(TMP_D) |
| 719 | INCL_D=\$(TMP_D) |
| 720 | |
| 721 | O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp |
| 722 | O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 723 | SO_SSL= $plib\$(SSL)$so_shlibp |
| 724 | SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp |
Ulf Möller | 31a674d | 1999-05-06 00:46:34 +0000 | [diff] [blame] | 725 | L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp |
| 726 | L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 727 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 728 | L_LIBS= \$(L_SSL) \$(L_CRYPTO) $ex_l_libs |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 729 | |
| 730 | ###################################################### |
| 731 | # Don't touch anything below this point |
| 732 | ###################################################### |
| 733 | |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 734 | INC=-I\$(INC_D) -I\$(INCL_D) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 735 | APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG) |
| 736 | LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 737 | SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG) |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 738 | LIBS_DEP=$libs_dep |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 739 | |
| 740 | ############################################# |
| 741 | EOF |
| 742 | |
| 743 | $rules=<<"EOF"; |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 744 | all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers \$(FIPS_SHA1_EXE) $build_targets |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 745 | |
| 746 | banner: |
| 747 | $banner |
| 748 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 749 | \$(TMP_D): |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 750 | \$(MKDIR) \"\$(TMP_D)\" |
Dr. Stephen Henson | e2e044f | 1999-03-17 23:30:39 +0000 | [diff] [blame] | 751 | # NB: uncomment out these lines if BIN_D, TEST_D and LIB_D are different |
| 752 | #\$(BIN_D): |
| 753 | # \$(MKDIR) \$(BIN_D) |
| 754 | # |
| 755 | #\$(TEST_D): |
| 756 | # \$(MKDIR) \$(TEST_D) |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 757 | |
| 758 | \$(LIB_D): |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 759 | \$(MKDIR) \"\$(LIB_D)\" |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 760 | |
Bodo Möller | ec57782 | 1999-04-23 22:13:45 +0000 | [diff] [blame] | 761 | \$(INCO_D): \$(INC_D) |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 762 | \$(MKDIR) \"\$(INCO_D)\" |
Bodo Möller | ec57782 | 1999-04-23 22:13:45 +0000 | [diff] [blame] | 763 | |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 764 | \$(INC_D): |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 765 | \$(MKDIR) \"\$(INC_D)\" |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 766 | |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 767 | # This needs to be invoked once, when the makefile is first constructed, or |
| 768 | # after cleaning. |
Ben Laurie | 3675fb8 | 2013-04-01 18:22:58 +0100 | [diff] [blame] | 769 | init: \$(TMP_D) \$(LIB_D) \$(INC_D) \$(INCO_D) \$(BIN_D) \$(TEST_D) headers |
Ben Laurie | 894172f | 2014-05-24 15:42:18 +0100 | [diff] [blame] | 770 | \$(PERL) \$(SRC_D)/util/copy-if-different.pl "\$(SRC_D)/crypto/opensslconf.h" "\$(INCO_D)/opensslconf.h" |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 771 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 772 | headers: \$(HEADER) \$(EXHEADER) |
| 773 | |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 774 | lib: \$(LIBS_DEP) \$(E_SHLIB) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 775 | |
| 776 | exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep |
| 777 | |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 778 | install: all |
Dr. Stephen Henson | 96fc37f | 2008-01-03 16:37:00 +0000 | [diff] [blame] | 779 | \$(MKDIR) \"\$(INSTALLTOP)\" |
| 780 | \$(MKDIR) \"\$(INSTALLTOP)${o}bin\" |
| 781 | \$(MKDIR) \"\$(INSTALLTOP)${o}include\" |
| 782 | \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\" |
| 783 | \$(MKDIR) \"\$(INSTALLTOP)${o}lib\" |
Dr. Stephen Henson | 2e9f1bf | 2005-11-07 00:10:36 +0000 | [diff] [blame] | 784 | $extra_install |
| 785 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 786 | clean: |
| 787 | \$(RM) \$(TMP_D)$o*.* |
| 788 | |
| 789 | vclean: |
| 790 | \$(RM) \$(TMP_D)$o*.* |
| 791 | \$(RM) \$(OUT_D)$o*.* |
| 792 | |
Ben Laurie | f953c2d | 2013-02-27 04:07:55 +0000 | [diff] [blame] | 793 | reallyclean: |
| 794 | \$(RM) -rf \$(TMP_D) |
| 795 | \$(RM) -rf \$(BIN_D) |
| 796 | \$(RM) -rf \$(TEST_D) |
| 797 | \$(RM) -rf \$(LIB_D) |
| 798 | \$(RM) -rf \$(INC_D) |
| 799 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 800 | EOF |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 801 | |
| 802 | if ($orig_platform ne 'copy') |
| 803 | { |
| 804 | $rules .= <<"EOF"; |
| 805 | test: \$(T_EXE) |
| 806 | cd \$(BIN_D) |
| 807 | ..${o}ms${o}test |
| 808 | |
| 809 | EOF |
| 810 | } |
| 811 | |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 812 | my $platform_cpp_symbol = "MK1MF_PLATFORM_$platform"; |
Dr. Stephen Henson | e9185df | 1999-08-05 00:11:05 +0000 | [diff] [blame] | 813 | $platform_cpp_symbol =~ s/-/_/g; |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 814 | if (open(IN,"crypto/buildinf.h")) |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 815 | { |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 816 | # Remove entry for this platform in existing file buildinf.h. |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 817 | |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 818 | my $old_buildinf_h = ""; |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 819 | while (<IN>) |
| 820 | { |
| 821 | if (/^\#ifdef $platform_cpp_symbol$/) |
| 822 | { |
| 823 | while (<IN>) { last if (/^\#endif/); } |
| 824 | } |
| 825 | else |
| 826 | { |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 827 | $old_buildinf_h .= $_; |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 828 | } |
| 829 | } |
Bodo Möller | 7fbd8db | 1999-07-27 09:13:49 +0000 | [diff] [blame] | 830 | close(IN); |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 831 | |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 832 | open(OUT,">crypto/buildinf.h") || die "Can't open buildinf.h"; |
| 833 | print OUT $old_buildinf_h; |
Bodo Möller | 7fbd8db | 1999-07-27 09:13:49 +0000 | [diff] [blame] | 834 | close(OUT); |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 835 | } |
| 836 | |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 837 | open (OUT,">>crypto/buildinf.h") || die "Can't open buildinf.h"; |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 838 | printf OUT <<EOF; |
| 839 | #ifdef $platform_cpp_symbol |
Bodo Möller | 5711994 | 1999-07-29 12:57:23 +0000 | [diff] [blame] | 840 | /* auto-generated/updated by util/mk1mf.pl for crypto/cversion.c */ |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 841 | #define CFLAGS "$cc $cflags" |
| 842 | #define PLATFORM "$platform" |
| 843 | EOF |
| 844 | printf OUT " #define DATE \"%s\"\n", scalar gmtime(); |
| 845 | printf OUT "#endif\n"; |
| 846 | close(OUT); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 847 | |
Ben Laurie | a32d9ea | 2013-02-27 04:09:38 +0000 | [diff] [blame] | 848 | # Strip off trailing ' ' |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 849 | foreach (keys %lib_obj) { $lib_obj{$_}=&clean_up_ws($lib_obj{$_}); } |
| 850 | $test=&clean_up_ws($test); |
| 851 | $e_exe=&clean_up_ws($e_exe); |
| 852 | $exheader=&clean_up_ws($exheader); |
| 853 | $header=&clean_up_ws($header); |
| 854 | |
| 855 | # First we strip the exheaders from the headers list |
| 856 | foreach (split(/\s+/,$exheader)){ $h{$_}=1; } |
| 857 | foreach (split(/\s+/,$header)) { $h.=$_." " unless $h{$_}; } |
| 858 | chop($h); $header=$h; |
| 859 | |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 860 | $defs.=&do_defs("HEADER",$header,"\$(INCL_D)",""); |
| 861 | $rules.=&do_copy_rule("\$(INCL_D)",$header,""); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 862 | |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 863 | $defs.=&do_defs("EXHEADER",$exheader,"\$(INCO_D)",""); |
| 864 | $rules.=&do_copy_rule("\$(INCO_D)",$exheader,""); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 865 | |
| 866 | $defs.=&do_defs("T_OBJ",$test,"\$(OBJ_D)",$obj); |
| 867 | $rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)"); |
| 868 | |
| 869 | $defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj); |
| 870 | $rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)'); |
| 871 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 872 | # Special case rules for fips_start and fips_end fips_premain_dso |
| 873 | |
| 874 | if ($fips) |
| 875 | { |
| 876 | if ($fipscanisterbuild) |
| 877 | { |
| 878 | $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj", |
| 879 | "fips${o}fips_canister.c", |
| 880 | "-DFIPS_START \$(SHLIB_CFLAGS)"); |
| 881 | $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj", |
| 882 | "fips${o}fips_canister.c", "\$(SHLIB_CFLAGS)"); |
| 883 | } |
| 884 | $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj", |
| 885 | "fips${o}sha${o}fips_standalone_sha1.c", |
Andy Polyakov | 1e98169 | 2012-10-29 22:23:58 +0000 | [diff] [blame] | 886 | "\$(APP_CFLAGS)"); |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 887 | $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj", |
| 888 | "fips${o}fips_premain.c", |
Andy Polyakov | 1e98169 | 2012-10-29 22:23:58 +0000 | [diff] [blame] | 889 | "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(APP_CFLAGS)"); |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 890 | } |
| 891 | |
Ben Laurie | 656829b | 2013-03-04 14:11:18 +0000 | [diff] [blame] | 892 | sub fix_asm |
| 893 | { |
| 894 | my($asm, $dir) = @_; |
| 895 | |
| 896 | $asm = " $asm"; |
| 897 | $asm =~ s/\s+/ $dir\//g; |
| 898 | $asm =~ s/\.o//g; |
| 899 | $asm =~ s/^ //; |
| 900 | |
| 901 | return $asm . ' '; |
| 902 | } |
| 903 | |
Dr. Stephen Henson | 71a1694 | 2013-03-04 19:14:57 +0000 | [diff] [blame] | 904 | if ($orig_platform eq 'copy') { |
| 905 | $lib_obj{CRYPTO} .= fix_asm($mf_md5_asm, 'crypto/md5'); |
| 906 | $lib_obj{CRYPTO} .= fix_asm($mf_bn_asm, 'crypto/bn'); |
Ben Laurie | 35ced1f | 2013-03-04 20:26:17 +0000 | [diff] [blame] | 907 | # cpuid is included by the crypto dir |
Ben Laurie | 63d86d0 | 2013-03-04 20:31:59 +0000 | [diff] [blame] | 908 | #$lib_obj{CRYPTO} .= fix_asm($mf_cpuid_asm, 'crypto'); |
Dr. Stephen Henson | 71a1694 | 2013-03-04 19:14:57 +0000 | [diff] [blame] | 909 | # AES asm files end up included by the aes dir itself |
| 910 | #$lib_obj{CRYPTO} .= fix_asm($mf_aes_asm, 'crypto/aes'); |
| 911 | $lib_obj{CRYPTO} .= fix_asm($mf_sha_asm, 'crypto/sha'); |
| 912 | $lib_obj{CRYPTO} .= fix_asm($mf_engines_asm, 'engines'); |
| 913 | $lib_obj{CRYPTO} .= fix_asm($mf_rc4_asm, 'crypto/rc4'); |
| 914 | $lib_obj{CRYPTO} .= fix_asm($mf_modes_asm, 'crypto/modes'); |
Ben Laurie | 71614df | 2014-10-04 22:58:13 +0100 | [diff] [blame] | 915 | $lib_obj{CRYPTO} .= fix_asm($mf_ec_asm, 'crypto/ec'); |
Dr. Stephen Henson | 71a1694 | 2013-03-04 19:14:57 +0000 | [diff] [blame] | 916 | } |
Ben Laurie | 656829b | 2013-03-04 14:11:18 +0000 | [diff] [blame] | 917 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 918 | foreach (values %lib_nam) |
| 919 | { |
| 920 | $lib_obj=$lib_obj{$_}; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 921 | local($slib)=$shlib; |
| 922 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 923 | $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj); |
Richard Levitte | f09628e | 2000-12-31 00:06:47 +0000 | [diff] [blame] | 924 | $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)"; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 925 | $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 926 | } |
| 927 | |
Dr. Stephen Henson | fc6a6a1 | 2002-10-04 21:22:47 +0000 | [diff] [blame] | 928 | # hack to add version info on MSVC |
Dr. Stephen Henson | 1d42dba | 2009-09-20 12:46:55 +0000 | [diff] [blame] | 929 | if (($platform eq "VC-WIN32") || ($platform eq "VC-WIN64A") |
Dr. Stephen Henson | 23129de | 2009-09-20 11:40:13 +0000 | [diff] [blame] | 930 | || ($platform eq "VC-WIN64I") || ($platform eq "VC-NT")) { |
Dr. Stephen Henson | fc6a6a1 | 2002-10-04 21:22:47 +0000 | [diff] [blame] | 931 | $rules.= <<"EOF"; |
| 932 | \$(OBJ_D)\\\$(CRYPTO).res: ms\\version32.rc |
| 933 | \$(RSC) /fo"\$(OBJ_D)\\\$(CRYPTO).res" /d CRYPTO ms\\version32.rc |
| 934 | |
| 935 | \$(OBJ_D)\\\$(SSL).res: ms\\version32.rc |
| 936 | \$(RSC) /fo"\$(OBJ_D)\\\$(SSL).res" /d SSL ms\\version32.rc |
| 937 | |
| 938 | EOF |
| 939 | } |
| 940 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 941 | $defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep); |
| 942 | foreach (split(/\s+/,$test)) |
| 943 | { |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 944 | my $t_libs; |
| 945 | $t=&bname($_); |
| 946 | my $ltype; |
| 947 | # Check to see if test program is FIPS |
| 948 | if ($fips && /fips/) |
| 949 | { |
| 950 | # If fips perform static link to |
| 951 | # $(O_FIPSCANISTER) |
| 952 | $t_libs = "\$(O_FIPSCANISTER)"; |
| 953 | $ltype = 2; |
| 954 | } |
| 955 | else |
| 956 | { |
| 957 | $t_libs = "\$(L_LIBS)"; |
| 958 | $ltype = 0; |
| 959 | } |
| 960 | |
| 961 | $tt="\$(OBJ_D)${o}$t${obj}"; |
| 962 | $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","$t_libs \$(EX_LIBS)", $ltype); |
| 963 | } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 964 | |
Dr. Stephen Henson | 223c59e | 2010-07-24 17:52:43 +0000 | [diff] [blame] | 965 | $defs.=&do_defs("E_SHLIB",$engines . $otherlibs,"\$(ENG_D)",$shlibp); |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 966 | |
| 967 | foreach (split(/\s+/,$engines)) |
| 968 | { |
Andy Polyakov | 2b1f17f | 2011-09-18 15:40:11 +0000 | [diff] [blame] | 969 | my $engine = $_; |
Andy Polyakov | 16190a7 | 2011-10-21 19:34:48 +0000 | [diff] [blame] | 970 | my @objs = grep {/e_$engine/} @engines_obj; |
Andy Polyakov | 2b1f17f | 2011-09-18 15:40:11 +0000 | [diff] [blame] | 971 | $rules.=&do_compile_rule("\$(OBJ_D)",join(" ",@objs),$lib); |
Andy Polyakov | 16190a7 | 2011-10-21 19:34:48 +0000 | [diff] [blame] | 972 | map {$_=~s/.*\/([^\/]+)$/\$(OBJ_D)${o}$1$obj/} @objs; |
Andy Polyakov | 2b1f17f | 2011-09-18 15:40:11 +0000 | [diff] [blame] | 973 | $rules.= &do_lib_rule(join(" ",@objs),"\$(ENG_D)$o$engine$shlibp","",$shlib,""); |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 974 | } |
| 975 | |
| 976 | |
| 977 | |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 978 | $rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 979 | #$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)"); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 980 | |
Dr. Stephen Henson | ef3026a | 2010-12-03 19:31:34 +0000 | [diff] [blame] | 981 | foreach (split(" ",$otherlibs)) |
Dr. Stephen Henson | 223c59e | 2010-07-24 17:52:43 +0000 | [diff] [blame] | 982 | { |
| 983 | my $uc = $_; |
| 984 | $uc =~ tr /a-z/A-Z/; |
| 985 | $rules.= &do_lib_rule("\$(${uc}OBJ)","\$(ENG_D)$o$_$shlibp", "", $shlib, ""); |
| 986 | |
| 987 | } |
| 988 | |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 989 | if ($fips) |
| 990 | { |
| 991 | if ($shlib) |
| 992 | { |
| 993 | $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)", |
| 994 | "\$(O_CRYPTO)", "$crypto", |
| 995 | $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)"); |
| 996 | } |
| 997 | else |
| 998 | { |
| 999 | $rules.= &do_lib_rule("\$(CRYPTOOBJ)", |
| 1000 | "\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)", ""); |
Dr. Stephen Henson | 0b41fcc | 2011-06-18 17:18:25 +0000 | [diff] [blame] | 1001 | $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)", |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 1002 | "\$(LIB_D)$o$crypto_compat",$crypto,$shlib,"\$(SO_CRYPTO)", ""); |
| 1003 | } |
| 1004 | } |
| 1005 | else |
| 1006 | { |
| 1007 | $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib, |
| 1008 | "\$(SO_CRYPTO)"); |
| 1009 | } |
| 1010 | |
| 1011 | if ($fips) |
| 1012 | { |
| 1013 | if ($fipscanisterbuild) |
| 1014 | { |
| 1015 | $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)", |
| 1016 | "\$(OBJ_D)${o}fips_start$obj", |
| 1017 | "\$(FIPSOBJ)", |
| 1018 | "\$(OBJ_D)${o}fips_end$obj", |
| 1019 | "\$(FIPS_SHA1_EXE)", ""); |
| 1020 | # FIXME |
| 1021 | $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)", |
| 1022 | "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}sha1dgst$obj $sha1_asm_obj", |
| 1023 | "","\$(EX_LIBS)", 1); |
| 1024 | } |
| 1025 | else |
| 1026 | { |
| 1027 | $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)", |
| 1028 | "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(O_FIPSCANISTER)", |
| 1029 | "","", 1); |
| 1030 | |
| 1031 | } |
| 1032 | $rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1); |
| 1033 | |
| 1034 | } |
| 1035 | |
| 1036 | $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)", ($fips && !$shlib) ? 2 : 0); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1037 | |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 1038 | $rules .= get_tests('test/Makefile') if $orig_platform eq 'copy'; |
| 1039 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1040 | print $defs; |
Ulf Möller | eb206eb | 2000-09-23 19:24:06 +0000 | [diff] [blame] | 1041 | |
| 1042 | if ($platform eq "linux-elf") { |
| 1043 | print <<"EOF"; |
| 1044 | # Generate perlasm output files |
| 1045 | %.cpp: |
Nils Larsch | cd202fe | 2005-04-27 08:56:15 +0000 | [diff] [blame] | 1046 | (cd \$(\@D)/..; PERL=perl make -f Makefile asm/\$(\@F)) |
Ulf Möller | eb206eb | 2000-09-23 19:24:06 +0000 | [diff] [blame] | 1047 | EOF |
| 1048 | } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1049 | print "###################################################################\n"; |
| 1050 | print $rules; |
| 1051 | |
| 1052 | ############################################### |
| 1053 | # strip off any trailing .[och] and append the relative directory |
| 1054 | # also remembering to do nothing if we are in one of the dropped |
| 1055 | # directories |
| 1056 | sub var_add |
| 1057 | { |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 1058 | local($dir,$val,$keepext)=@_; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1059 | local(@a,$_,$ret); |
| 1060 | |
Richard Levitte | 0b13e9f | 2003-01-30 17:39:26 +0000 | [diff] [blame] | 1061 | return("") if $no_engine && $dir =~ /\/engine/; |
Richard Levitte | 5cd48ab | 2003-01-30 20:03:45 +0000 | [diff] [blame] | 1062 | return("") if $no_hw && $dir =~ /\/hw/; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1063 | return("") if $no_idea && $dir =~ /\/idea/; |
Richard Levitte | 77dd9c1 | 2001-04-08 04:35:58 +0000 | [diff] [blame] | 1064 | return("") if $no_aes && $dir =~ /\/aes/; |
Bodo Möller | f3dea9a | 2006-06-09 15:44:59 +0000 | [diff] [blame] | 1065 | return("") if $no_camellia && $dir =~ /\/camellia/; |
Bodo Möller | 96afc1c | 2007-04-23 23:48:59 +0000 | [diff] [blame] | 1066 | return("") if $no_seed && $dir =~ /\/seed/; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1067 | return("") if $no_rc2 && $dir =~ /\/rc2/; |
| 1068 | return("") if $no_rc4 && $dir =~ /\/rc4/; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1069 | return("") if $no_rc5 && $dir =~ /\/rc5/; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1070 | return("") if $no_rsa && $dir =~ /\/rsa/; |
| 1071 | return("") if $no_rsa && $dir =~ /^rsaref/; |
| 1072 | return("") if $no_dsa && $dir =~ /\/dsa/; |
| 1073 | return("") if $no_dh && $dir =~ /\/dh/; |
Dr. Stephen Henson | e8e0e37 | 2003-03-15 01:28:55 +0000 | [diff] [blame] | 1074 | return("") if $no_ec && $dir =~ /\/ec/; |
Dr. Stephen Henson | 4ed7b78 | 2010-09-02 17:45:23 +0000 | [diff] [blame] | 1075 | return("") if $no_gost && $dir =~ /\/ccgost/; |
Dr. Stephen Henson | 6819050 | 2008-04-04 00:06:43 +0000 | [diff] [blame] | 1076 | return("") if $no_cms && $dir =~ /\/cms/; |
Dr. Stephen Henson | 79bd20f | 2008-11-24 17:27:08 +0000 | [diff] [blame] | 1077 | return("") if $no_jpake && $dir =~ /\/jpake/; |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 1078 | return("") if !$fips && $dir =~ /^fips/; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1079 | if ($no_des && $dir =~ /\/des/) |
| 1080 | { |
| 1081 | if ($val =~ /read_pwd/) |
| 1082 | { return("$dir/read_pwd "); } |
| 1083 | else |
| 1084 | { return(""); } |
| 1085 | } |
| 1086 | return("") if $no_mdc2 && $dir =~ /\/mdc2/; |
| 1087 | return("") if $no_sock && $dir =~ /\/proxy/; |
| 1088 | return("") if $no_bf && $dir =~ /\/bf/; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1089 | return("") if $no_cast && $dir =~ /\/cast/; |
Dr. Stephen Henson | ec645d9 | 2005-12-05 00:53:10 +0000 | [diff] [blame] | 1090 | return("") if $no_whirlpool && $dir =~ /\/whrlpool/; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1091 | |
| 1092 | $val =~ s/^\s*(.*)\s*$/$1/; |
| 1093 | @a=split(/\s+/,$val); |
Dr. Stephen Henson | c51f2d4 | 2005-08-20 19:34:49 +0000 | [diff] [blame] | 1094 | grep(s/\.[och]$//,@a) unless $keepext; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1095 | |
| 1096 | @a=grep(!/^e_.*_3d$/,@a) if $no_des; |
| 1097 | @a=grep(!/^e_.*_d$/,@a) if $no_des; |
Richard Levitte | 77dd9c1 | 2001-04-08 04:35:58 +0000 | [diff] [blame] | 1098 | @a=grep(!/^e_.*_ae$/,@a) if $no_idea; |
| 1099 | @a=grep(!/^e_.*_i$/,@a) if $no_aes; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1100 | @a=grep(!/^e_.*_r2$/,@a) if $no_rc2; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1101 | @a=grep(!/^e_.*_r5$/,@a) if $no_rc5; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1102 | @a=grep(!/^e_.*_bf$/,@a) if $no_bf; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1103 | @a=grep(!/^e_.*_c$/,@a) if $no_cast; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1104 | @a=grep(!/^e_rc4$/,@a) if $no_rc4; |
Bodo Möller | f3dea9a | 2006-06-09 15:44:59 +0000 | [diff] [blame] | 1105 | @a=grep(!/^e_camellia$/,@a) if $no_camellia; |
Bodo Möller | 96afc1c | 2007-04-23 23:48:59 +0000 | [diff] [blame] | 1106 | @a=grep(!/^e_seed$/,@a) if $no_seed; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1107 | |
Dr. Stephen Henson | 06ddf8e | 2009-04-04 19:54:06 +0000 | [diff] [blame] | 1108 | #@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2; |
| 1109 | #@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1110 | |
| 1111 | @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock; |
| 1112 | |
| 1113 | @a=grep(!/(^md2)|(_md2$)/,@a) if $no_md2; |
Richard Levitte | 3009458 | 2000-08-14 14:05:53 +0000 | [diff] [blame] | 1114 | @a=grep(!/(^md4)|(_md4$)/,@a) if $no_md4; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1115 | @a=grep(!/(^md5)|(_md5$)/,@a) if $no_md5; |
Richard Levitte | 7e38616 | 2003-02-14 05:20:25 +0000 | [diff] [blame] | 1116 | @a=grep(!/(rmd)|(ripemd)/,@a) if $no_ripemd; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1117 | |
| 1118 | @a=grep(!/(^d2i_r_)|(^i2d_r_)/,@a) if $no_rsa; |
| 1119 | @a=grep(!/(^p_open$)|(^p_seal$)/,@a) if $no_rsa; |
| 1120 | @a=grep(!/(^pem_seal$)/,@a) if $no_rsa; |
| 1121 | |
| 1122 | @a=grep(!/(m_dss$)|(m_dss1$)/,@a) if $no_dsa; |
| 1123 | @a=grep(!/(^d2i_s_)|(^i2d_s_)|(_dsap$)/,@a) if $no_dsa; |
| 1124 | |
| 1125 | @a=grep(!/^n_pkey$/,@a) if $no_rsa || $no_rc4; |
| 1126 | |
| 1127 | @a=grep(!/_dhp$/,@a) if $no_dh; |
| 1128 | |
| 1129 | @a=grep(!/(^sha[^1])|(_sha$)|(m_dss$)/,@a) if $no_sha; |
| 1130 | @a=grep(!/(^sha1)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1; |
| 1131 | @a=grep(!/_mdc2$/,@a) if $no_mdc2; |
| 1132 | |
Ben Laurie | edc032b | 2011-03-12 17:01:19 +0000 | [diff] [blame] | 1133 | @a=grep(!/(srp)/,@a) if $no_srp; |
| 1134 | |
Richard Levitte | 0b13e9f | 2003-01-30 17:39:26 +0000 | [diff] [blame] | 1135 | @a=grep(!/^engine$/,@a) if $no_engine; |
Richard Levitte | 5cd48ab | 2003-01-30 20:03:45 +0000 | [diff] [blame] | 1136 | @a=grep(!/^hw$/,@a) if $no_hw; |
Ralf S. Engelschall | 13e91dd | 1998-12-22 15:59:57 +0000 | [diff] [blame] | 1137 | @a=grep(!/(^rsa$)|(^genrsa$)/,@a) if $no_rsa; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1138 | @a=grep(!/(^dsa$)|(^gendsa$)|(^dsaparam$)/,@a) if $no_dsa; |
| 1139 | @a=grep(!/^gendsa$/,@a) if $no_sha1; |
| 1140 | @a=grep(!/(^dh$)|(^gendh$)/,@a) if $no_dh; |
| 1141 | |
| 1142 | @a=grep(!/(^dh)|(_sha1$)|(m_dss1$)/,@a) if $no_sha1; |
| 1143 | |
| 1144 | grep($_="$dir/$_",@a); |
| 1145 | @a=grep(!/(^|\/)s_/,@a) if $no_sock; |
| 1146 | @a=grep(!/(^|\/)bio_sock/,@a) if $no_sock; |
| 1147 | $ret=join(' ',@a)." "; |
| 1148 | return($ret); |
| 1149 | } |
| 1150 | |
| 1151 | # change things so that each 'token' is only separated by one space |
| 1152 | sub clean_up_ws |
| 1153 | { |
| 1154 | local($w)=@_; |
| 1155 | |
| 1156 | $w =~ s/^\s*(.*)\s*$/$1/; |
| 1157 | $w =~ s/\s+/ /g; |
| 1158 | return($w); |
| 1159 | } |
| 1160 | |
| 1161 | sub do_defs |
| 1162 | { |
| 1163 | local($var,$files,$location,$postfix)=@_; |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1164 | local($_,$ret,$pf); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1165 | local(*OUT,$tmp,$t); |
| 1166 | |
| 1167 | $files =~ s/\//$o/g if $o ne '/'; |
| 1168 | $ret="$var="; |
| 1169 | $n=1; |
| 1170 | $Vars{$var}.=""; |
| 1171 | foreach (split(/ /,$files)) |
| 1172 | { |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1173 | $orig=$_; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1174 | $_=&bname($_) unless /^\$/; |
| 1175 | if ($n++ == 2) |
| 1176 | { |
| 1177 | $n=0; |
| 1178 | $ret.="\\\n\t"; |
| 1179 | } |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1180 | if (($_ =~ /bss_file/) && ($postfix eq ".h")) |
| 1181 | { $pf=".c"; } |
| 1182 | else { $pf=$postfix; } |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 1183 | if ($_ =~ /BN_ASM/) { $t="$_ "; } |
Ulf Möller | b222eb6 | 2000-04-27 15:07:15 +0000 | [diff] [blame] | 1184 | elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; } |
Dr. Stephen Henson | 4664eb5 | 2008-01-04 00:48:14 +0000 | [diff] [blame] | 1185 | elsif ($_ =~ /AES_ASM/){ $t="$_ "; } |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1186 | elsif ($_ =~ /DES_ENC/) { $t="$_ "; } |
| 1187 | elsif ($_ =~ /BF_ENC/) { $t="$_ "; } |
| 1188 | elsif ($_ =~ /CAST_ENC/){ $t="$_ "; } |
| 1189 | elsif ($_ =~ /RC4_ENC/) { $t="$_ "; } |
| 1190 | elsif ($_ =~ /RC5_ENC/) { $t="$_ "; } |
| 1191 | elsif ($_ =~ /MD5_ASM/) { $t="$_ "; } |
| 1192 | elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; } |
| 1193 | elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; } |
Dr. Stephen Henson | 7c510d6 | 2005-12-06 02:04:58 +0000 | [diff] [blame] | 1194 | elsif ($_ =~ /WHIRLPOOL_ASM/){ $t="$_ "; } |
Dr. Stephen Henson | a4c886e | 2005-12-06 16:35:40 +0000 | [diff] [blame] | 1195 | elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; } |
Ralf S. Engelschall | 58964a4 | 1998-12-21 10:56:39 +0000 | [diff] [blame] | 1196 | else { $t="$location${o}$_$pf "; } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1197 | |
| 1198 | $Vars{$var}.="$t "; |
| 1199 | $ret.=$t; |
| 1200 | } |
Dr. Stephen Henson | fc6a6a1 | 2002-10-04 21:22:47 +0000 | [diff] [blame] | 1201 | # hack to add version info on MSVC |
Dr. Stephen Henson | 1d42dba | 2009-09-20 12:46:55 +0000 | [diff] [blame] | 1202 | if ($shlib && (($platform eq "VC-WIN32") || ($platfrom eq "VC-WIN64I") || ($platform eq "VC-WIN64A") || ($platform eq "VC-NT"))) |
Dr. Stephen Henson | fc6a6a1 | 2002-10-04 21:22:47 +0000 | [diff] [blame] | 1203 | { |
| 1204 | if ($var eq "CRYPTOOBJ") |
| 1205 | { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; } |
| 1206 | elsif ($var eq "SSLOBJ") |
| 1207 | { $ret.="\$(OBJ_D)\\\$(SSL).res "; } |
| 1208 | } |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 1209 | chomp($ret); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1210 | $ret.="\n\n"; |
| 1211 | return($ret); |
| 1212 | } |
| 1213 | |
| 1214 | # return the name with the leading path removed |
| 1215 | sub bname |
| 1216 | { |
| 1217 | local($ret)=@_; |
| 1218 | $ret =~ s/^.*[\\\/]([^\\\/]+)$/$1/; |
| 1219 | return($ret); |
| 1220 | } |
| 1221 | |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1222 | # return the leading path |
| 1223 | sub dname |
| 1224 | { |
| 1225 | my $ret=shift; |
| 1226 | $ret =~ s/(^.*)[\\\/][^\\\/]+$/$1/; |
| 1227 | return($ret); |
| 1228 | } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1229 | |
| 1230 | ############################################################## |
| 1231 | # do a rule for each file that says 'compile' to new direcory |
| 1232 | # compile the files in '$files' into $to |
| 1233 | sub do_compile_rule |
| 1234 | { |
| 1235 | local($to,$files,$ex)=@_; |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1236 | local($ret,$_,$n,$d,$s); |
| 1237 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1238 | $files =~ s/\//$o/g if $o ne '/'; |
| 1239 | foreach (split(/\s+/,$files)) |
| 1240 | { |
| 1241 | $n=&bname($_); |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1242 | $d=&dname($_); |
| 1243 | if (-f "${_}.c") |
| 1244 | { |
| 1245 | $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex) |
| 1246 | } |
| 1247 | elsif (-f ($s="${d}${o}asm${o}${n}.pl") or |
Andy Polyakov | f63e4be | 2008-01-13 17:56:02 +0000 | [diff] [blame] | 1248 | ($s=~s/sha256/sha512/ and -f $s) or |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1249 | -f ($s="${d}${o}${n}.pl")) |
| 1250 | { |
| 1251 | $ret.=&perlasm_compile_target("$to${o}$n$obj",$s,$n); |
| 1252 | } |
| 1253 | elsif (-f ($s="${d}${o}asm${o}${n}.S") or |
| 1254 | -f ($s="${d}${o}${n}.S")) |
| 1255 | { |
| 1256 | $ret.=&Sasm_compile_target("$to${o}$n$obj",$s,$n); |
| 1257 | } |
Ben Laurie | 656829b | 2013-03-04 14:11:18 +0000 | [diff] [blame] | 1258 | elsif (defined &special_compile_target and |
| 1259 | ($s=special_compile_target($_))) |
| 1260 | { |
| 1261 | $ret.=$s; |
| 1262 | } |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1263 | else { die "no rule for $_"; } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1264 | } |
| 1265 | return($ret); |
| 1266 | } |
| 1267 | |
| 1268 | ############################################################## |
| 1269 | # do a rule for each file that says 'compile' to new direcory |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1270 | sub perlasm_compile_target |
| 1271 | { |
| 1272 | my($target,$source,$bname)=@_; |
Ben Laurie | 656829b | 2013-03-04 14:11:18 +0000 | [diff] [blame] | 1273 | |
| 1274 | return platform_perlasm_compile_target($target, $source, $bname) |
| 1275 | if defined &platform_perlasm_compile_target; |
| 1276 | |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1277 | my($ret); |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1278 | $bname =~ s/(.*)\.[^\.]$/$1/; |
Dr. Stephen Henson | 045b280 | 2013-04-08 14:53:54 +0100 | [diff] [blame] | 1279 | $ret ="\$(TMP_D)$o$bname$asm_suffix: $source\n"; |
Dr. Stephen Henson | 548b476 | 2011-02-23 15:03:43 +0000 | [diff] [blame] | 1280 | $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n"; |
Dr. Stephen Henson | ce02589 | 2011-06-22 12:30:18 +0000 | [diff] [blame] | 1281 | if ($fipscanisteronly) |
Dr. Stephen Henson | 548b476 | 2011-02-23 15:03:43 +0000 | [diff] [blame] | 1282 | { |
Dr. Stephen Henson | 045b280 | 2013-04-08 14:53:54 +0100 | [diff] [blame] | 1283 | $ret .= "\t\$(PERL) util$o.pl . \$@ norunasm \$(CFLAG)\n"; |
Dr. Stephen Henson | 548b476 | 2011-02-23 15:03:43 +0000 | [diff] [blame] | 1284 | } |
| 1285 | $ret .= "\n"; |
Dr. Stephen Henson | 045b280 | 2013-04-08 14:53:54 +0100 | [diff] [blame] | 1286 | $ret.="$target: \$(TMP_D)$o$bname$asm_suffix\n"; |
| 1287 | $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname$asm_suffix\n\n"; |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1288 | return($ret); |
| 1289 | } |
| 1290 | |
| 1291 | sub Sasm_compile_target |
| 1292 | { |
| 1293 | my($target,$source,$bname)=@_; |
| 1294 | my($ret); |
| 1295 | |
| 1296 | $bname =~ s/(.*)\.[^\.]$/$1/; |
| 1297 | $ret ="\$(TMP_D)$o$bname.asm: $source\n"; |
Andy Polyakov | 16190a7 | 2011-10-21 19:34:48 +0000 | [diff] [blame] | 1298 | $ret.="\t\$(CC) -E \$(CFLAG) $source >\$\@\n"; |
| 1299 | $ret.="\t\$(PERL) util\\fipsas.pl . \$@ norunasm \$(CFLAG)\n" if $fipscanisteronly; |
| 1300 | $ret.="\n"; |
Andy Polyakov | 4287ade | 2008-01-11 11:59:37 +0000 | [diff] [blame] | 1301 | $ret.="$target: \$(TMP_D)$o$bname.asm\n"; |
| 1302 | $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n"; |
| 1303 | return($ret); |
| 1304 | } |
| 1305 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1306 | sub cc_compile_target |
| 1307 | { |
| 1308 | local($target,$source,$ex_flags)=@_; |
| 1309 | local($ret); |
| 1310 | |
Bodo Möller | 2e0fc87 | 1999-07-27 09:10:36 +0000 | [diff] [blame] | 1311 | $ex_flags.=" -DMK1MF_BUILD -D$platform_cpp_symbol" if ($source =~ /cversion/); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1312 | $target =~ s/\//$o/g if $o ne "/"; |
| 1313 | $source =~ s/\//$o/g if $o ne "/"; |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 1314 | $ret ="$target: \$(SRC_D)$o$source\n\t"; |
Ben Laurie | afdf366 | 2013-04-06 16:17:14 +0100 | [diff] [blame] | 1315 | $ret.="\$(CC)"; |
Dr. Stephen Henson | fed45e1 | 2013-04-06 16:05:23 +0100 | [diff] [blame] | 1316 | $ret.= " -MMD" if $orig_platform eq "copy"; |
| 1317 | $ret.= " ${ofile}$target $ex_flags -c \$(SRC_D)$o$source\n\n"; |
Ben Laurie | 3b4d86b | 2013-03-23 19:05:19 +0000 | [diff] [blame] | 1318 | $target =~ s/\.o$/.d/; |
Dr. Stephen Henson | fed45e1 | 2013-04-06 16:05:23 +0100 | [diff] [blame] | 1319 | $ret.=".sinclude \"$target\"\n\n" if $orig_platform eq "copy"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1320 | return($ret); |
| 1321 | } |
| 1322 | |
| 1323 | ############################################################## |
| 1324 | sub do_asm_rule |
| 1325 | { |
| 1326 | local($target,$src)=@_; |
| 1327 | local($ret,@s,@t,$i); |
| 1328 | |
| 1329 | $target =~ s/\//$o/g if $o ne "/"; |
| 1330 | $src =~ s/\//$o/g if $o ne "/"; |
| 1331 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1332 | @t=split(/\s+/,$target); |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 1333 | @s=split(/\s+/,$src); |
| 1334 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1335 | |
| 1336 | for ($i=0; $i<=$#s; $i++) |
| 1337 | { |
Dr. Stephen Henson | 7398053 | 2008-01-06 00:36:22 +0000 | [diff] [blame] | 1338 | my $objfile = $t[$i]; |
| 1339 | my $srcfile = $s[$i]; |
| 1340 | |
| 1341 | if ($perl_asm == 1) |
| 1342 | { |
| 1343 | my $plasm = $objfile; |
| 1344 | $plasm =~ s/${obj}/.pl/; |
| 1345 | $ret.="$srcfile: $plasm\n"; |
| 1346 | $ret.="\t\$(PERL) $plasm $asmtype \$(CFLAG) >$srcfile\n\n"; |
| 1347 | } |
| 1348 | |
| 1349 | $ret.="$objfile: $srcfile\n"; |
| 1350 | $ret.="\t\$(ASM) $afile$objfile \$(SRC_D)$o$srcfile\n\n"; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1351 | } |
| 1352 | return($ret); |
| 1353 | } |
| 1354 | |
| 1355 | sub do_shlib_rule |
| 1356 | { |
| 1357 | local($n,$def)=@_; |
| 1358 | local($ret,$nn); |
| 1359 | local($t); |
| 1360 | |
| 1361 | ($nn=$n) =~ tr/a-z/A-Z/; |
| 1362 | $ret.="$n.dll: \$(${nn}OBJ)\n"; |
| 1363 | if ($vc && $w32) |
| 1364 | { |
| 1365 | $ret.="\t\$(MKSHLIB) $efile$n.dll $def @<<\n \$(${nn}OBJ_F)\n<<\n"; |
| 1366 | } |
| 1367 | $ret.="\n"; |
| 1368 | return($ret); |
| 1369 | } |
| 1370 | |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 1371 | # do a rule for each file that says 'copy' to new direcory on change |
| 1372 | sub do_copy_rule |
| 1373 | { |
| 1374 | local($to,$files,$p)=@_; |
| 1375 | local($ret,$_,$n,$pp); |
| 1376 | |
| 1377 | $files =~ s/\//$o/g if $o ne '/'; |
| 1378 | foreach (split(/\s+/,$files)) |
| 1379 | { |
| 1380 | $n=&bname($_); |
| 1381 | if ($n =~ /bss_file/) |
| 1382 | { $pp=".c"; } |
| 1383 | else { $pp=$p; } |
Ben Laurie | 1a70fe9 | 2013-04-06 15:15:11 +0100 | [diff] [blame] | 1384 | $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"; |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 1385 | } |
| 1386 | return($ret); |
| 1387 | } |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 1388 | |
| 1389 | sub read_options |
| 1390 | { |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1391 | # Many options are handled in a similar way. In particular |
| 1392 | # no-xxx sets zero or more scalars to 1. |
| 1393 | # Process these using a hash containing the option name and |
| 1394 | # reference to the scalars to set. |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 1395 | |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1396 | my %valid_options = ( |
| 1397 | "no-rc2" => \$no_rc2, |
| 1398 | "no-rc4" => \$no_rc4, |
| 1399 | "no-rc5" => \$no_rc5, |
| 1400 | "no-idea" => \$no_idea, |
| 1401 | "no-aes" => \$no_aes, |
Bodo Möller | f3dea9a | 2006-06-09 15:44:59 +0000 | [diff] [blame] | 1402 | "no-camellia" => \$no_camellia, |
Bodo Möller | 96afc1c | 2007-04-23 23:48:59 +0000 | [diff] [blame] | 1403 | "no-seed" => \$no_seed, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1404 | "no-des" => \$no_des, |
| 1405 | "no-bf" => \$no_bf, |
| 1406 | "no-cast" => \$no_cast, |
| 1407 | "no-md2" => \$no_md2, |
| 1408 | "no-md4" => \$no_md4, |
| 1409 | "no-md5" => \$no_md5, |
| 1410 | "no-sha" => \$no_sha, |
| 1411 | "no-sha1" => \$no_sha1, |
| 1412 | "no-ripemd" => \$no_ripemd, |
| 1413 | "no-mdc2" => \$no_mdc2, |
Dr. Stephen Henson | ec645d9 | 2005-12-05 00:53:10 +0000 | [diff] [blame] | 1414 | "no-whirlpool" => \$no_whirlpool, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1415 | "no-patents" => |
| 1416 | [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa], |
| 1417 | "no-rsa" => \$no_rsa, |
| 1418 | "no-dsa" => \$no_dsa, |
| 1419 | "no-dh" => \$no_dh, |
| 1420 | "no-hmac" => \$no_hmac, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1421 | "no-asm" => \$no_asm, |
| 1422 | "nasm" => \$nasm, |
| 1423 | "nw-nasm" => \$nw_nasm, |
| 1424 | "nw-mwasm" => \$nw_mwasm, |
| 1425 | "gaswin" => \$gaswin, |
| 1426 | "no-ssl2" => \$no_ssl2, |
| 1427 | "no-ssl3" => \$no_ssl3, |
Dr. Stephen Henson | 525de5d | 2007-08-12 23:59:05 +0000 | [diff] [blame] | 1428 | "no-tlsext" => \$no_tlsext, |
Ben Laurie | edc032b | 2011-03-12 17:01:19 +0000 | [diff] [blame] | 1429 | "no-srp" => \$no_srp, |
Dr. Stephen Henson | 88db4e6 | 2008-04-03 23:29:15 +0000 | [diff] [blame] | 1430 | "no-cms" => \$no_cms, |
Dr. Stephen Henson | 79bd20f | 2008-11-24 17:27:08 +0000 | [diff] [blame] | 1431 | "no-jpake" => \$no_jpake, |
Dr. Stephen Henson | 36246be | 2011-02-12 17:38:40 +0000 | [diff] [blame] | 1432 | "no-ec2m" => \$no_ec2m, |
Dr. Stephen Henson | 6b0ac88 | 2011-10-19 11:44:25 +0000 | [diff] [blame] | 1433 | "no-ec_nistp_64_gcc_128" => 0, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1434 | "no-err" => \$no_err, |
| 1435 | "no-sock" => \$no_sock, |
| 1436 | "no-krb5" => \$no_krb5, |
| 1437 | "no-ec" => \$no_ec, |
| 1438 | "no-ecdsa" => \$no_ecdsa, |
| 1439 | "no-ecdh" => \$no_ecdh, |
Dr. Stephen Henson | 4ed7b78 | 2010-09-02 17:45:23 +0000 | [diff] [blame] | 1440 | "no-gost" => \$no_gost, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1441 | "no-engine" => \$no_engine, |
| 1442 | "no-hw" => \$no_hw, |
| 1443 | "just-ssl" => |
| 1444 | [\$no_rc2, \$no_idea, \$no_des, \$no_bf, \$no_cast, |
| 1445 | \$no_md2, \$no_sha, \$no_mdc2, \$no_dsa, \$no_dh, |
| 1446 | \$no_ssl2, \$no_err, \$no_ripemd, \$no_rc5, |
Ben Laurie | edc032b | 2011-03-12 17:01:19 +0000 | [diff] [blame] | 1447 | \$no_aes, \$no_camellia, \$no_seed, \$no_srp], |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1448 | "rsaref" => 0, |
| 1449 | "gcc" => \$gcc, |
| 1450 | "debug" => \$debug, |
| 1451 | "profile" => \$profile, |
| 1452 | "shlib" => \$shlib, |
Dr. Stephen Henson | bf2336f | 2005-04-21 00:46:28 +0000 | [diff] [blame] | 1453 | "dll" => \$shlib, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1454 | "shared" => 0, |
Dr. Stephen Henson | 995a6b1 | 2011-12-25 14:59:52 +0000 | [diff] [blame] | 1455 | "no-sctp" => 0, |
Matt Caswell | 3dd814a | 2014-10-15 01:23:07 +0100 | [diff] [blame] | 1456 | "no-srtp" => 0, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1457 | "no-gmp" => 0, |
Dr. Stephen Henson | d137b56 | 2006-11-30 13:39:34 +0000 | [diff] [blame] | 1458 | "no-rfc3779" => 0, |
Dr. Stephen Henson | 64ddafc | 2008-05-20 11:52:57 +0000 | [diff] [blame] | 1459 | "no-montasm" => 0, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1460 | "no-shared" => 0, |
Dr. Stephen Henson | d6e460d | 2009-03-31 22:05:04 +0000 | [diff] [blame] | 1461 | "no-store" => 0, |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1462 | "no-zlib" => 0, |
| 1463 | "no-zlib-dynamic" => 0, |
Dr. Stephen Henson | 8fdb4f1 | 2012-07-01 22:12:03 +0000 | [diff] [blame] | 1464 | "no-ssl-trace" => 0, |
Dr. Stephen Henson | e0fc796 | 2014-07-23 13:18:06 +0100 | [diff] [blame] | 1465 | "no-unit-test" => 0, |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 1466 | "fips" => \$fips, |
| 1467 | "fipscanisterbuild" => [\$fips, \$fipscanisterbuild], |
Dr. Stephen Henson | d989e4f | 2011-02-22 16:36:20 +0000 | [diff] [blame] | 1468 | "fipscanisteronly" => [\$fips, \$fipscanisterbuild, \$fipscanisteronly], |
Dr. Stephen Henson | 01f0661 | 2011-06-30 19:18:41 +0000 | [diff] [blame] | 1469 | "fipscheck" => [\$fips, \$fipscanisterbuild, \$fipscanisteronly], |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1470 | ); |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 1471 | |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1472 | if (exists $valid_options{$_}) |
| 1473 | { |
| 1474 | my $r = $valid_options{$_}; |
| 1475 | if ( ref $r eq "SCALAR") |
| 1476 | { $$r = 1;} |
| 1477 | elsif ( ref $r eq "ARRAY") |
| 1478 | { |
| 1479 | my $r2; |
| 1480 | foreach $r2 (@$r) |
| 1481 | { |
| 1482 | $$r2 = 1; |
| 1483 | } |
| 1484 | } |
| 1485 | } |
Dr. Stephen Henson | 231b98a | 2005-10-02 12:28:40 +0000 | [diff] [blame] | 1486 | elsif (/^no-comp$/) { $xcflags = "-DOPENSSL_NO_COMP $xcflags"; } |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 1487 | elsif (/^enable-zlib$/) { $zlib_opt = 1 if $zlib_opt == 0 } |
Dr. Stephen Henson | 6bc8e6b | 2005-04-24 02:21:02 +0000 | [diff] [blame] | 1488 | elsif (/^enable-zlib-dynamic$/) |
| 1489 | { |
Dr. Stephen Henson | ad2695b | 2005-12-05 13:46:46 +0000 | [diff] [blame] | 1490 | $zlib_opt = 2; |
Dr. Stephen Henson | 6bc8e6b | 2005-04-24 02:21:02 +0000 | [diff] [blame] | 1491 | } |
Dr. Stephen Henson | fbf002b | 2005-11-06 17:58:26 +0000 | [diff] [blame] | 1492 | elsif (/^no-static-engine/) |
| 1493 | { |
| 1494 | $no_static_engine = 1; |
| 1495 | } |
| 1496 | elsif (/^enable-static-engine/) |
| 1497 | { |
| 1498 | $no_static_engine = 0; |
| 1499 | } |
Dr. Stephen Henson | 00b8abe | 2005-04-20 16:01:50 +0000 | [diff] [blame] | 1500 | # There are also enable-xxx options which correspond to |
| 1501 | # the no-xxx. Since the scalars are enabled by default |
| 1502 | # these can be ignored. |
| 1503 | elsif (/^enable-/) |
| 1504 | { |
| 1505 | my $t = $_; |
| 1506 | $t =~ s/^enable/no/; |
| 1507 | if (exists $valid_options{$t}) |
| 1508 | {return 1;} |
| 1509 | return 0; |
| 1510 | } |
Bodo Möller | 48114ec | 2008-12-02 23:50:22 +0000 | [diff] [blame] | 1511 | # experimental-xxx is mostly like enable-xxx, but opensslconf.v |
| 1512 | # will still set OPENSSL_NO_xxx unless we set OPENSSL_EXPERIMENTAL_xxx. |
| 1513 | # (No need to fail if we don't know the algorithm -- this is for adventurous users only.) |
| 1514 | elsif (/^experimental-/) |
| 1515 | { |
| 1516 | my $algo, $ALGO; |
| 1517 | ($algo = $_) =~ s/^experimental-//; |
| 1518 | ($ALGO = $algo) =~ tr/[a-z]/[A-Z]/; |
| 1519 | |
| 1520 | $xcflags="-DOPENSSL_EXPERIMENTAL_$ALGO $xcflags"; |
| 1521 | |
| 1522 | } |
Dr. Stephen Henson | 6bc8e6b | 2005-04-24 02:21:02 +0000 | [diff] [blame] | 1523 | elsif (/^--with-krb5-flavor=(.*)$/) |
| 1524 | { |
| 1525 | my $krb5_flavor = $1; |
| 1526 | if ($krb5_flavor =~ /^force-[Hh]eimdal$/) |
| 1527 | { |
| 1528 | $xcflags="-DKRB5_HEIMDAL $xcflags"; |
| 1529 | } |
| 1530 | elsif ($krb5_flavor =~ /^MIT/i) |
| 1531 | { |
| 1532 | $xcflags="-DKRB5_MIT $xcflags"; |
| 1533 | if ($krb5_flavor =~ /^MIT[._-]*1[._-]*[01]/i) |
| 1534 | { |
| 1535 | $xcflags="-DKRB5_MIT_OLD11 $xcflags" |
| 1536 | } |
| 1537 | } |
| 1538 | } |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 1539 | elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; } |
| 1540 | elsif (/^-[lL].*$/) { $l_flags.="$_ "; } |
| 1541 | elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/) |
| 1542 | { $c_flags.="$_ "; } |
Bodo Möller | ad2cb8b | 1999-05-15 11:46:00 +0000 | [diff] [blame] | 1543 | else { return(0); } |
| 1544 | return(1); |
Ulf Möller | 31ff97b | 1999-05-13 10:28:14 +0000 | [diff] [blame] | 1545 | } |
Dr. Stephen Henson | 06b433a | 2011-02-03 23:12:04 +0000 | [diff] [blame] | 1546 | |
| 1547 | sub fipslib_error |
| 1548 | { |
| 1549 | print STDERR "***FIPS module directory sanity check failed***\n"; |
| 1550 | print STDERR "FIPS module build failed, or was deleted\n"; |
| 1551 | print STDERR "Please rebuild FIPS module.\n"; |
| 1552 | exit 1; |
| 1553 | } |
| 1554 | |
| 1555 | sub fips_check_files |
| 1556 | { |
| 1557 | my $dir = shift @_; |
| 1558 | my $ret = 1; |
| 1559 | if (!-d $dir) |
| 1560 | { |
| 1561 | print STDERR "FIPS module directory $dir does not exist\n"; |
| 1562 | fipslib_error(); |
| 1563 | } |
| 1564 | foreach (@_) |
| 1565 | { |
| 1566 | if (!-f "$dir${o}$_") |
| 1567 | { |
| 1568 | print STDERR "FIPS module file $_ does not exist!\n"; |
| 1569 | $ret = 0; |
| 1570 | } |
| 1571 | } |
| 1572 | fipslib_error() if ($ret == 0); |
| 1573 | } |