1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* e_os2.h */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the documentation and/or other materials provided with the
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    distribution.
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    software must display the following acknowledgment:
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    endorse or promote products derived from this software without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    prior written permission. For written permission, please contact
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    openssl-core@openssl.org.
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL"
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    nor may "OpenSSL" appear in their names without prior written
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    permission of the OpenSSL Project.
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    acknowledgment:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE.
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com).  This product includes software written by Tim
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com).
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/opensslconf.h>
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HEADER_E_OS2_H
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_E_OS2_H
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/******************************************************************************
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Detect operating systems.  This probably needs completing.
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The result is that at least one OPENSSL_SYS_os macro should be defined.
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * However, if none is defined, Unix is assumed.
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project **/
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OPENSSL_SYS_UNIX
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ----------------------- Macintosh, before MacOS X ----------------------- */
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC)
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_MACINTOSH_CLASSIC
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ----------------------- NetWare ----------------------------------------- */
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE)
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_NETWARE
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ---------------------- Microsoft operating systems ---------------------- */
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Note that MSDOS actually denotes 32-bit environments running on top of
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   MS-DOS, such as DJGPP one. */
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYSNAME_MSDOS)
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_MSDOS
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* For 32 bit environment, there seems to be the CygWin environment and then
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   all the others that try to do the same thing Microsoft does... */
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYSNAME_UWIN)
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_WIN32_UWIN
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if defined(__CYGWIN32__) || defined(OPENSSL_SYSNAME_CYGWIN32)
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  undef OPENSSL_SYS_UNIX
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_WIN32_CYGWIN
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32)
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   undef OPENSSL_SYS_UNIX
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   define OPENSSL_SYS_WIN32
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(OPENSSL_SYSNAME_WINNT)
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   undef OPENSSL_SYS_UNIX
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   define OPENSSL_SYS_WINNT
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(OPENSSL_SYSNAME_WINCE)
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   undef OPENSSL_SYS_UNIX
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   define OPENSSL_SYS_WINCE
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Anything that tries to look like Microsoft is "Windows" */
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_WINDOWS
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifndef OPENSSL_SYS_MSDOS
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_MSDOS
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* DLL settings.  This part is a bit tough, because it's up to the application
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   implementor how he or she will link the application, so it requires some
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   macro to be used. */
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYS_WINDOWS
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifndef OPENSSL_OPT_WINDLL
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  if defined(_WINDLL) /* This is used when building OpenSSL to indicate that
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                          DLL linkage should be used */
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   define OPENSSL_OPT_WINDLL
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* -------------------------------- OpenVMS -------------------------------- */
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS)
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_VMS
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if defined(__DECC)
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_VMS_DECC
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# elif defined(__DECCXX)
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_VMS_DECC
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_VMS_DECCXX
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_VMS_NODECC
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* --------------------------------- OS/2 ---------------------------------- */
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__EMX__) || defined(__OS2__)
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_SYS_UNIX
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_OS2
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* --------------------------------- Unix ---------------------------------- */
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYS_UNIX
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX)
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_LINUX
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_MPE
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_MPE
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_SNI
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_SNI
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_ULTRASPARC
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_ULTRASPARC
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_NEWS4
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_NEWS4
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_MACOSX
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_MACOSX
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_MACOSX_RHAPSODY
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_MACOSX
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifdef OPENSSL_SYSNAME_SUNOS
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_SUNOS
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY)
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_CRAY
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX)
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_SYS_AIX
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* --------------------------------- VOS ----------------------------------- */
1967b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom#if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS)
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_VOS
1987b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom#ifdef __HPPA__
1997b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom# define OPENSSL_SYS_VOS_HPPA
2007b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom#endif
2017b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom#ifdef __IA32__
2027b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom# define OPENSSL_SYS_VOS_IA32
2037b476c43f6a45574eb34697244b592e7b09f05a3Brian Carlstrom#endif
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ------------------------------- VxWorks --------------------------------- */
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYSNAME_VXWORKS
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_VXWORKS
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
211221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* --------------------------------- BeOS ---------------------------------- */
212221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if defined(__BEOS__)
213221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define OPENSSL_SYS_BEOS
214221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# include <sys/socket.h>
215221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# if defined(BONE_VERSION)
216221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#  define OPENSSL_SYS_BEOS_BONE
217221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# else
218221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#  define OPENSSL_SYS_BEOS_R5
219221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# endif
220221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
221221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/**
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * That's it for OS-specific stuff
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *****************************************************************************/
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Specials for I/O an exit */
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYS_MSDOS
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_UNISTD_IO <io.h>
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_EXIT extern void exit(int);
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_UNISTD_IO OPENSSL_UNISTD
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   certain global symbols that, with some compilers under VMS, have to be
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   defined and declared explicitely with globaldef and globalref.
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   DLL exports and imports for compilers under Win32.  These are a little
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   more complicated to use.  Basically, for any library that exports some
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   global variables, the following code must be present in the header file
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   that declares them, before OPENSSL_EXTERN is used:
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   #ifdef SOME_BUILD_FLAG_MACRO
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   # undef OPENSSL_EXTERN
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   # define OPENSSL_EXTERN OPENSSL_EXPORT
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   #endif
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   have some generally sensible values, and for OPENSSL_EXTERN to have the
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   value OPENSSL_IMPORT.
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VMS_NODECC)
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXPORT globalref
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_IMPORT globalref
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL globaldef
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXPORT extern __declspec(dllexport)
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_IMPORT extern __declspec(dllimport)
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXPORT extern
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_IMPORT extern
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OPENSSL_EXTERN OPENSSL_IMPORT
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Macros to allow global variables to be reached through function calls when
271221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom   required (if a shared library version requires it, for example.
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The way it's done allows definitions like this:
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	// in foobar.c
275221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	// in foobar.h
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_DECLARE_GLOBAL(int,foobar);
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	#define foobar OPENSSL_GLOBAL_REF(foobar)
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION
281221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value)			\
282221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	type *_shadow_##name(void)					\
283221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{ static type _hide_##name=value; return &_hide_##name; }
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
287221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value;
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL_REF(name) _shadow_##name
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
292392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE)
293392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#  define ossl_ssize_t long
294392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
295392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
296392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_SYS_MSDOS
297392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#  define ossl_ssize_t long
298392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
299392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
300392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS)
301392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#  define ssize_t int
302392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
303392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
304392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if defined(__ultrix) && !defined(ssize_t)
305392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#  define ossl_ssize_t int
306392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
307392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
308392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef ossl_ssize_t
309392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#  define ossl_ssize_t ssize_t
310392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
311392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
316