Hi, this patch against the repository makes it possible to build openssl
for AmigaOS 4 using a Linux cross-compiler. Please let me know if
something is wrong.
Configure: Add target amigaos-ppc
e_os.h: Add stuff for OPENSSL_SYS_AMIGAOS
e_os2.h: Define OPENSSL_SYS_AMIGAOS for AmigaOS 4 target
apps/ca.c: Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
apps/s_time.c: Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
apps/speed.c: Pick appropriate code paths for
OPENSSL_SYS_AMIGAOS. Don't compile sstrsep() if fork() is not available.
crypto/tmdiff.c: Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
crypto/des/read_pwd.c: Pick appropriate code paths for OPENSSL_SYS_AMIGAOS
crypto/rand/rand_unix.c: Use the VxWorks RAND_poll() for OPENSSL_SYS_AMIGAOS
crypto/ui/ui_openssl.c: Use stdin and stderr instead of /dev/tty for
OPENSSL_SYS_AMIGAOS
Regards,
Johan Gill
Index: Configure
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/Configure,v
retrieving revision 1.515
diff -u -r1.515 Configure
--- Configure 22 Oct 2005 20:21:40 -0000 1.515
+++ Configure 25 Oct 2005 15:07:44 -0000
@@ -526,6 +526,9 @@
##### Compaq Non-Stop Kernel (Tandem)
"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1
-D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
+##### AmigaOS 4
+"amigaos-ppc", "ppc-amigaos-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYS_UN_H -O3
-Wall::::-lunix -lnet:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1
DES_UNROLL:::::::::::::::::ppc-amigaos-ranlib",
+
);
my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
Index: e_os.h
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/e_os.h,v
retrieving revision 1.87
diff -u -r1.87 e_os.h
--- e_os.h 22 Sep 2005 20:37:50 -0000 1.87
+++ e_os.h 25 Oct 2005 15:13:36 -0000
@@ -383,8 +383,25 @@
# define LIST_SEPARATOR_CHAR ';'
# define EXIT(n) { if (n) printf("ERROR: %d\n", (int)n); exit(n); }
+# elif defined(OPENSSL_SYS_AMIGAOS)
+
+# include <unistd.h>
+# include <sys/types.h>
+# undef LONG /* LONG is a #define in AmigaOS headers */
+# define OPENSSL_CONF "openssl.cnf"
+# define SSLEAY_CONF OPENSSL_CONF
+# define RFILE ".rnd"
+# define LIST_SEPARATOR_CHAR '|'
+# define NUL_DEV "/NIL"
+# define CLK_TCK 50
+# define NO_SYSLOG
+ /* No random devices here */
+# undef DEVRANDOM
+# define EXIT(n) exit(n)
+# define NO_SYS_PARAM_H
+
# else
- /* !defined VMS */
+ /* other systems */
# ifdef OPENSSL_SYS_MPE
# define NO_SYS_PARAM_H
# endif
Index: e_os2.h
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/e_os2.h,v
retrieving revision 1.30
diff -u -r1.30 e_os2.h
--- e_os2.h 2 Aug 2005 22:04:11 -0000 1.30
+++ e_os2.h 25 Oct 2005 15:13:36 -0000
@@ -150,6 +150,12 @@
# define OPENSSL_SYS_OS2
#endif
+/* --------------------------------AmigaOS 4-------------------------------- */
+#ifdef __amigaos4__
+# undef OPENSSL_SYS_UNIX
+# define OPENSSL_SYS_AMIGAOS
+#endif
+
/* --------------------------------- Unix ---------------------------------- */
#ifdef OPENSSL_SYS_UNIX
# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX)
Index: apps/ca.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/apps/ca.c,v
retrieving revision 1.151
diff -u -r1.151 ca.c
--- apps/ca.c 30 Sep 2005 16:47:38 -0000 1.151
+++ apps/ca.c 25 Oct 2005 15:08:48 -0000
@@ -83,7 +83,7 @@
# else
# include <unixlib.h>
# endif
-# elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) &&
!defined(OPENSSL_SYS_NETWARE)
+# elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) &&
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
# include <sys/file.h>
# endif
#endif
Index: apps/s_time.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/apps/s_time.c,v
retrieving revision 1.32
diff -u -r1.32 s_time.c
--- apps/s_time.c 14 Aug 2005 21:48:31 -0000 1.32
+++ apps/s_time.c 25 Oct 2005 15:07:44 -0000
@@ -85,7 +85,7 @@
#include OPENSSL_UNISTD
#endif
-#if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) &&
!defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
+#if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) &&
!defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
&& !defined(OPENSSL_SYS_AMIGAOS)
#define TIMES
#endif
@@ -105,7 +105,7 @@
#undef TIMES
#endif
-#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) &&
!defined(OPENSSL_SYS_NETWARE)
+#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) &&
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
#include <sys/timeb.h>
#endif
@@ -384,7 +384,7 @@
ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;
return((ret == 0.0)?1e-6:ret);
}
-#elif defined(OPENSSL_SYS_NETWARE)
+#elif defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_AMIGAOS)
static clock_t tstart,tend;
if (s == START)
Index: apps/speed.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/apps/speed.c,v
retrieving revision 1.129
diff -u -r1.129 speed.c
--- apps/speed.c 16 Jul 2005 12:37:28 -0000 1.129
+++ apps/speed.c 25 Oct 2005 15:10:06 -0000
@@ -110,10 +110,10 @@
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) ||
defined(OPENSSL_SYS_MACOSX)
# define USE_TOD
-#elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) &&
(!defined(OPENSSL_SYS_VMS) || defined(__DECC))
+#elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) &&
(!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_AMIGAOS)
# define TIMES
#endif
-#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) &&
!defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) &&
!defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) &&
!defined(OPENSSL_SYS_VXWORKS) /* FIXME */
+#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) &&
!defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) &&
!defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) &&
!defined(OPENSSL_SYS_VXWORKS) /* FIXME */ && !defined(OPENSSL_SYS_AMIGAOS)
# define TIMEB
#endif
@@ -147,7 +147,7 @@
#include <sys/timeb.h>
#endif
-#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) &&
!defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE)
+#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) &&
!defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE) &&
!defined(OPENSSL_SYS_AMIGAOS)
#error "It seems neither struct tms nor struct timeb is supported in this
platform!"
#endif
@@ -248,7 +248,7 @@
# endif
#endif
-#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) &&
!defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) &&
!defined(OPENSSL_SYS_NETWARE)
+#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) &&
!defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) &&
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
# define HAVE_FORK 1
#endif
@@ -319,11 +319,12 @@
#define START 0
#define STOP 1
-#if defined(OPENSSL_SYS_NETWARE)
+#if defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_AMIGAOS)
/* for NetWare the best we can do is use clock() which returns the
- * time, in hundredths of a second, since the NLM began executing
- */
+ * time, in hundredths of a second, since the NLM began executing.
+ * For AmigaOS clock() has a granularity of 1/50 second.
+ */
static double Time_F(int s)
{
double ret;
@@ -2522,6 +2523,8 @@
results[alg][run_no]=((double)count)/time_used*lengths[run_no];
}
+/* sstrsep() and do_multi() are only used if fork() is available */
+#ifdef HAVE_FORK
static char *sstrsep(char **string, const char *delim)
{
char isdelim[256];
@@ -2553,7 +2556,6 @@
return token;
}
-#ifdef HAVE_FORK
static int do_multi(int multi)
{
int n;
Index: crypto/tmdiff.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/tmdiff.c,v
retrieving revision 1.16
diff -u -r1.16 tmdiff.c
--- crypto/tmdiff.c 28 Nov 2003 13:10:55 -0000 1.16
+++ crypto/tmdiff.c 25 Oct 2005 15:13:36 -0000
@@ -68,7 +68,7 @@
#undef TIMES
#endif
-#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) &&
!(defined(OPENSSL_SYS_VMS) || defined(__DECC)) &&
!defined(OPENSSL_SYS_MACOSX_RHAPSODY) && !defined(OPENSSL_SYS_VXWORKS)
+#if !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32) &&
!(defined(OPENSSL_SYS_VMS) || defined(__DECC)) &&
!defined(OPENSSL_SYS_MACOSX_RHAPSODY) && !defined(OPENSSL_SYS_VXWORKS) &&
!defined(OPENSSL_SYS_AMIGAOS)
# define TIMES
#endif
@@ -98,7 +98,7 @@
#include <sys/param.h>
#endif
-#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) &&
!defined(OPENSSL_SYS_NETWARE)
+#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) &&
!defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_AMIGAOS)
#include <sys/timeb.h>
#endif
@@ -133,7 +133,7 @@
# ifdef OPENSSL_SYS_WIN32
HANDLE thread_id;
FILETIME ms_win32;
-# elif defined (OPENSSL_SYS_NETWARE)
+# elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
clock_t ms_clock;
# else
# ifdef OPENSSL_SYS_VXWORKS
@@ -176,7 +176,7 @@
#else
# ifdef OPENSSL_SYS_WIN32
GetThreadTimes(tm->thread_id,&tmpa,&tmpb,&tmpc,&(tm->ms_win32));
-# elif defined (OPENSSL_SYS_NETWARE)
+# elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
tm->ms_clock = clock();
# else
# ifdef OPENSSL_SYS_VXWORKS
@@ -211,7 +211,7 @@
lb+=b->ms_win32.dwLowDateTime;
ret=((double)(lb-la))/1e7;
}
-# elif defined (OPENSSL_SYS_NETWARE)
+# elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
ret= (double)(b->ms_clock - a->ms_clock);
# else
# ifdef OPENSSL_SYS_VXWORKS
@@ -238,7 +238,7 @@
# ifdef OPENSSL_SYS_WIN32
d
=(b->ms_win32.dwHighDateTime&0x000fffff)*10+b->ms_win32.dwLowDateTime/1e7;
d-=(a->ms_win32.dwHighDateTime&0x000fffff)*10+a->ms_win32.dwLowDateTime/1e7;
-# elif defined (OPENSSL_SYS_NETWARE)
+# elif defined (OPENSSL_SYS_NETWARE) || defined (OPENSSL_SYS_AMIGAOS)
d= (double)(b->ms_clock - a->ms_clock);
# else
# ifdef OPENSSL_SYS_VXWORKS
Index: crypto/des/read_pwd.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/des/read_pwd.c,v
retrieving revision 1.32
diff -u -r1.32 read_pwd.c
--- crypto/des/read_pwd.c 28 Nov 2002 08:03:32 -0000 1.32
+++ crypto/des/read_pwd.c 25 Oct 2005 15:10:06 -0000
@@ -294,7 +294,7 @@
#ifdef OPENSSL_SYS_MSDOS
if ((tty=fopen("con","r")) == NULL)
tty=stdin;
-#elif defined(MAC_OS_pre_X) || defined(OPENSSL_SYS_VXWORKS)
+#elif defined(MAC_OS_pre_X) || defined(OPENSSL_SYS_VXWORKS) ||
defined(OPENSSL_SYS_AMIGAOS)
tty=stdin;
#else
#ifndef OPENSSL_SYS_MPE
Index: crypto/rand/rand_unix.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/rand/rand_unix.c,v
retrieving revision 1.22
diff -u -r1.22 rand_unix.c
--- crypto/rand/rand_unix.c 22 Jul 2005 03:36:29 -0000 1.22
+++ crypto/rand/rand_unix.c 25 Oct 2005 15:13:14 -0000
@@ -116,7 +116,7 @@
#include <openssl/rand.h>
#include "rand_lcl.h"
-#if !(defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) ||
defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) ||
defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE))
+#if !(defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) ||
defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) ||
defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) ||
defined(OPENSSL_SYS_AMIGAOS))
#include <sys/types.h>
#include <sys/time.h>
@@ -277,7 +277,7 @@
#endif
#endif
-#if defined(OPENSSL_SYS_VXWORKS)
+#if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_AMIGAOS)
int RAND_poll(void)
{
return 0;
Index: crypto/ui/ui_openssl.c
===================================================================
RCS file: /bulky/src/cvs/openssl/openssl/crypto/ui/ui_openssl.c,v
retrieving revision 1.25
diff -u -r1.25 ui_openssl.c
--- crypto/ui/ui_openssl.c 26 Sep 2005 11:18:04 -0000 1.25
+++ crypto/ui/ui_openssl.c 25 Oct 2005 15:13:36 -0000
@@ -473,7 +473,7 @@
CRYPTO_w_lock(CRYPTO_LOCK_UI);
is_a_tty = 1;
-#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) ||
defined(OPENSSL_SYS_NETWARE)
+#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) ||
defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_AMIGAOS)
tty_in=stdin;
tty_out=stderr;
#else