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