mk1mf.pl and mkdef.pl read OPTIONS from toplevel Makefile.
authorUlf Möller <ulf@openssl.org>
Thu, 13 May 1999 10:28:14 +0000 (10:28 +0000)
committerUlf Möller <ulf@openssl.org>
Thu, 13 May 1999 10:28:14 +0000 (10:28 +0000)
Configure no longer changes files in place.

Configure
INSTALL.W32
Makefile.org
ms/mw.bat
tools/.cvsignore [new file with mode: 0644]
tools/c_rehash [deleted file]
tools/c_rehash.in [new file with mode: 0644]
util/mk1mf.pl
util/mkdef.pl

index 46c3e188cf3e41520b1f4ac818cc2919db6d3848..b7f910f2848e6a29cb02b5fce9a9d5e95a0d5600 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -298,6 +298,7 @@ my $flags="";
 my $depflags="";
 my $libs="";
 my $target="";
+my $options="";
 foreach (@ARGV)
        {
        if (/^no-asm$/)
@@ -349,15 +350,17 @@ foreach (@ARGV)
                        exit(1);
                        }
                }
-       elsif ($_ =~ /^([^:]+):(.+)$/) {
+       elsif ($_ =~ /^([^:]+):(.+)$/)
+               {
                eval "\$table{\$1} = \"$2\""; # allow $xxx constructs in the string
                $target=$1;
-       }
+               }
        else
                {
                die "target already defined - $target\n" if ($target ne "");
                $target=$_;
                }
+       $options .= $_ unless $_ eq $target;
 }
 
 &usage if (!defined($table{$target}));
@@ -477,6 +480,7 @@ while (<IN>)
        s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
        s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
        s/^PLATFORM=.*$/PLATFORM=$target/;
+       s/^OPTIONS=.*$/OPTIONS=$options/;
        s/^CC=.*$/CC= $cc/;
        s/^CFLAG=.*$/CFLAG= $cflags/;
        s/^DEPFLAG=.*$/DEPFLAG= $depflags/;
@@ -641,11 +645,8 @@ if($IsWindows) {
        (system "make -f Makefile.ssl PERL=\'$perl\' links") == 0 or exit $?;
        (system 'make depend') == 0 or exit $? if $depflags ne "";
        &dofile("tools/c_rehash",$openssldir,'^DIR=',   'DIR=%s',);
-       &dofile("util/mk1mf.pl",$openssldir,
-                               ('^\$INSTALLTOP=','$INSTALLTOP="%s";',));
 }
 
-
 my $pwd;
 
 if($IsWindows) {
@@ -730,7 +731,7 @@ sub dofile
        my $f; my $p; my %m; my @a; my $k; my $ff;
        ($f,$p,%m)=@_;
 
-       open(IN,"<$f") || die "unable to open $f:$!\n";
+       open(IN,"<$f.in") || open(IN,"<$f") || die "unable to open $f:$!\n";
        @a=<IN>;
        close(IN);
        foreach $k (keys %m)
@@ -741,6 +742,6 @@ sub dofile
        open(OUT,">$ff.new") || die "unable to open $f:$!\n";
        print OUT @a;
        close(OUT);
-       rename($f,"$ff.bak") || die "unable to rename $f\n";
+       rename($f,"$ff.bak") || die "unable to rename $f\n" if -e $f;
        rename("$ff.new",$f) || die "unable to rename $ff.new\n";
        }
index 8246e41605369e2cc4d8c704a26cacc98668c799..db5d8fda01361657785b369b781d1e03d04932f8 100644 (file)
@@ -82,7 +82,8 @@
 
  * Compile OpenSSL:
 
-   Run ms\mw.bat
+   > perl Configure Mingw32
+   > ms\mw.bat
 
    This will create the library and binaries in out.
 
index 8c36768a779c6476d8e1d7d29d4b0c4e8a83979d..d8dacc650f8e538caa216e3e191f51c573339935 100644 (file)
@@ -6,6 +6,7 @@ VERSION=
 MAJOR=
 MINOR=
 PLATFORM=dist
+OPTIONS=
 # INSTALL_PREFIX is for package builders so that they can configure
 # for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
 # Normally it is left empty.
