summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2002-06-13 20:42:35 +0000
committerRichard Levitte <levitte@openssl.org>2002-06-13 20:42:35 +0000
commit451dc18f109e4fff1a642976fee7ae7e64af35dc (patch)
treec4728b949d7511ed666c9f0ef65ec8e7c8957581
parent127dca46a07850204f1432ec6998923eebc341b1 (diff)
Add support for DJGPP.
PR: 75
-rwxr-xr-xConfigure29
-rw-r--r--INSTALL.DJGPP32
-rw-r--r--crypto/asn1/Makefile.ssl9
-rw-r--r--crypto/bio/b_sock.c4
-rw-r--r--crypto/bn/bn_mul.c2
-rw-r--r--crypto/des/read_pwd.c2
-rw-r--r--crypto/rand/rand_egd.c2
-rw-r--r--crypto/ui/ui_openssl.c2
-rw-r--r--e_os.h12
-rw-r--r--test/tcrl6
-rw-r--r--test/testca6
-rw-r--r--test/testgen6
-rw-r--r--test/tpkcs76
-rw-r--r--test/tpkcs7d6
-rw-r--r--test/treq6
-rw-r--r--test/trsa6
-rw-r--r--test/tsid6
-rw-r--r--test/tx5096
-rwxr-xr-xutil/point.sh6
19 files changed, 128 insertions, 26 deletions
diff --git a/Configure b/Configure
index 8fe14d8a41..35520b53c7 100755
--- a/Configure
+++ b/Configure
@@ -513,6 +513,9 @@ my %table=(
"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::win32",
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:win32:cygwin-shared:::.dll",
+# DJGPP
+"DJGPP", "gcc:-I/dev/env/DJDIR/watt32/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L$ENV{DJDIR}/watt32/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::",
+
# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
"ultrix-cc","cc:-std1 -O -Olimit 1000 -DL_ENDIAN::(unknown):::::::",
"ultrix-gcc","gcc:-O3 -DL_ENDIAN::(unknown):::::::",
@@ -637,6 +640,7 @@ my $libs;
my $target;
my $options;
my $symlink;
+my $make_depend=0;
my %withargs=();
my @argvcopy=@ARGV;
@@ -902,6 +906,7 @@ print "Configuring for $target\n";
my $IsWindows=scalar grep /^$target$/,@WinTargets;
$exe_ext=".exe" if ($target eq "Cygwin");
+$exe_ext=".exe" if ($target eq "DJGPP");
$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
$prefix=$openssldir if $prefix eq "";
@@ -909,7 +914,7 @@ chop $openssldir if $openssldir =~ /\/$/;
chop $prefix if $prefix =~ /\/$/;
$openssldir=$prefix . "/ssl" if $openssldir eq "";
-$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /^\//;
+$openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
print "IsWindows=$IsWindows\n";
@@ -1436,11 +1441,12 @@ if($IsWindows) {
EOF
close(OUT);
} else {
- (system "make -f Makefile.ssl PERL=\'$perl\' links") == 0 or exit $?
- if $symlink;
- ### (system 'make depend') == 0 or exit $? if $depflags ne "";
- # Run "make depend" manually if you want to be able to delete
- # the source code files of ciphers you left out.
+ my $make_command = "make -f Makefile.ssl PERL=\'$perl\'";
+ my $make_targets = "";
+ $make_targets .= " links" if $symlink;
+ $make_targets .= " depend" if $depflags ne "" && $make_depend;
+ (system $make_command.$make_targets) == 0 or exit $?
+ if $make_targets ne "";
if ( $perl =~ m@^/@) {
&dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
&dofile("apps/der_chop",$perl,'^#!/', '#!%s');
@@ -1450,7 +1456,16 @@ EOF
&dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";');
&dofile("apps/der_chop",'/usr/local/bin/perl','^#!/', '#!%s');
&dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
- }
+ }
+ if ($depflags ne "" && !$make_depend) {
+ print <<EOF;
+
+Since you've disabled at least one algorithm, you need to do the following
+before building:
+
+ make depend
+EOF
+ }
}
print <<EOF;
diff --git a/INSTALL.DJGPP b/INSTALL.DJGPP
new file mode 100644
index 0000000000..0120b946b5
--- /dev/null
+++ b/INSTALL.DJGPP
@@ -0,0 +1,32 @@
+
+
+ INSTALLATION ON THE DOS PLATFORM WITH DJGPP
+ -------------------------------------------
+
+ Openssl has been ported to DOS, but only with long filename support. If
+ you wish to compile on native DOS with 8+3 filenames, you will have to
+ tweak the installation yourself, including renaming files with illegal
+ or duplicate names.
+
+ You should have a full DJGPP environment installed, including the
+ latest versions of DJGPP, GCC, BINUTILS, BASH, etc. This package
+ requires that PERL and BC also be installed.
+
+ All of these can be obtained from the usual DJGPP mirror sites, such as
+ "ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp". You also need to have
+ the WATT-32 networking package installed before you try to compile
+ openssl. This can be obtained from "http://www.bgnett.no/~giva/". The
+ Makefile assumes that the WATT-32 code is in directory "watt32" under
+ /dev/env/DJDIR.
+
+ To compile openssl, start your BASH shell. Then configure for DOS by
+ running "./Configure" with appropriate arguments. The basic syntax for
+ DOS is:
+ ./Configure no-threads --prefix=/dev/env/DJDIR DJGPP
+
+ You may run out of DPMI selectors when running in a DOS box under
+ Windows. If so, just close the BASH shell, go back to Windows, and
+ restart BASH. Then run "make" again.
+
+ Building openssl under DJGPP has been tested with DJGPP 2.03,
+ GCC 2.952, GCC 2.953, perl 5.005_02 and perl 5.006_01.
diff --git a/crypto/asn1/Makefile.ssl b/crypto/asn1/Makefile.ssl
index 267d4a1b9d..6da75a2096 100644
--- a/crypto/asn1/Makefile.ssl
+++ b/crypto/asn1/Makefile.ssl
@@ -353,10 +353,11 @@ asn1_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
asn1_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
asn1_err.o: ../../include/openssl/symhacks.h asn1_err.c
asn1_lib.o: ../../e_os.h ../../include/openssl/asn1.h
-asn1_lib.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
-asn1_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
-asn1_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
-asn1_lib.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
+asn1_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
+asn1_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
+asn1_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
+asn1_lib.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
+asn1_lib.o: ../../include/openssl/opensslconf.h
asn1_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
asn1_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
asn1_lib.o: ../../include/openssl/symhacks.h ../cryptlib.h asn1_lib.c
diff --git a/crypto/bio/b_sock.c b/crypto/bio/b_sock.c
index dcaef68ea7..45bd7c47e8 100644
--- a/crypto/bio/b_sock.c
+++ b/crypto/bio/b_sock.c
@@ -484,7 +484,11 @@ int BIO_socket_ioctl(int fd, long type, unsigned long *arg)
{
int i;
+#ifdef __DJGPP__
+ i=ioctlsocket(fd,type,(char *)arg);
+#else
i=ioctlsocket(fd,type,arg);
+#endif /* __DJGPP__ */
if (i < 0)
SYSerr(SYS_F_IOCTLSOCKET,get_last_socket_error());
return(i);
diff --git a/crypto/bn/bn_mul.c b/crypto/bn/bn_mul.c
index fd598b8b3d..b03458d002 100644
--- a/crypto/bn/bn_mul.c
+++ b/crypto/bn/bn_mul.c
@@ -66,7 +66,7 @@
#include "cryptlib.h"
#include "bn_lcl.h"
-#if defined(OPENSSL_NO_ASM) || !(defined(__i386) || defined(__i386__))/* Assembler implementation exists only for x86 */
+#if defined(OPENSSL_NO_ASM) || !(defined(__i386) || defined(__i386__)) || defined(__DJGPP__) /* Assembler implementation exists only for x86 */
/* Here follows specialised variants of bn_add_words() and
bn_sub_words(). They have the property performing operations on
arrays of different sizes. The sizes of those arrays is expressed through
diff --git a/crypto/des/read_pwd.c b/crypto/des/read_pwd.c
index 00000190f8..9061935f21 100644
--- a/crypto/des/read_pwd.c
+++ b/crypto/des/read_pwd.c
@@ -246,7 +246,7 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
long status;
unsigned short channel = 0;
#else
-#ifndef OPENSSL_SYS_MSDOS
+#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__)
TTY_STRUCT tty_orig,tty_new;
#endif
#endif
diff --git a/crypto/rand/rand_egd.c b/crypto/rand/rand_egd.c
index 97ed12cf67..abc3ac27d5 100644
--- a/crypto/rand/rand_egd.c
+++ b/crypto/rand/rand_egd.c
@@ -94,7 +94,7 @@
* RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
*/
-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
+#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(__DJGPP__)
int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
{
return(-1);
diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c
index 4e12165410..2c2fbc0443 100644
--- a/crypto/ui/ui_openssl.c
+++ b/crypto/ui/ui_openssl.c
@@ -269,7 +269,7 @@ static long tty_orig[3], tty_new[3]; /* XXX Is there any guarantee that this w
static long status;
static unsigned short channel = 0;
#else
-#ifndef OPENSSL_SYS_MSDOS
+#if !defined(OPENSSL_SYS_MSDOS) || defined(__DJGPP__)
static TTY_STRUCT tty_orig,tty_new;
#endif
#endif
diff --git a/e_os.h b/e_os.h
index f216936e18..00edebe6d4 100644
--- a/e_os.h
+++ b/e_os.h
@@ -191,6 +191,14 @@ extern "C" {
#if (defined(WINDOWS) || defined(MSDOS))
+# ifdef __DJGPP__
+# include <unistd.h>
+# include <sys/stat.h>
+# define _setmode setmode
+# define _O_TEXT O_TEXT
+# define _O_BINARY O_BINARY
+# endif /* __DJGPP__ */
+
# ifndef S_IFDIR
# define S_IFDIR _S_IFDIR
# endif
@@ -336,7 +344,7 @@ extern "C" {
/*************/
#ifdef USE_SOCKETS
-# if defined(WINDOWS) || defined(MSDOS)
+# if (defined(WINDOWS) || defined(MSDOS)) && !defined(__DJGPP__)
/* windows world */
# ifdef OPENSSL_NO_SOCK
@@ -423,7 +431,9 @@ extern HINSTANCE _hInstance;
# define SSLeay_Write(a,b,c) write((a),(b),(c))
# define SHUTDOWN(fd) { shutdown((fd),0); closesocket((fd)); }
# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket((fd)); }
+# ifndef INVALID_SOCKET
# define INVALID_SOCKET (-1)
+# endif /* INVALID_SOCKET */
# endif
#endif
diff --git a/test/tcrl b/test/tcrl
index acaf8f3c47..f71ef7a863 100644
--- a/test/tcrl
+++ b/test/tcrl
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
cmd='../apps/openssl crl'
diff --git a/test/testca b/test/testca
index 88c186b6ab..8215ebb5d1 100644
--- a/test/testca
+++ b/test/testca
@@ -1,7 +1,11 @@
#!/bin/sh
SH="/bin/sh"
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=./apps\;../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export SH PATH
SSLEAY_CONFIG="-config CAss.cnf"
diff --git a/test/testgen b/test/testgen
index 6a4b6b9221..55c496f4bc 100644
--- a/test/testgen
+++ b/test/testgen
@@ -6,7 +6,11 @@ CA=../certs/testca.pem
/bin/rm -f $T.1 $T.2 $T.key
-PATH=../apps:$PATH;
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH;
+else
+ PATH=../apps:$PATH;
+fi
export PATH
echo "generating certificate request"
diff --git a/test/tpkcs7 b/test/tpkcs7
index 15bbba42c0..cf3bd9fadb 100644
--- a/test/tpkcs7
+++ b/test/tpkcs7
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
cmd='../apps/openssl pkcs7'
diff --git a/test/tpkcs7d b/test/tpkcs7d
index 46e5aa2bd6..18f9311b06 100644
--- a/test/tpkcs7d
+++ b/test/tpkcs7d
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
cmd='../apps/openssl pkcs7'
diff --git a/test/treq b/test/treq
index 9f5eb7eea5..47a8273cde 100644
--- a/test/treq
+++ b/test/treq
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
cmd='../apps/openssl req -config ../apps/openssl.cnf'
diff --git a/test/trsa b/test/trsa
index bd6c07650a..413e2ec0a0 100644
--- a/test/trsa
+++ b/test/trsa
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
if ../apps/openssl no-rsa; then
diff --git a/test/tsid b/test/tsid
index 9e0854516c..40a1dfa97c 100644
--- a/test/tsid
+++ b/test/tsid
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
cmd='../apps/openssl sess_id'
diff --git a/test/tx509 b/test/tx509
index 35169f3a43..d380963abc 100644
--- a/test/tx509
+++ b/test/tx509
@@ -1,6 +1,10 @@
#!/bin/sh
-PATH=../apps:$PATH
+if test "$OSTYPE" = msdosdjgpp; then
+ PATH=../apps\;$PATH
+else
+ PATH=../apps:$PATH
+fi
export PATH
cmd='../apps/openssl x509'
diff --git a/util/point.sh b/util/point.sh
index 47543c88e2..ce7dcc56df 100755
--- a/util/point.sh
+++ b/util/point.sh
@@ -1,6 +1,10 @@
#!/bin/sh
rm -f $2
-ln -s $1 $2
+if test "$OSTYPE" = msdosdjgpp; then
+ cp $1 $2
+else
+ ln -s $1 $2
+fi
echo "$2 => $1"