Annotation of parser3/src/lib/ltdl/libltdl/lt_system.h, revision 1.1
1.1 ! moko 1: /* lt_system.h -- system portability abstraction layer
! 2:
! 3: Copyright (C) 2004, 2007, 2010 Free Software Foundation, Inc.
! 4: Written by Gary V. Vaughan, 2004
! 5:
! 6: NOTE: The canonical source of this file is maintained with the
! 7: GNU Libtool package. Report bugs to bug-libtool@gnu.org.
! 8:
! 9: GNU Libltdl is free software; you can redistribute it and/or
! 10: modify it under the terms of the GNU Lesser General Public
! 11: License as published by the Free Software Foundation; either
! 12: version 2 of the License, or (at your option) any later version.
! 13:
! 14: As a special exception to the GNU Lesser General Public License,
! 15: if you distribute this file as part of a program or library that
! 16: is built using GNU Libtool, you may include this file under the
! 17: same distribution terms that you use for the rest of that program.
! 18:
! 19: GNU Libltdl is distributed in the hope that it will be useful,
! 20: but WITHOUT ANY WARRANTY; without even the implied warranty of
! 21: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 22: GNU Lesser General Public License for more details.
! 23:
! 24: You should have received a copy of the GNU Lesser General Public
! 25: License along with GNU Libltdl; see the file COPYING.LIB. If not, a
! 26: copy can be downloaded from http://www.gnu.org/licenses/lgpl.html,
! 27: or obtained by writing to the Free Software Foundation, Inc.,
! 28: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
! 29: */
! 30:
! 31: #if !defined(LT_SYSTEM_H)
! 32: #define LT_SYSTEM_H 1
! 33:
! 34: #include <stddef.h>
! 35: #include <stdlib.h>
! 36: #include <sys/types.h>
! 37:
! 38: /* Some systems do not define EXIT_*, even with STDC_HEADERS. */
! 39: #if !defined(EXIT_SUCCESS)
! 40: # define EXIT_SUCCESS 0
! 41: #endif
! 42: #if !defined(EXIT_FAILURE)
! 43: # define EXIT_FAILURE 1
! 44: #endif
! 45:
! 46: /* Just pick a big number... */
! 47: #define LT_FILENAME_MAX 2048
! 48:
! 49:
! 50: /* Saves on those hard to debug '\0' typos.... */
! 51: #define LT_EOS_CHAR '\0'
! 52:
! 53: /* LTDL_BEGIN_C_DECLS should be used at the beginning of your declarations,
! 54: so that C++ compilers don't mangle their names. Use LTDL_END_C_DECLS at
! 55: the end of C declarations. */
! 56: #if defined(__cplusplus)
! 57: # define LT_BEGIN_C_DECLS extern "C" {
! 58: # define LT_END_C_DECLS }
! 59: #else
! 60: # define LT_BEGIN_C_DECLS /* empty */
! 61: # define LT_END_C_DECLS /* empty */
! 62: #endif
! 63:
! 64: /* LT_STMT_START/END are used to create macros which expand to a
! 65: a single compound statement in a portable way. */
! 66: #if defined (__GNUC__) && !defined (__STRICT_ANSI__) && !defined (__cplusplus)
! 67: # define LT_STMT_START (void)(
! 68: # define LT_STMT_END )
! 69: #else
! 70: # if (defined (sun) || defined (__sun__))
! 71: # define LT_STMT_START if (1)
! 72: # define LT_STMT_END else (void)0
! 73: # else
! 74: # define LT_STMT_START do
! 75: # define LT_STMT_END while (0)
! 76: # endif
! 77: #endif
! 78:
! 79: /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
! 80: #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
! 81: /* DATA imports from DLLs on WIN32 con't be const, because runtime
! 82: relocations are performed -- see ld's documentation on pseudo-relocs. */
! 83: # define LT_DLSYM_CONST
! 84: #elif defined(__osf__)
! 85: /* This system does not cope well with relocations in const data. */
! 86: # define LT_DLSYM_CONST
! 87: #else
! 88: # define LT_DLSYM_CONST const
! 89: #endif
! 90:
! 91: /* Canonicalise Windows and Cygwin recognition macros.
! 92: To match the values set by recent Cygwin compilers, make sure that if
! 93: __CYGWIN__ is defined (after canonicalisation), __WINDOWS__ is NOT! */
! 94: #if defined(__CYGWIN32__) && !defined(__CYGWIN__)
! 95: # define __CYGWIN__ __CYGWIN32__
! 96: #endif
! 97: #if defined(__CYGWIN__)
! 98: # if defined(__WINDOWS__)
! 99: # undef __WINDOWS__
! 100: # endif
! 101: #elif defined(_WIN32)
! 102: # define __WINDOWS__ _WIN32
! 103: #elif defined(WIN32)
! 104: # define __WINDOWS__ WIN32
! 105: #endif
! 106: #if defined(__CYGWIN__) && defined(__WINDOWS__)
! 107: # undef __WINDOWS__
! 108: #endif
! 109:
! 110:
! 111: /* DLL building support on win32 hosts; mostly to workaround their
! 112: ridiculous implementation of data symbol exporting. */
! 113: #if !defined(LT_SCOPE)
! 114: # if defined(__WINDOWS__) || defined(__CYGWIN__)
! 115: # if defined(DLL_EXPORT) /* defined by libtool (if required) */
! 116: # define LT_SCOPE extern __declspec(dllexport)
! 117: # endif
! 118: # if defined(LIBLTDL_DLL_IMPORT) /* define if linking with this dll */
! 119: /* note: cygwin/mingw compilers can rely instead on auto-import */
! 120: # define LT_SCOPE extern __declspec(dllimport)
! 121: # endif
! 122: # endif
! 123: # if !defined(LT_SCOPE) /* static linking or !__WINDOWS__ */
! 124: # define LT_SCOPE extern
! 125: # endif
! 126: #endif
! 127:
! 128: #if defined(__WINDOWS__)
! 129: /* LT_DIRSEP_CHAR is accepted *in addition* to '/' as a directory
! 130: separator when it is set. */
! 131: # define LT_DIRSEP_CHAR '\\'
! 132: # define LT_PATHSEP_CHAR ';'
! 133: #else
! 134: # define LT_PATHSEP_CHAR ':'
! 135: #endif
! 136:
! 137: #if defined(_MSC_VER) /* Visual Studio */
! 138: # define R_OK 4
! 139: #endif
! 140:
! 141: /* fopen() mode flags for reading a text file */
! 142: #undef LT_READTEXT_MODE
! 143: #if defined(__WINDOWS__) || defined(__CYGWIN__)
! 144: # define LT_READTEXT_MODE "rt"
! 145: #else
! 146: # define LT_READTEXT_MODE "r"
! 147: #endif
! 148:
! 149: /* The extra indirection to the LT__STR and LT__CONC macros is required so
! 150: that if the arguments to LT_STR() (or LT_CONC()) are themselves macros,
! 151: they will be expanded before being quoted. */
! 152: #ifndef LT_STR
! 153: # define LT__STR(arg) #arg
! 154: # define LT_STR(arg) LT__STR(arg)
! 155: #endif
! 156:
! 157: #ifndef LT_CONC
! 158: # define LT__CONC(a, b) a##b
! 159: # define LT_CONC(a, b) LT__CONC(a, b)
! 160: #endif
! 161: #ifndef LT_CONC3
! 162: # define LT__CONC3(a, b, c) a##b##c
! 163: # define LT_CONC3(a, b, c) LT__CONC3(a, b, c)
! 164: #endif
! 165:
! 166: #endif /*!defined(LT_SYSTEM_H)*/
E-mail: