1a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat/* lzodefs.h -- architecture, OS and compiler specific defines
2a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
3a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   This file is part of the LZO real-time data compression library.
4a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
5a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
6a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
7a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
8a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
9a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
10a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
11a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
12a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
13a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
14a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
15a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
16a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
17a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
18a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
19a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
20a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   All Rights Reserved.
21a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
22a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   The LZO library is free software; you can redistribute it and/or
23a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   modify it under the terms of the GNU General Public License as
24a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   published by the Free Software Foundation; either version 2 of
25a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   the License, or (at your option) any later version.
26a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
27a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   The LZO library is distributed in the hope that it will be useful,
28a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   but WITHOUT ANY WARRANTY; without even the implied warranty of
29a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   GNU General Public License for more details.
31a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
32a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   You should have received a copy of the GNU General Public License
33a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   along with the LZO library; see the file COPYING.
34a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   If not, write to the Free Software Foundation, Inc.,
35a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
36a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
37a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   Markus F.X.J. Oberhumer
38a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   <markus@oberhumer.com>
39a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   http://www.oberhumer.com/opensource/lzo/
40a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat */
41a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
42a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
43a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#ifndef __LZODEFS_H_INCLUDED
44a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define __LZODEFS_H_INCLUDED 1
45a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
46a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
47a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __CYGWIN__ __CYGWIN32__
48a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
49a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__IBMCPP__) && !defined(__IBMC__)
50a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __IBMC__ __IBMCPP__
51a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
52a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER)
53a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __INTEL_COMPILER __ICL
54a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
55a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
56a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define _ALL_SOURCE 1
57a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
58a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__mips__) && defined(__R5900__)
59a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if !defined(__LONG_MAX__)
60a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LONG_MAX__ 9223372036854775807L
61a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
62a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
63a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__INTEL_COMPILER) && defined(__linux__)
64a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  pragma warning(disable: 193)
65a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
66a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__KEIL__) && defined(__C166__)
67a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  pragma warning disable = 322
68a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 0 && defined(__C251__)
69a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  pragma warning disable = 322
70a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
71a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
72a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (_MSC_VER >= 1300)
73a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    pragma warning(disable: 4668)
74a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
75a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
76a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 0 && defined(__WATCOMC__)
77a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
78a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    pragma warning 203 9
79a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
80a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
81a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
82a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  pragma option -h
83a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
84a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 0
85a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_0xffffL             0xfffful
86a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_0xffffffffL         0xfffffffful
87a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
88a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_0xffffL             65535ul
89a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_0xffffffffL         4294967295ul
90a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
91a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_0xffffL == LZO_0xffffffffL)
92a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "your preprocessor is broken 1"
93a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
94a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (16ul * 16384ul != 262144ul)
95a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "your preprocessor is broken 2"
96a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
97a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 0
98a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (32767 >= 4294967295ul)
99a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "your preprocessor is broken 3"
100a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
101a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (65535u >= 4294967295ul)
102a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "your preprocessor is broken 4"
103a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
104a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
105a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (UINT_MAX == LZO_0xffffL)
106a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
107a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if !defined(MSDOS)
108a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define MSDOS 1
109a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
110a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if !defined(_MSDOS)
111a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define _MSDOS 1
112a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
113a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX)
114a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__VERSION == 520) && (MB_LEN_MAX == 1)
115a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__AZTEC_C__)
116a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __AZTEC_C__ __VERSION
117a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
118a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__DOS__)
119a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __DOS__ 1
120a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
121a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
122a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
123a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
124a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL)
125a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define ptrdiff_t long
126a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define _PTRDIFF_T_DEFINED 1
127a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
128a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (UINT_MAX == LZO_0xffffL)
129a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef __LZO_RENAME_A
130a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef __LZO_RENAME_B
131a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__AZTEC_C__) && defined(__DOS__)
132a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LZO_RENAME_A 1
133a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(_MSC_VER) && defined(MSDOS)
134a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if (_MSC_VER < 600)
135a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __LZO_RENAME_A 1
136a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    elif (_MSC_VER < 700)
137a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __LZO_RENAME_B 1
138a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
139a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__TSC__) && defined(__OS2__)
140a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LZO_RENAME_A 1
141a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410)
142a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LZO_RENAME_A 1
143a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__PACIFIC__) && defined(DOS)
144a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__far)
145a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __far far
146a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
147a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__near)
148a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __near near
149a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
150a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
151a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__LZO_RENAME_A)
152a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__cdecl)
153a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __cdecl cdecl
154a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
155a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__far)
156a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __far far
157a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
158a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__huge)
159a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __huge huge
160a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
161a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__near)
162a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __near near
163a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
164a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__pascal)
165a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __pascal pascal
166a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
167a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__huge)
168a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __huge huge
169a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
170a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__LZO_RENAME_B)
171a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__cdecl)
172a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __cdecl _cdecl
173a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
174a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__far)
175a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __far _far
176a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
177a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__huge)
178a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __huge _huge
179a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
180a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__near)
181a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __near _near
182a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
183a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__pascal)
184a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __pascal _pascal
185a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
186a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
187a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__cdecl)
188a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __cdecl cdecl
189a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
190a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if !defined(__pascal)
191a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __pascal pascal
192a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
193a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
194a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef __LZO_RENAME_A
195a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef __LZO_RENAME_B
196a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
197a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (UINT_MAX == LZO_0xffffL)
198a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__AZTEC_C__) && defined(__DOS__)
199a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
200a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(_MSC_VER) && defined(MSDOS)
201a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (_MSC_VER < 600)
202a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
203a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
204a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (_MSC_VER < 700)
205a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
206a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_SIZEOF 1
207a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
208a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__PACIFIC__) && defined(DOS)
209a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
210a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__TURBOC__) && defined(__MSDOS__)
211a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__TURBOC__ < 0x0150)
212a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
213a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
214a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
215a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
216a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__TURBOC__ < 0x0200)
217a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_SIZEOF 1
218a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
219a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__TURBOC__ < 0x0400) && defined(__cplusplus)
220a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
221a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
222a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
223a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
224a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_BROKEN_SIZEOF 1
225a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
226a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
227a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__WATCOMC__) && (__WATCOMC__ < 900)
228a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
229a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
230a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(_CRAY) && defined(_CRAY1)
231a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1
232a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
233a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_STRINGIZE(x)             #x
234a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_MACRO_EXPAND(x)          LZO_PP_STRINGIZE(x)
235a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_CONCAT2(a,b)             a ## b
236a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_CONCAT3(a,b,c)           a ## b ## c
237a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_CONCAT4(a,b,c,d)         a ## b ## c ## d
238a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_CONCAT5(a,b,c,d,e)       a ## b ## c ## d ## e
239a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_ECONCAT2(a,b)            LZO_PP_CONCAT2(a,b)
240a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_ECONCAT3(a,b,c)          LZO_PP_CONCAT3(a,b,c)
241a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_ECONCAT4(a,b,c,d)        LZO_PP_CONCAT4(a,b,c,d)
242a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_PP_ECONCAT5(a,b,c,d,e)      LZO_PP_CONCAT5(a,b,c,d,e)
243a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1
244a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_STRINGIZE(x)            #x
245a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_MACRO_EXPAND(x)         LZO_CPP_STRINGIZE(x)
246a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_CONCAT2(a,b)            a ## b
247a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_CONCAT3(a,b,c)          a ## b ## c
248a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_CONCAT4(a,b,c,d)        a ## b ## c ## d
249a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_CONCAT5(a,b,c,d,e)      a ## b ## c ## d ## e
250a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_ECONCAT2(a,b)           LZO_CPP_CONCAT2(a,b)
251a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_ECONCAT3(a,b,c)         LZO_CPP_CONCAT3(a,b,c)
252a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_ECONCAT4(a,b,c,d)       LZO_CPP_CONCAT4(a,b,c,d)
253a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_CPP_ECONCAT5(a,b,c,d,e)     LZO_CPP_CONCAT5(a,b,c,d,e)
254a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
255a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-1)) - (o)) << 1) + (o))
256a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1 && defined(__cplusplus)
257a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if !defined(__STDC_CONSTANT_MACROS)
258a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __STDC_CONSTANT_MACROS 1
259a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
260a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if !defined(__STDC_LIMIT_MACROS)
261a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __STDC_LIMIT_MACROS 1
262a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
263a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
264a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__cplusplus)
265a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_EXTERN_C extern "C"
266a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
267a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_EXTERN_C extern
268a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
269a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__LZO_OS_OVERRIDE)
270a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_FREESTANDING)
271a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "freestanding"
272a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_EMBEDDED)
273a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "embedded"
274a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && defined(__IAR_SYSTEMS_ICC__)
275a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_EMBEDDED       1
276a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "embedded"
277a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__CYGWIN__) && defined(__GNUC__)
278a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_CYGWIN         1
279a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "cygwin"
280a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__EMX__) && defined(__GNUC__)
281a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_EMX            1
282a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "emx"
283a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__BEOS__)
284a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_BEOS           1
285a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "beos"
286a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__Lynx__)
287a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_LYNXOS         1
288a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "lynxos"
289a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__OS400__)
290a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_OS400          1
291a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "os400"
292a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__QNX__)
293a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_QNX            1
294a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "qnx"
295a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460)
296a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_DOS32          1
297a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "dos32"
298a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__BORLANDC__) && defined(__DPMI16__)
299a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_DOS16          1
300a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "dos16"
301a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__ZTC__) && defined(DOS386)
302a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_DOS32          1
303a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "dos32"
304a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__OS2__) || defined(__OS2V2__)
305a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX == LZO_0xffffL)
306a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_OS216        1
307a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "os216"
308a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (UINT_MAX == LZO_0xffffffffL)
309a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_OS2          1
310a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "os2"
311a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
312a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "check your limits.h header"
313a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
314a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64)
315a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_WIN64          1
316a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "win64"
317a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__)
318a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_WIN32          1
319a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "win32"
320a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__MWERKS__) && defined(__INTEL__)
321a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_WIN32          1
322a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "win32"
323a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
324a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX == LZO_0xffffL)
325a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_WIN16        1
326a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "win16"
327a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (UINT_MAX == LZO_0xffffffffL)
328a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_WIN32        1
329a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "win32"
330a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
331a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "check your limits.h header"
332a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
333a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS))
334a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX == LZO_0xffffL)
335a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_DOS16        1
336a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "dos16"
337a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (UINT_MAX == LZO_0xffffffffL)
338a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_DOS32        1
339a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "dos32"
340a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
341a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "check your limits.h header"
342a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
343a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__WATCOMC__)
344a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__NT__) && (UINT_MAX == LZO_0xffffL)
345a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_DOS16        1
346a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "dos16"
347a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__NT__) && (__WATCOMC__ < 1100)
348a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_WIN32        1
349a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "win32"
350a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__linux__) || defined(__LINUX__)
351a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX        1
352a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS         "posix"
353a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
354a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "please specify a target using the -bt compiler option"
355a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
356a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__palmos__)
357a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_PALMOS         1
358a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "palmos"
359a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__TOS__) || defined(__atarist__)
360a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_TOS            1
361a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "tos"
362a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(macintosh) && !defined(__ppc__)
363a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_MACCLASSIC     1
364a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "macclassic"
365a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__VMS)
366a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_VMS            1
367a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "vms"
368a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
369a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_CONSOLE        1
370a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_CONSOLE_PS2    1
371a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "console"
372a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS_CONSOLE   "ps2"
373a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (defined(__mips__) && defined(__psp__))
374a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_CONSOLE        1
375a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_CONSOLE_PSP    1
376a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "console"
377a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS_CONSOLE   "psp"
378a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
379a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OS_POSIX          1
380a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_OS           "posix"
381a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
382a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_POSIX)
383a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(_AIX) || defined(__AIX__) || defined(__aix__)
384a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_AIX        1
385a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "aix"
386a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__FreeBSD__)
387a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_FREEBSD    1
388a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "freebsd"
389a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__hpux__) || defined(__hpux)
390a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_HPUX       1
391a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "hpux"
392a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__INTERIX)
393a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_INTERIX    1
394a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "interix"
395a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__IRIX__) || defined(__irix__)
396a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_IRIX       1
397a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "irix"
398a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
399a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_LINUX      1
400a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "linux"
401a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__APPLE__) || defined(__MACOS__)
402a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_MACOSX     1
403a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "macosx"
404a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__minix__) || defined(__minix)
405a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_MINIX      1
406a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "minix"
407a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__NetBSD__)
408a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_NETBSD     1
409a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "netbsd"
410a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__OpenBSD__)
411a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_OPENBSD    1
412a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "openbsd"
413a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__osf__)
414a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_OSF        1
415a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "osf"
416a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__solaris__) || defined(__sun)
417a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if defined(__SVR4) || defined(__svr4__)
418a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_OS_POSIX_SOLARIS  1
419a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_INFO_OS_POSIX     "solaris"
420a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    else
421a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_OS_POSIX_SUNOS    1
422a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_INFO_OS_POSIX     "sunos"
423a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
424a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__ultrix__) || defined(__ultrix)
425a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_ULTRIX     1
426a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "ultrix"
427a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(_UNICOS)
428a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_UNICOS     1
429a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "unicos"
430a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
431a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OS_POSIX_UNKNOWN    1
432a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_OS_POSIX       "unknown"
433a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
434a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
435a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
436a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
437a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX != LZO_0xffffL)
438a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
439a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
440a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (ULONG_MAX != LZO_0xffffffffL)
441a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
442a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
443a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
444a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64)
445a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX != LZO_0xffffffffL)
446a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
447a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
448a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (ULONG_MAX != LZO_0xffffffffL)
449a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
450a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
451a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
452a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
453a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_CILLY          1
454a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Cilly"
455a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__CILLY__)
456a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__CILLY__)
457a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
458a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      "unknown"
459a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
460a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__)
461a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_SDCC           1
462a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "sdcc"
463a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(SDCC)
464a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
465a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
466a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Pathscale C"
467a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        __PATHSCALE__
468a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__INTEL_COMPILER)
469a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_INTELC         1
470a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Intel C"
471a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__INTEL_COMPILER)
472a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(_WIN32) || defined(_WIN64)
473a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_SYNTAX_MSC 1
474a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
475a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_SYNTAX_GNUC 1
476a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
477a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__POCC__) && defined(_WIN32)
478a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_PELLESC        1
479a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Pelles C"
480a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__POCC__)
481a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
482a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__GNUC_PATCHLEVEL__)
483a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
484a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
485a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
486a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
487a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
488a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_CLANG_CLANG  (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__)
489a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
490a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_CLANG_CLANG  0x020700L
491a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
492a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_CLANG          LZO_CC_CLANG_GNUC
493a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "clang"
494a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        __VERSION__
495a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
496a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__GNUC_PATCHLEVEL__)
497a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
498a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
499a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
500a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
501a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_LLVM           LZO_CC_LLVM_GNUC
502a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "llvm-gcc"
503a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        __VERSION__
504a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__GNUC__) && defined(__VERSION__)
505a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
506a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
507a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__GNUC_MINOR__)
508a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
509a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
510a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
511a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
512a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "gcc"
513a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        __VERSION__
514a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__ACK__) && defined(_ACK)
515a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_ACK            1
516a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Amsterdam Compiler Kit C"
517a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        "unknown"
518a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__AZTEC_C__)
519a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_AZTECC         1
520a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Aztec C"
521a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__AZTEC_C__)
522a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__CODEGEARC__)
523a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_CODEGEARC      1
524a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "CodeGear C"
525a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__CODEGEARC__)
526a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__BORLANDC__)
527a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_BORLANDC       1
528a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Borland C"
529a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__BORLANDC__)
530a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(_CRAYC) && defined(_RELEASE)
531a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_CRAYC          1
532a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Cray C"
533a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(_RELEASE)
534a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__DMC__) && defined(__SC__)
535a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_DMC            1
536a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Digital Mars C"
537a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DMC__)
538a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__DECC)
539a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_DECC           1
540a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "DEC C"
541a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DECC)
542a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__HIGHC__)
543a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_HIGHC          1
544a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "MetaWare High C"
545a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        "unknown"
546a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IAR_SYSTEMS_ICC__)
547a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_IARC           1
548a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "IAR C"
549a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__VER__)
550a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__VER__)
551a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
552a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      "unknown"
553a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
554a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IBMC__)
555a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_IBMC           1
556a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "IBM C"
557a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMC__)
558a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__KEIL__) && defined(__C166__)
559a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_KEILC          1
560a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Keil C"
561a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__C166__)
562a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL)
563a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_LCCWIN32       1
564a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "lcc-win32"
565a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        "unknown"
566a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__LCC__)
567a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_LCC            1
568a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "lcc"
569a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__LCC_VERSION__)
570a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__LCC_VERSION__)
571a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
572a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      "unknown"
573a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
574a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(_MSC_VER)
575a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_MSC            1
576a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Microsoft C"
577a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(_MSC_FULL_VER)
578a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
579a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
580a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
581a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
582a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__MWERKS__)
583a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_MWERKS         1
584a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Metrowerks C"
585a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__MWERKS__)
586a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
587a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_NDPC           1
588a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Microway NDP C"
589a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        "unknown"
590a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__PACIFIC__)
591a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_PACIFICC       1
592a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Pacific C"
593a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PACIFIC__)
594a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
595a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_PGI            1
596a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Portland Group PGI C"
597a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        "unknown"
598a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__PUREC__) && defined(__TOS__)
599a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_PUREC          1
600a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Pure C"
601a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PUREC__)
602a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__SC__) && defined(__ZTC__)
603a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_SYMANTECC      1
604a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Symantec C"
605a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__SC__)
606a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__SUNPRO_C)
607a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "SunPro C"
608a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if ((__SUNPRO_C)+0 > 0)
609a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_SUNPROC      __SUNPRO_C
610a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_C)
611a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
612a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_SUNPROC      1
613a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      "unknown"
614a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
615a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__SUNPRO_CC)
616a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "SunPro C"
617a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if ((__SUNPRO_CC)+0 > 0)
618a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_SUNPROC      __SUNPRO_CC
619a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_CC)
620a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
621a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_CC_SUNPROC      1
622a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      "unknown"
623a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
624a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__TINYC__)
625a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_TINYC          1
626a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Tiny C"
627a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TINYC__)
628a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__TSC__)
629a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_TOPSPEEDC      1
630a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "TopSpeed C"
631a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TSC__)
632a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__WATCOMC__)
633a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_WATCOMC        1
634a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Watcom C"
635a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__WATCOMC__)
636a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__TURBOC__)
637a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_TURBOC         1
638a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Turbo C"
639a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TURBOC__)
640a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__ZTC__)
641a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_ZORTECHC       1
642a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "Zortech C"
643a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__ZTC__ == 0x310)
644a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      "0x310"
645a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
646a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__ZTC__)
647a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
648a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
649a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CC_UNKNOWN        1
650a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CC           "unknown"
651a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_CCVER        "unknown"
652a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
653a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
654a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
655a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
656a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY)
657a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY)
658a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E)
659a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_ARCH_CRAY_MPP     1
660a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    elif defined(_CRAY1)
661a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_ARCH_CRAY_PVP     1
662a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
663a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
664a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
665a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__LZO_ARCH_OVERRIDE)
666a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_GENERIC)
667a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "generic"
668a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
669a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I086             1
670a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA16             1
671a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "i086"
672a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
673a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_ALPHA            1
674a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "alpha"
675a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E))
676a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_ALPHA            1
677a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "alpha"
678a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
679a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_AMD64            1
680a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "amd64"
681a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
682a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_ARM              1
683a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_ARM_THUMB        1
684a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "arm_thumb"
685a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
686a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_ARM              1
687a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
688a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ARCH_ARM_THUMB      1
689a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "arm_thumb"
690a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
691a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "arm"
692a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
693a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "arm"
694a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
695a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__arm__) || defined(_M_ARM)
696a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_ARM              1
697a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "arm"
698a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__)
699a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_AVR              1
700a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "avr"
701a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__avr32__) || defined(__AVR32__)
702a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_AVR32            1
703a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "avr32"
704a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__bfin__)
705a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_BLACKFIN         1
706a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "blackfin"
707a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__)
708a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_C166             1
709a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "c166"
710a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__cris__)
711a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_CRIS             1
712a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "cris"
713a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__)
714a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_EZ80             1
715a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "ez80"
716a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
717a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_H8300            1
718a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "h8300"
719a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__hppa__) || defined(__hppa)
720a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_HPPA             1
721a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "hppa"
722a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386)
723a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I386             1
724a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA32             1
725a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "i386"
726a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_ZORTECHC && defined(__I86__))
727a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I386             1
728a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA32             1
729a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "i386"
730a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386)
731a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I386             1
732a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA32             1
733a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "i386"
734a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
735a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA64             1
736a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "ia64"
737a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__)
738a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_M16C             1
739a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "m16c"
740a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__)
741a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_M16C             1
742a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "m16c"
743a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__m32r__)
744a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_M32R             1
745a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "m32r"
746a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
747a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_M68K             1
748a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "m68k"
749a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__)
750a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_MCS251           1
751a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "mcs251"
752a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__)
753a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_MCS51            1
754a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "mcs51"
755a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
756a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_MCS51            1
757a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "mcs51"
758a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
759a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_MIPS             1
760a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "mips"
761a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__)
762a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_MSP430           1
763a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "msp430"
764a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
765a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_MSP430           1
766a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "msp430"
767a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
768a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_POWERPC          1
769a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "powerpc"
770a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
771a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_S390             1
772a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "s390"
773a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__sh__) || defined(_M_SH)
774a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_SH               1
775a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "sh"
776a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8)
777a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_SPARC            1
778a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "sparc"
779a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__SPU__)
780a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_SPU              1
781a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "spu"
782a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (UINT_MAX == LZO_0xffffL) && defined(__z80)
783a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_Z80              1
784a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "z80"
785a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_CRAY_PVP)
786a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(_CRAYSV1)
787a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ARCH_CRAY_SV1       1
788a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "cray_sv1"
789a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (_ADDR64)
790a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ARCH_CRAY_T90       1
791a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "cray_t90"
792a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (_ADDR32)
793a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ARCH_CRAY_YMP       1
794a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "cray_ymp"
795a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
796a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ARCH_CRAY_XMP       1
797a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_INFO_ARCH           "cray_xmp"
798a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
799a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
800a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_UNKNOWN          1
801a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ARCH             "unknown"
802a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
803a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
804a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2)
805a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - missing define for CPU architecture"
806a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
807a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32)
808a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - missing WIN32 define for CPU architecture"
809a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
810a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64)
811a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - missing WIN64 define for CPU architecture"
812a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
813a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_OS216 || LZO_OS_WIN16)
814a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I086PM           1
815a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA16PM           1
816a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_OS_DOS16 && defined(BLX286))
817a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I086PM           1
818a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA16PM           1
819a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_OS_DOS16 && defined(DOSX286))
820a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I086PM           1
821a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA16PM           1
822a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__))
823a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_I086PM           1
824a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ARCH_IA16PM           1
825a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
826a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM)
827a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "this should not happen"
828a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
829a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086)
830a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "this should not happen"
831a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
832a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086)
833a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX != LZO_0xffffL)
834a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
835a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
836a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (ULONG_MAX != LZO_0xffffffffL)
837a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
838a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
839a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
840a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I386)
841a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__)
842a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
843a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
844a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__)
845a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
846a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
847a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (ULONG_MAX != LZO_0xffffffffL)
848a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
849a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
850a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
851a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__LZO_MM_OVERRIDE)
852a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086)
853a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (UINT_MAX != LZO_0xffffL)
854a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "this should not happen"
855a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
856a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
857a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_TINY           1
858a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM)
859a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_HUGE           1
860a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL)
861a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_SMALL          1
862a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM)
863a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_MEDIUM         1
864a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM)
865a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_COMPACT        1
866a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL)
867a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_LARGE          1
868a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_AZTECC)
869a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(_LARGE_CODE) && defined(_LARGE_DATA)
870a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_MM_LARGE        1
871a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(_LARGE_CODE)
872a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_MM_MEDIUM       1
873a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(_LARGE_DATA)
874a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_MM_COMPACT      1
875a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
876a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_MM_SMALL        1
877a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
878a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_ZORTECHC && defined(__VCM__))
879a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_LARGE          1
880a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
881a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "unknown memory model"
882a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
883a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
884a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_HAVE_MM_HUGE_PTR        1
885a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_HAVE_MM_HUGE_ARRAY      1
886a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_MM_TINY)
887a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_HAVE_MM_HUGE_ARRAY
888a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
889a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC)
890a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_HAVE_MM_HUGE_PTR
891a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_HAVE_MM_HUGE_ARRAY
892a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
893a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_HAVE_MM_HUGE_ARRAY
894a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && defined(_QC))
895a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_HAVE_MM_HUGE_ARRAY
896a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (_MSC_VER < 600)
897a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    undef LZO_HAVE_MM_HUGE_PTR
898a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
899a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295))
900a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_HAVE_MM_HUGE_ARRAY
901a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
902a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR)
903a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_OS_DOS16)
904a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
905a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_ZORTECHC)
906a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
907a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "this should not happen"
908a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
909a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
910a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#ifdef __cplusplus
911a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehatextern "C" {
912a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
913a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
914a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   extern void __near __cdecl _AHSHIFT(void);
915a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
916a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
917a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   extern void __near __cdecl _AHSHIFT(void);
918a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
919a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC)
920a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   extern void __near __cdecl _AHSHIFT(void);
921a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
922a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295))
923a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   extern void __near __cdecl _AHSHIFT(void);
924a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
925a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16)
926a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_AHSHIFT      12
927a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_WATCOMC)
928a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat   extern unsigned char _HShift;
929a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_AHSHIFT      ((unsigned) _HShift)
930a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
931a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - implement LZO_MM_AHSHIFT"
932a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
933a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#ifdef __cplusplus
934a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat}
935a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
936a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
937a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_C166)
938a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__MODEL__)
939a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - C166 __MODEL__"
940a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 0)
941a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_SMALL          1
942a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 1)
943a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_SMALL          1
944a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 2)
945a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_LARGE          1
946a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 3)
947a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_TINY           1
948a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 4)
949a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_XTINY          1
950a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 5)
951a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_XSMALL         1
952a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
953a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - C166 __MODEL__"
954a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
955a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_MCS251)
956a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__MODEL__)
957a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - MCS251 __MODEL__"
958a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 0)
959a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_SMALL          1
960a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 2)
961a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_LARGE          1
962a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 3)
963a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_TINY           1
964a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 4)
965a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_XTINY          1
966a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 5)
967a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_XSMALL         1
968a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
969a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - MCS251 __MODEL__"
970a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
971a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_MCS51)
972a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__MODEL__)
973a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - MCS51 __MODEL__"
974a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 1)
975a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_SMALL          1
976a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 2)
977a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_LARGE          1
978a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 3)
979a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_TINY           1
980a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 4)
981a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_XTINY          1
982a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((__MODEL__) == 5)
983a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_XSMALL         1
984a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
985a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "FIXME - MCS51 __MODEL__"
986a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
987a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_CRAY_PVP)
988a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_PVP            1
989a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
990a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_MM_FLAT           1
991a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
992a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_MM_COMPACT)
993a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "compact"
994a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_FLAT)
995a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "flat"
996a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_HUGE)
997a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "huge"
998a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_LARGE)
999a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "large"
1000a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_MEDIUM)
1001a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "medium"
1002a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_PVP)
1003a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "pvp"
1004a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_SMALL)
1005a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "small"
1006a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_TINY)
1007a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_MM           "tiny"
1008a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1009a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "unknown memory model"
1010a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1011a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1012a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_SHORT)
1013a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
1014a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1015a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_INT)
1016a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_INT            (SIZEOF_INT)
1017a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1018a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_LONG)
1019a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
1020a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1021a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_LONG_LONG)
1022a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
1023a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1024a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF___INT16)
1025a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
1026a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1027a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF___INT32)
1028a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
1029a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1030a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF___INT64)
1031a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
1032a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1033a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_VOID_P)
1034a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
1035a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1036a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_SIZE_T)
1037a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
1038a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1039a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(SIZEOF_PTRDIFF_T)
1040a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
1041a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1042a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
1043a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_SHORT)
1044a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_ARCH_CRAY_PVP)
1045a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        8
1046a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (USHRT_MAX == LZO_0xffffL)
1047a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        2
1048a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
1049a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        1
1050a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
1051a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        2
1052a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
1053a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        4
1054a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
1055a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        8
1056a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
1057a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SHORT        16
1058a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1059a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "LZO_SIZEOF_SHORT"
1060a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1061a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1062a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_INT)
1063a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_ARCH_CRAY_PVP)
1064a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          8
1065a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (UINT_MAX == LZO_0xffffL)
1066a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          2
1067a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (UINT_MAX == LZO_0xffffffffL)
1068a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          4
1069a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(UINT_MAX,7) == 1)
1070a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          1
1071a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(UINT_MAX,15) == 1)
1072a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          2
1073a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(UINT_MAX,31) == 1)
1074a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          4
1075a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(UINT_MAX,63) == 1)
1076a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          8
1077a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(UINT_MAX,127) == 1)
1078a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_INT          16
1079a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1080a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "LZO_SIZEOF_INT"
1081a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1082a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1083a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_LONG)
1084a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (ULONG_MAX == LZO_0xffffffffL)
1085a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_LONG         4
1086a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
1087a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_LONG         1
1088a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
1089a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_LONG         2
1090a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
1091a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_LONG         4
1092a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
1093a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_LONG         8
1094a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
1095a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_LONG         16
1096a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1097a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "LZO_SIZEOF_LONG"
1098a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1099a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1100a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
1101a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
1102a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
1103a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if (LZO_CC_GNUC >= 0x030300ul)
1104a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
1105a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
1106a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
1107a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#        define LZO_SIZEOF_LONG_LONG      4
1108a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      endif
1109a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
1110a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1111a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1112a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1113a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
1114a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
1115a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086 && LZO_CC_DMC)
1116a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CILLY) && defined(__GNUC__)
1117a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1118a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1119a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1120a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
1121a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1122a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_WIN64 || defined(_WIN64))
1123a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        8
1124a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
1125a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1126a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
1127a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1128a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
1129a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1130a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
1131a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1132a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
1133a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        8
1134a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
1135a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        8
1136a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
1137a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        8
1138a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
1139a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        8
1140a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
1141a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF___INT64        8
1142a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
1143a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1144a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
1145a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1146a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
1147a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
1148a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_LONG_LONG      8
1149a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1150a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1151a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1152a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__cplusplus) && (LZO_CC_GNUC)
1153a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_GNUC < 0x020800ul)
1154a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    undef LZO_SIZEOF_LONG_LONG
1155a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1156a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1157a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
1158a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_SIZEOF_LONG_LONG
1159a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1160a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_VOID_P)
1161a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086)
1162a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            2
1163a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
1164a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       2
1165a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
1166a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       4
1167a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1168a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "LZO_MM"
1169a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1170a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_AVR || LZO_ARCH_Z80)
1171a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            1
1172a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         2
1173a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
1174a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         2
1175a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_H8300)
1176a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__NORMAL_MODE__)
1177a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LZO_WORDSIZE          4
1178a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       2
1179a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
1180a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LZO_WORDSIZE          4
1181a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       4
1182a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1183a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __LZO_WORDSIZE          2
1184a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       2
1185a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1186a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
1187a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
1188a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
1189a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1190a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_M16C)
1191a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            2
1192a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
1193a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       4
1194a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1195a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_VOID_P       2
1196a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1197a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
1198a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            8
1199a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         4
1200a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
1201a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            8
1202a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         8
1203a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
1204a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
1205a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
1206a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
1207a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_OS400 || defined(__OS400__))
1208a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            LZO_SIZEOF_LONG
1209a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         16
1210a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
1211a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
1212a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
1213a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         8
1214a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
1215a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
1216a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_SPU)
1217a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# if 0
1218a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_WORDSIZE            16
1219a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat# endif
1220a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         4
1221a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1222a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
1223a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1224a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1225a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_WORDSIZE)
1226a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__LZO_WORDSIZE)
1227a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_WORDSIZE            __LZO_WORDSIZE
1228a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1229a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_WORDSIZE            LZO_SIZEOF_VOID_P
1230a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1231a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1232a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_SIZE_T)
1233a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
1234a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SIZE_T         2
1235a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1236a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
1237a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1238a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1239a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_SIZEOF_PTRDIFF_T)
1240a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086)
1241a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
1242a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
1243a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
1244a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
1245a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_SIZEOF_PTRDIFF_T  4
1246a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    else
1247a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define LZO_SIZEOF_PTRDIFF_T  2
1248a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
1249a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1250a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    error "LZO_MM"
1251a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1252a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1253a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
1254a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1255a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1256a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ABI_NEUTRAL_ENDIAN)
1257a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_ABI_BIG_ENDIAN
1258a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_ABI_LITTLE_ENDIAN
1259a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
1260a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
1261a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_BIG_ENDIAN        1
1262a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
1263a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LITTLE_ENDIAN     1
1264a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
1265a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LITTLE_ENDIAN     1
1266a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390)
1267a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_BIG_ENDIAN        1
1268a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
1269a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (__LITTLE_ENDIAN__ == 1)
1270a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ABI_LITTLE_ENDIAN   1
1271a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1272a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_ABI_BIG_ENDIAN      1
1273a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1274a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
1275a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_BIG_ENDIAN        1
1276a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
1277a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LITTLE_ENDIAN     1
1278a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
1279a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_BIG_ENDIAN        1
1280a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
1281a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LITTLE_ENDIAN     1
1282a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
1283a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_BIG_ENDIAN        1
1284a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
1285a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LITTLE_ENDIAN     1
1286a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1287a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1288a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
1289a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "this should not happen"
1290a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1291a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ABI_BIG_ENDIAN)
1292a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_ENDIAN       "be"
1293a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ABI_LITTLE_ENDIAN)
1294a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_ENDIAN       "le"
1295a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ABI_NEUTRAL_ENDIAN)
1296a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_ENDIAN       "neutral"
1297a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1298a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
1299a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_I8LP16         1
1300a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "i8lp16"
1301a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
1302a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_ILP16         1
1303a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "ilp16"
1304a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
1305a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_ILP32         1
1306a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "ilp32"
1307a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
1308a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LLP64         1
1309a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "llp64"
1310a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
1311a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_LP64          1
1312a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "lp64"
1313a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
1314a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_ILP64         1
1315a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "ilp64"
1316a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
1317a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ABI_IP32L64       1
1318a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_ABI_PM       "ip32l64"
1319a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1320a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__LZO_LIBC_OVERRIDE)
1321a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_LIBC_NAKED)
1322a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "naked"
1323a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_LIBC_FREESTANDING)
1324a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "freestanding"
1325a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_LIBC_MOSTLY_FREESTANDING)
1326a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "mfreestanding"
1327a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_LIBC_ISOC90)
1328a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "isoc90"
1329a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_LIBC_ISOC99)
1330a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "isoc99"
1331a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__dietlibc__)
1332a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_LIBC_DIETLIBC     1
1333a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "dietlibc"
1334a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(_NEWLIB_VERSION)
1335a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_LIBC_NEWLIB       1
1336a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "newlib"
1337a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
1338a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__UCLIBC_SUBLEVEL__)
1339a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
1340a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1341a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_LIBC_UCLIBC     0x00090bL
1342a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1343a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "uclibc"
1344a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1345a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100)
1346a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "glibc"
1347a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MWERKS) && defined(__MSL__)
1348a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_LIBC_MSL          __MSL__
1349a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "msl"
1350a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif 1 && defined(__IAR_SYSTEMS_ICC__)
1351a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_LIBC_ISOC90       1
1352a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "isoc90"
1353a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1354a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_LIBC_DEFAULT      1
1355a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_INFO_LIBC         "default"
1356a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1357a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1358a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_gnuc_extension__)
1359a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x020800ul)
1360a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_gnuc_extension__    __extension__
1361a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1362a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_gnuc_extension__    __extension__
1363a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1364a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_gnuc_extension__    /*empty*/
1365a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1366a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1367a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_ua_volatile)
1368a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_ua_volatile     volatile
1369a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1370a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_alignof)
1371a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
1372a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_alignof(e)      __alignof__(e)
1373a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
1374a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_alignof(e)      __alignof__(e)
1375a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
1376a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_alignof(e)      __alignof(e)
1377a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
1378a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_alignof(e)      __alignof__(e)
1379a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1380a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1381a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_alignof)
1382a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_alignof 1
1383a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1384a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_constructor)
1385a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x030400ul)
1386a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_constructor     __attribute__((__constructor__,__used__))
1387a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_GNUC >= 0x020700ul)
1388a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_constructor     __attribute__((__constructor__))
1389a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1390a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_constructor     __attribute__((__constructor__))
1391a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1392a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1393a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_constructor)
1394a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_constructor 1
1395a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1396a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_destructor)
1397a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x030400ul)
1398a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_destructor      __attribute__((__destructor__,__used__))
1399a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_GNUC >= 0x020700ul)
1400a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_destructor      __attribute__((__destructor__))
1401a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1402a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_destructor      __attribute__((__destructor__))
1403a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1404a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1405a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_destructor)
1406a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_destructor 1
1407a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1408a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
1409a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "this should not happen"
1410a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1411a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_inline)
1412a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295))
1413a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__cplusplus)
1414a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          inline
1415a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
1416a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline
1417a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
1418a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline__
1419a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_DMC)
1420a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline
1421a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC)
1422a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline
1423a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405))
1424a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline
1425a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 900))
1426a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline
1427a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
1428a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          __inline__
1429a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
1430a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          inline
1431a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1432a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1433a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_inline)
1434a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_inline 1
1435a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1436a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_inline          /*empty*/
1437a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1438a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_forceinline)
1439a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x030200ul)
1440a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1441a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
1442a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     __forceinline
1443a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
1444a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1445a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1446a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1447a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
1448a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     __forceinline
1449a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
1450a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
1451a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1452a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1453a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_forceinline)
1454a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_forceinline 1
1455a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1456a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_forceinline     /*empty*/
1457a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1458a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_noinline)
1459a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul)
1460a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __attribute__((__noinline__,__used__))
1461a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_GNUC >= 0x030200ul)
1462a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __attribute__((__noinline__))
1463a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC)
1464a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __declspec(noinline)
1465a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
1466a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __attribute__((__noinline__))
1467a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1468a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __attribute__((__noinline__))
1469a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
1470a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __declspec(noinline)
1471a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64))
1472a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__cplusplus)
1473a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1474a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_noinline      __declspec(noinline)
1475a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1476a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
1477a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        __attribute__((__noinline__))
1478a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1479a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1480a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_noinline)
1481a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_noinline 1
1482a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1483a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noinline        /*empty*/
1484a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1485a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline)
1486a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  error "this should not happen"
1487a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1488a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_noreturn)
1489a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x020700ul)
1490a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noreturn        __attribute__((__noreturn__))
1491a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
1492a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noreturn        __declspec(noreturn)
1493a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
1494a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noreturn        __attribute__((__noreturn__))
1495a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1496a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noreturn        __attribute__((__noreturn__))
1497a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
1498a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noreturn        __declspec(noreturn)
1499a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1500a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1501a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_noreturn)
1502a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_noreturn 1
1503a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1504a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_noreturn        /*empty*/
1505a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1506a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_nothrow)
1507a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x030300ul)
1508a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_nothrow         __attribute__((__nothrow__))
1509a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus)
1510a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_nothrow         __declspec(nothrow)
1511a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC)
1512a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_nothrow         __attribute__((__nothrow__))
1513a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1514a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_nothrow         __attribute__((__nothrow__))
1515a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
1516a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_nothrow         __declspec(nothrow)
1517a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1518a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1519a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_nothrow)
1520a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_nothrow 1
1521a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1522a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_nothrow         /*empty*/
1523a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1524a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_restrict)
1525a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x030400ul)
1526a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_restrict        __restrict__
1527a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
1528a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_restrict        __restrict__
1529a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM)
1530a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_restrict        __restrict__
1531a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_MSC && (_MSC_VER >= 1400))
1532a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_restrict        __restrict
1533a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1534a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1535a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_restrict)
1536a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_restrict 1
1537a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1538a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_restrict        /*empty*/
1539a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1540a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_likely) && !defined(__lzo_unlikely)
1541a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_GNUC >= 0x030200ul)
1542a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1543a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1544a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800))
1545a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1546a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1547a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1548a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
1549a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
1550a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1551a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1552a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_likely)
1553a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_likely 1
1554a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1555a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_likely(e)       (e)
1556a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1557a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__lzo_unlikely)
1558a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_HAVE_unlikely 1
1559a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1560a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_unlikely(e)     (e)
1561a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1562a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_UNUSED)
1563a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
1564a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         ((void) &var)
1565a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
1566a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         if (&var) ; else
1567a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1568a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         ((void) var)
1569a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_MSC && (_MSC_VER < 900))
1570a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         if (&var) ; else
1571a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_KEILC)
1572a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         {extern int __lzo_unused[1-2*!(sizeof(var)>0)];}
1573a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_PACIFICC)
1574a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         ((void) sizeof(var))
1575a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
1576a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         ((void) var)
1577a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1578a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED(var)         ((void) &var)
1579a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1580a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1581a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_UNUSED_FUNC)
1582a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
1583a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   ((void) func)
1584a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
1585a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   if (func) ; else
1586a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
1587a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   ((void) &func)
1588a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_MSC && (_MSC_VER < 900))
1589a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   if (func) ; else
1590a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_MSC)
1591a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   ((void) &func)
1592a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
1593a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];}
1594a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1595a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_FUNC(func)   ((void) func)
1596a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1597a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1598a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_UNUSED_LABEL)
1599a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_WATCOMC) && defined(__cplusplus)
1600a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
1601a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
1602a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_LABEL(l)     if (0) goto l
1603a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1604a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
1605a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1606a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1607a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
1608a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if 0
1609a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
1610a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif 0 && (LZO_CC_GNUC)
1611a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
1612a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1613a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
1614a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1615a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1616a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_UNCONST_CAST)
1617a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if 0 && defined(__cplusplus)
1618a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNCONST_CAST(t,e)   (const_cast<t> (e))
1619a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
1620a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e))))))
1621a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1622a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((const void *) (e)))))
1623a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1624a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1625a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
1626a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
1627a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
1628a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
1629a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1u-2*!(e)];
1630a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
1631a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
1632a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1633a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-2*!(e)];
1634a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1635a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1636a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(LZO_COMPILE_TIME_ASSERT)
1637a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_AZTECC)
1638a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-!(e)];}
1639a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
1640a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
1641a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_MSC && (_MSC_VER < 900))
1642a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
1643a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
1644a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
1645a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1646a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-2*!(e)];}
1647a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1648a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1649a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64)
1650a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC)
1651a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
1652a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl                 __cdecl
1653a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_atexit          /*empty*/
1654a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_main            __cdecl
1655a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
1656a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __lzo_cdecl_qsort         __pascal
1657a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
1658a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __lzo_cdecl_qsort         _stdcall
1659a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    else
1660a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __lzo_cdecl_qsort         __cdecl
1661a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
1662a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_WATCOMC)
1663a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl                 __cdecl
1664a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1665a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl                 __cdecl
1666a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_atexit          __cdecl
1667a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_main            __cdecl
1668a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_qsort           __cdecl
1669a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1670a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC)
1671a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
1672a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_sighandler      __pascal
1673a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
1674a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_sighandler      _stdcall
1675a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE)
1676a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_sighandler      __clrcall
1677a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700))
1678a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    if defined(_DLL)
1679a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __lzo_cdecl_sighandler    _far _cdecl _loadds
1680a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    elif defined(_MT)
1681a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __lzo_cdecl_sighandler    _far _cdecl
1682a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    else
1683a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#      define __lzo_cdecl_sighandler    _cdecl
1684a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    endif
1685a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1686a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define __lzo_cdecl_sighandler      __cdecl
1687a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1688a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC)
1689a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl                   __cdecl
1690a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC))
1691a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl                   cdecl
1692a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1693a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_cdecl)
1694a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl                   /*empty*/
1695a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1696a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_cdecl_atexit)
1697a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl_atexit            /*empty*/
1698a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1699a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_cdecl_main)
1700a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl_main              /*empty*/
1701a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1702a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_cdecl_qsort)
1703a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl_qsort             /*empty*/
1704a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1705a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_cdecl_sighandler)
1706a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl_sighandler        /*empty*/
1707a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1708a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !defined(__lzo_cdecl_va)
1709a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __lzo_cdecl_va                __lzo_cdecl
1710a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1711a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if !(LZO_CFG_NO_WINDOWS_H)
1712a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
1713a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
1714a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__)
1715a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
1716a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  else
1717a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_HAVE_WINDOWS_H 1
1718a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1719a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1720a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1721a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_ALPHA)
1722a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_UINT_INDEX  1
1723a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_SHORT       1
1724a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_USHORT      1
1725a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_AMD64)
1726a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_INT_INDEX   1
1727a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_UINT_INDEX  1
1728a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED16       1
1729a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED32       1
1730a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED64       1
1731a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB)
1732a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_ARM)
1733a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_SHORT       1
1734a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_USHORT      1
1735a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_CRIS)
1736a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED16       1
1737a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED32       1
1738a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386)
1739a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED16       1
1740a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED32       1
1741a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_IA64)
1742a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_INT_INDEX   1
1743a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_UINT_INDEX  1
1744a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_POSTINC    1
1745a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_M68K)
1746a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_POSTINC    1
1747a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_PREDEC     1
1748a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if defined(__mc68020__) && !defined(__mcoldfire__)
1749a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OPT_UNALIGNED16     1
1750a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OPT_UNALIGNED32     1
1751a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1752a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_MIPS)
1753a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_AVOID_UINT_INDEX  1
1754a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_POWERPC)
1755a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_PREINC     1
1756a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_PREDEC     1
1757a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_ABI_BIG_ENDIAN)
1758a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OPT_UNALIGNED16     1
1759a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OPT_UNALIGNED32     1
1760a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1761a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_S390)
1762a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED16       1
1763a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_UNALIGNED32       1
1764a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  if (LZO_SIZEOF_SIZE_T == 8)
1765a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#    define LZO_OPT_UNALIGNED64     1
1766a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  endif
1767a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_SH)
1768a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_POSTINC    1
1769a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_OPT_PREFER_PREDEC     1
1770a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1771a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#ifndef LZO_CFG_NO_INLINE_ASM
1772a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CC_LLVM)
1773a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CFG_NO_INLINE_ASM 1
1774a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1775a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1776a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#ifndef LZO_CFG_NO_UNALIGNED
1777a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
1778a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_CFG_NO_UNALIGNED 1
1779a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1780a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1781a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CFG_NO_UNALIGNED)
1782a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_OPT_UNALIGNED16
1783a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_OPT_UNALIGNED32
1784a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  undef LZO_OPT_UNALIGNED64
1785a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1786a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_CFG_NO_INLINE_ASM)
1787a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
1788a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ASM_SYNTAX_MSC 1
1789a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
1790a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
1791a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
1792a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ASM_SYNTAX_GNUC 1
1793a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
1794a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define LZO_ASM_SYNTAX_GNUC 1
1795a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1796a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ASM_SYNTAX_GNUC)
1797a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
1798a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_ASM_CLOBBER         "ax"
1799a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_CC_INTELC)
1800a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_ASM_CLOBBER         "memory"
1801a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1802a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_ASM_CLOBBER         "cc", "memory"
1803a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1804a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1805a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__LZO_INFOSTR_MM)
1806a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM))
1807a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_MM          ""
1808a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_MM)
1809a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_MM          "." LZO_INFO_MM
1810a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1811a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_MM          ""
1812a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1813a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__LZO_INFOSTR_PM)
1814a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_ABI_PM)
1815a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_PM          "." LZO_INFO_ABI_PM
1816a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1817a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_PM          ""
1818a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1819a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__LZO_INFOSTR_ENDIAN)
1820a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_ABI_ENDIAN)
1821a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_ENDIAN      "." LZO_INFO_ABI_ENDIAN
1822a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1823a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_ENDIAN      ""
1824a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1825a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__LZO_INFOSTR_OSNAME)
1826a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_OS_CONSOLE)
1827a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_CONSOLE
1828a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_OS_POSIX)
1829a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_POSIX
1830a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1831a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS
1832a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1833a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__LZO_INFOSTR_LIBC)
1834a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_LIBC)
1835a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_LIBC        "." LZO_INFO_LIBC
1836a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1837a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_LIBC        ""
1838a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1839a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#if defined(__LZO_INFOSTR_CCVER)
1840a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#elif defined(LZO_INFO_CCVER)
1841a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_CCVER       " " LZO_INFO_CCVER
1842a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#else
1843a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#  define __LZO_INFOSTR_CCVER       ""
1844a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif
1845a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#define LZO_INFO_STRING \
1846a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat    LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \
1847a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat    " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER
1848a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
1849a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat#endif /* already included */
1850a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat
1851a430b2b5ca4f0967836f5820e8f03adc17fc0a24San Mehat/* vim:set ts=4 et: */
1852