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 ----------------------------------- */
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYSNAME_VOS
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_VOS
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ------------------------------- VxWorks --------------------------------- */
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYSNAME_VXWORKS
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_SYS_VXWORKS
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
205221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* --------------------------------- BeOS ---------------------------------- */
206221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if defined(__BEOS__)
207221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define OPENSSL_SYS_BEOS
208221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# include <sys/socket.h>
209221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# if defined(BONE_VERSION)
210221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#  define OPENSSL_SYS_BEOS_BONE
211221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# else
212221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#  define OPENSSL_SYS_BEOS_R5
213221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# endif
214221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
215221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/**
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * That's it for OS-specific stuff
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *****************************************************************************/
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Specials for I/O an exit */
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_SYS_MSDOS
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_UNISTD_IO <io.h>
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_EXIT extern void exit(int);
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_UNISTD_IO OPENSSL_UNISTD
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   certain global symbols that, with some compilers under VMS, have to be
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   defined and declared explicitely with globaldef and globalref.
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   DLL exports and imports for compilers under Win32.  These are a little
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   more complicated to use.  Basically, for any library that exports some
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   global variables, the following code must be present in the header file
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   that declares them, before OPENSSL_EXTERN is used:
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   #ifdef SOME_BUILD_FLAG_MACRO
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   # undef OPENSSL_EXTERN
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   # define OPENSSL_EXTERN OPENSSL_EXPORT
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   #endif
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   have some generally sensible values, and for OPENSSL_EXTERN to have the
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   value OPENSSL_IMPORT.
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VMS_NODECC)
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXPORT globalref
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_IMPORT globalref
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL globaldef
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXPORT extern __declspec(dllexport)
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_IMPORT extern __declspec(dllimport)
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXPORT extern
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_IMPORT extern
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OPENSSL_EXTERN OPENSSL_IMPORT
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Macros to allow global variables to be reached through function calls when
265221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom   required (if a shared library version requires it, for example.
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The way it's done allows definitions like this:
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	// in foobar.c
269221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	// in foobar.h
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_DECLARE_GLOBAL(int,foobar);
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	#define foobar OPENSSL_GLOBAL_REF(foobar)
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION
275221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value)			\
276221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	type *_shadow_##name(void)					\
277221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	{ static type _hide_##name=value; return &_hide_##name; }
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
281221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value;
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_GLOBAL_REF(name) _shadow_##name
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
290