index 9cab3efb02456f274d0c89c30a63bb377fc3ec12..e6cf95728a260be780c776a566ebae990462a5c7 100644 (file)
--- a/ms/mw.bat
+++ b/ms/mw.bat
@@ -1,9 +1,6 @@
 @rem OpenSSL with Mingw32\r
 @rem --------------------\r
 \r
-perl Configure Mingw32\r
-if errorlevel 1 goto end\r
-\r
 @rem Makefile\r
 perl util\mkfiles.pl >MINFO\r
 perl util\mk1mf.pl Mingw32 >ms\mingw32.mak\r
diff --git a/tools/.cvsignore b/tools/.cvsignore
new file mode 100644 (file)
index 0000000..af0e591
--- /dev/null
@@ -0,0 +1,2 @@
+c_rehash
+c_rehash.bak
diff --git a/tools/c_rehash b/tools/c_rehash
deleted file mode 100644 (file)
index cc3b658..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-#
-# redo the hashes for the certificates in your cert path or the ones passed
-# on the command line.
-#
-
-if [ "$OPENSSL"x = "x" -o ! -x "$OPENSSL" ]; then
-       OPENSSL='openssl'
-       export OPENSSL
-fi
-DIR=/usr/local/ssl
-PATH=$DIR/bin:$PATH
-
-if [ ! -f "$OPENSSL" ]; then
-    found=0
-    for dir in . `echo $PATH | sed -e 's/:/ /g'`; do
-        if [ -f "$dir/$OPENSSL" ]; then
-            found=1
-            break
-        fi
-    done
-    if [ $found = 0 ]; then
-        echo "c_rehash: rehashing skipped ('openssl' program not available)" 1>&2
-        exit 0
-    fi
-fi
-
-SSL_DIR=$DIR/certs
-
-if [ "$*" = "" ]; then
-       CERTS=${*:-${SSL_CERT_DIR:-$SSL_DIR}}
-else
-       CERTS=$*
-fi
-
-IFS=': '
-for i in $CERTS
-do
-  (
-  IFS=' '
-  if [ -d $i -a -w $i ]; then
-    cd $i
-    echo "Doing $i"
-    for i in *.pem
-    do
-      if [ $i != '*.pem' ]; then
-        h=`$OPENSSL x509 -hash -noout -in $i`
-       if [ "x$h" = "x" ]; then
-         echo $i does not contain a certificate
-       else
-          if [ -f $h.0 ]; then
-            /bin/rm -f $h.0
-          fi
-          echo "$i => $h.0"
-          ln -s $i $h.0
-       fi
-      fi
-    done
-  fi
-  )
-done
diff --git a/tools/c_rehash.in b/tools/c_rehash.in
new file mode 100644 (file)
index 0000000..cc3b658
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+#
+# redo the hashes for the certificates in your cert path or the ones passed
+# on the command line.
+#
+
+if [ "$OPENSSL"x = "x" -o ! -x "$OPENSSL" ]; then
+       OPENSSL='openssl'
+       export OPENSSL
+fi
+DIR=/usr/local/ssl
+PATH=$DIR/bin:$PATH
+
+if [ ! -f "$OPENSSL" ]; then
+    found=0
+    for dir in . `echo $PATH | sed -e 's/:/ /g'`; do
+        if [ -f "$dir/$OPENSSL" ]; then
+            found=1
+            break
+        fi
+    done
+    if [ $found = 0 ]; then
+        echo "c_rehash: rehashing skipped ('openssl' program not available)" 1>&2
+        exit 0
+    fi
+fi
+
+SSL_DIR=$DIR/certs
+
+if [ "$*" = "" ]; then
+       CERTS=${*:-${SSL_CERT_DIR:-$SSL_DIR}}
+else
+       CERTS=$*
+fi
+
+IFS=': '
+for i in $CERTS
+do
+  (
+  IFS=' '
+  if [ -d $i -a -w $i ]; then
+    cd $i
+    echo "Doing $i"
+    for i in *.pem
+    do
+      if [ $i != '*.pem' ]; then
+        h=`$OPENSSL x509 -hash -noout -in $i`
+       if [ "x$h" = "x" ]; then
+         echo $i does not contain a certificate
+       else
+          if [ -f $h.0 ]; then
+            /bin/rm -f $h.0
+          fi
+          echo "$i => $h.0"
+          ln -s $i $h.0
+       fi
+      fi
+    done
+  fi
+  )
+done
index b4fc632891e15003fbe3389a01ffc494678e5e81..90943de3dcc3ea8874df7116880f9c51409d3e4f 100755 (executable)
@@ -6,8 +6,17 @@
 #
 
 $INSTALLTOP="/usr/local/ssl";
