The following patch allows openssl-0.9.7 to compile under DJGPP. The
process was broken by two recent changes. Gisle's patch left out
some required headers. The changes for Cygwin added PATH directives
incompatible with the DJGPP path separator of ";" rather than ":".
In addition there seems to be an error in ectest.c. That file is run
from the "test" subdirectory. The "FLAT_INC" portion of the code
doesn't work under DJGPP, and I am not sure how it would under other
platforms (referring to "../.." when it is one directory under the top
directory). None of the other test files which include <e_os.h> use
this construction. I would think that either all need it, or none of
them.
I also changed INSTALL.DJGPP to reflect the need to put WATT_ROOT in
the environment prior to configuring.
I am attaching the patch, since it has long lines that would get
munged in the archives. Since I am in the US, I am also sending a copy
to the US government site. With the new regulations, it doesn't appear
that I can just send a copy of this email. Look for a copy of my
notification in openssl-dev with subject "TSU Request - encryption".
The patch is against the 20001115 snapshot. After applying tha patch,
there are no warnings with "make depend, make, make test, or make
install". This was only tested with "Configure no-threads no-idea no-rc5
no-mdc2 386 --prefix=/dev/env/DJDIR DJGPP".
Doug
__
Doug Kaufman
Internet: [EMAIL PROTECTED]
--- openssl-0.9.7/Makefile.org.orig 2002-11-15 09:02:38.000000000 -0800
+++ openssl-0.9.7/Makefile.org 2002-11-18 23:37:58.000000000 -0800
@@ -592,6 +592,17 @@
fi; \
done;
+ifeq ($(PLATFORM), DJGPP)
+rehash: rehash.time
+rehash.time: certs
+ @(OPENSSL="`pwd`/apps/openssl"; OPENSSL_DEBUG_MEMORY=on; \
+ export OPENSSL OPENSSL_DEBUG_MEMORY; \
+ LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`";
+SHLIB_PATH="`pwd`"; LIBPATH="`pwd`"; \
+ PATH="`pwd`\;$$PATH"; \
+ export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
+ $(PERL) tools/c_rehash certs)
+ touch rehash.time
+else
rehash: rehash.time
rehash.time: certs
@(OPENSSL="`pwd`/apps/openssl"; OPENSSL_DEBUG_MEMORY=on; \
@@ -601,9 +612,19 @@
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
$(PERL) tools/c_rehash certs)
touch rehash.time
+endif
test: tests
+ifeq ($(PLATFORM), DJGPP)
+tests: rehash
+ @(cd test && echo "testing..." && \
+ $(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)'
+INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}'
+BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}'
+RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}'
+MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}'
+PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}'
+KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}'
+SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}'
+TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
+ @LD_LIBRARY_PATH="`pwd`"; DYLD_LIBRARY_PATH="`pwd`"; SHLIB_PATH="`pwd`";
+LIBPATH="`pwd`"; \
+ PATH="`pwd`\;$$PATH"; \
+ export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
+ apps/openssl version -a
+else
tests: rehash
@(cd test && echo "testing..." && \
$(MAKE) CC='${CC}' PLATFORM='${PLATFORM}' CFLAG='${CFLAG}' SDIRS='$(SDIRS)'
INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}'
BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}'
RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}'
MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' AR='${AR}'
PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' TESTS='${TESTS}'
KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' EXE_EXT='${EXE_EXT}'
SHARED_LIBS='${SHARED_LIBS}' SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}'
TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests );
@@ -611,6 +632,7 @@
if [ "$(PLATFORM)" != "Cygwin" ]; then PATH="`pwd`:$$PATH"; fi; \
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH; \
apps/openssl version -a
+endif
report:
@$(PERL) util/selftest.pl
--- openssl-0.9.7/test/Makefile.ssl.orig 2002-11-15 09:03:28.000000000 -0800
+++ openssl-0.9.7/test/Makefile.ssl 2002-11-18 23:07:06.000000000 -0800
@@ -115,12 +115,21 @@
tests: exe apps $(TESTS)
+ifeq ($(PLATFORM), DJGPP)
+apps:
+ @(cd ..; $(MAKE) DIRS=apps all)
+
+SET_SO_PATHS=LIBPATH="`cd ..; pwd`"; LD_LIBRARY_PATH="$$LIBPATH";
+DYLD_LIBRARY_PATH="$$LIBPATH"; SHLIB_PATH="$$LIBPATH"; \
+ PATH="$$LIBPATH\;$$PATH"; \
+ export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH
+else
apps:
@(cd ..; $(MAKE) DIRS=apps all)
SET_SO_PATHS=LIBPATH="`cd ..; pwd`"; LD_LIBRARY_PATH="$$LIBPATH";
DYLD_LIBRARY_PATH="$$LIBPATH"; SHLIB_PATH="$$LIBPATH"; \
if [ "$(PLATFORM)" != "Cygwin" ]; then PATH="$$LIBPATH:$$PATH"; fi; \
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH PATH
+endif
alltests: \
test_des test_idea test_sha test_md4 test_md5 test_hmac \
ssltest.o: d:/djgpp/lib/../include/sys/version.h ssltest.c
--- openssl-0.9.7/e_os.h.orig 2002-11-15 15:07:32.000000000 -0800
+++ openssl-0.9.7/e_os.h 2002-11-16 19:31:10.000000000 -0800
@@ -201,6 +201,9 @@
# ifdef __DJGPP__
# include <unistd.h>
# include <sys/stat.h>
+# include <sys/socket.h>
+# include <tcp.h>
+# include <netdb.h>
# define _setmode setmode
# define _O_TEXT O_TEXT
# define _O_BINARY O_BINARY
--- openssl-0.9.7/crypto/ec/ectest.c.orig 2002-11-15 15:08:24.000000000 -0800
+++ openssl-0.9.7/crypto/ec/ectest.c 2002-11-16 18:47:54.000000000 -0800
@@ -55,11 +55,7 @@
#include <stdio.h>
#include <stdlib.h>
-#ifdef FLAT_INC
#include "e_os.h"
-#else
-#include "../../e_os.h"
-#endif
#include <string.h>
#include <time.h>
--- openssl-0.9.7/INSTALL.DJGPP.orig 2002-06-13 12:39:28.000000000 -0800
+++ openssl-0.9.7/INSTALL.DJGPP 2002-11-19 00:24:18.000000000 -0800
@@ -12,12 +12,14 @@
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.
+ 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 the directory
+ specified by the environment variable WATT_ROOT. If you have watt-32
+ in directory "watt32" under your main DJGPP directory, specify
+ WATT_ROOT="/dev/env/DJDIR/watt32".
To compile openssl, start your BASH shell. Then configure for DOS by
running "./Configure" with appropriate arguments. The basic syntax for