+$OPTIONS="";
+$ssl_version="";
 
-$ssl_version="0.9.2b";
+open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n";
+while(<IN>) {
+    $ssl_version=$1 if (/^VERSION=(.*)$/);
+    $options=$1 if (/^OPTIONS=(.*)$/);
+    $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/);
+}
+
+die "Makefile.ssl is not the toplevel Makefile!\n" if $ssl_version eq "";
 
 $infile="MINFO";
 
@@ -32,53 +41,14 @@ $infile="MINFO";
 $platform="";
 foreach (@ARGV)
        {
-       if    (/^no-rc2$/)      { $no_rc2=1; }
-       elsif (/^no-rc4$/)      { $no_rc4=1; }
-       elsif (/^no-rc5$/)      { $no_rc5=1; }
-       elsif (/^no-idea$/)     { $no_idea=1; }
-       elsif (/^no-des$/)      { $no_des=1; }
-       elsif (/^no-bf$/)       { $no_bf=1; }
-       elsif (/^no-cast$/)     { $no_cast=1; }
-       elsif (/^no-md2$/)      { $no_md2=1; }
-       elsif (/^no-md5$/)      { $no_md5=1; }
-       elsif (/^no-sha$/)      { $no_sha=1; }
-       elsif (/^no-sha1$/)     { $no_sha1=1; }
-       elsif (/^no-ripemd$/)   { $no_ripemd=1; }
-       elsif (/^no-mdc2$/)     { $no_mdc2=1; }
-       elsif (/^no-patents$/)  { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }
-       elsif (/^no-rsa$/)      { $no_rsa=1; }
-       elsif (/^no-dsa$/)      { $no_dsa=1; }
-       elsif (/^no-dh$/)       { $no_dh=1; }
-       elsif (/^no-hmac$/)     { $no_hmac=1; }
-       elsif (/^no-asm$/)      { $no_asm=1; }
-       elsif (/^no-ssl2$/)     { $no_ssl2=1; }
-       elsif (/^no-ssl3$/)     { $no_ssl3=1; }
-       elsif (/^no-err$/)      { $no_err=1; }
-       elsif (/^no-sock$/)     { $no_sock=1; }
-
-       elsif (/^just-ssl$/)    { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;
-                                 $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;
-                                 $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; }
-
-       elsif (/^rsaref$/)      { $rsaref=1; }
-       elsif (/^gcc$/)         { $gcc=1; }
-       elsif (/^debug$/)       { $debug=1; }
-       elsif (/^shlib$/)       { $shlib=1; }
-       elsif (/^dll$/)         { $shlib=1; }
-       elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
-       elsif (/^-[lL].*$/)     { $l_flags.="$_ "; }
-       elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
-               { $c_flags.="$_ "; }
-       else
+       if (!&read_options && !defined($ops{$_}))
                {
-               if (!defined($ops{$_}))
-                       {
-                       print STDERR "unknown option - $_\n";
-                       print STDERR "usage: perl mk1mf.pl [system] [options]\n";
-                       print STDERR "\nwhere [system] can be one of the following\n";
-                       foreach $i (sort keys %ops)
-                               { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; }
-                       print STDERR <<"EOF";
+               print STDERR "unknown option - $_\n";
+               print STDERR "usage: perl mk1mf.pl [system] [options]\n";
+               print STDERR "\nwhere [system] can be one of the following\n";
+               foreach $i (sort keys %ops)
+               { printf STDERR "\t%-10s\t%s\n",$i,$ops{$i}; }
+               print STDERR <<"EOF";
 and [options] can be one of
        no-md2 no-md5 no-sha no-mdc2 no-ripemd  - Skip this digest
        no-rc2 no-rc4 no-idea no-des no-bf no-cast - Skip this symetric cipher
@@ -101,10 +71,13 @@ TMP=tmpdir OUT=outdir SRC=srcdir BIN=binpath INC=header-outdir CC=C-compiler
 -<ex_cc_flags>                                 - extra 'cc' flags,
                                                  added (MS), or replace (unix)
 EOF
-                       exit(1);
-                       }
-               $platform=$_;
+               exit(1);
                }
+       $platform=$_;
+       }
+foreach (split / /, $OPTIONS)
+       {
+       print STDERR "unknown option - $_\n" if !&read_options;
        }
 
 $no_mdc2=1 if ($no_des);
@@ -817,3 +790,46 @@ sub do_copy_rule
                }
        return($ret);
        }
+
+sub read_options
+       {
+       if    (/^no-rc2$/)      { $no_rc2=1; }
+       elsif (/^no-rc4$/)      { $no_rc4=1; }
+       elsif (/^no-rc5$/)      { $no_rc5=1; }
+       elsif (/^no-idea$/)     { $no_idea=1; }
+       elsif (/^no-des$/)      { $no_des=1; }
+       elsif (/^no-bf$/)       { $no_bf=1; }
+       elsif (/^no-cast$/)     { $no_cast=1; }
+       elsif (/^no-md2$/)      { $no_md2=1; }
+       elsif (/^no-md5$/)      { $no_md5=1; }
+       elsif (/^no-sha$/)      { $no_sha=1; }
+       elsif (/^no-sha1$/)     { $no_sha1=1; }
+       elsif (/^no-ripemd$/)   { $no_ripemd=1; }
+       elsif (/^no-mdc2$/)     { $no_mdc2=1; }
+       elsif (/^no-patents$/)  { $no_rc2=$no_rc4=$no_rc5=$no_idea=$no_rsa=1; }
+       elsif (/^no-rsa$/)      { $no_rsa=1; }
+       elsif (/^no-dsa$/)      { $no_dsa=1; }
+       elsif (/^no-dh$/)       { $no_dh=1; }
+       elsif (/^no-hmac$/)     { $no_hmac=1; }
+       elsif (/^no-asm$/)      { $no_asm=1; }
+       elsif (/^no-ssl2$/)     { $no_ssl2=1; }
+       elsif (/^no-ssl3$/)     { $no_ssl3=1; }
+       elsif (/^no-err$/)      { $no_err=1; }
+       elsif (/^no-sock$/)     { $no_sock=1; }
+
+       elsif (/^just-ssl$/)    { $no_rc2=$no_idea=$no_des=$no_bf=$no_cast=1;
+                                 $no_md2=$no_sha=$no_mdc2=$no_dsa=$no_dh=1;
+                                 $no_ssl2=$no_err=$no_rmd160=$no_rc5=1; }
+
+       elsif (/^rsaref$/)      { $rsaref=1; }
+       elsif (/^gcc$/)         { $gcc=1; }
+       elsif (/^debug$/)       { $debug=1; }
+       elsif (/^shlib$/)       { $shlib=1; }
+       elsif (/^dll$/)         { $shlib=1; }
+       elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
+       elsif (/^-[lL].*$/)     { $l_flags.="$_ "; }
+       elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
+               { $c_flags.="$_ "; }
+       else { return(1); }
+       return(0);
+       }
index 4576c76144bb6c79f684085067dfcd8c4c54b0df..1f05fe040f845170e85b94752b3d49d354eec2f0 100755 (executable)
@@ -18,7 +18,14 @@ $W32=1;
 $NT=0;
 # Set this to make typesafe STACK definitions appear in DEF
 $safe_stack_def = 1;
-foreach (@ARGV)
+
+$options="";
+open(IN,"<Makefile.ssl") || die "unable to open Makefile.ssl!\n";
+while(<IN>) {
+    $options=$1 if (/^OPTIONS=(.*)$/);
+}
+
+foreach (@ARGV, split(/ /, $options))
        {
        $W32=1 if $_ eq "32";
        $W32=0 if $_ eq "16";