15d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj/* lzodefs.h -- architecture, OS and compiler specific defines
25d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
35d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   This file is part of the LZO real-time data compression library.
45d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
55d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
65d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
75d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
85d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
95d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   All Rights Reserved.
225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   The LZO library is free software; you can redistribute it and/or
245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   modify it under the terms of the GNU General Public License as
255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   published by the Free Software Foundation; either version 2 of
265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   the License, or (at your option) any later version.
275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   The LZO library is distributed in the hope that it will be useful,
295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   but WITHOUT ANY WARRANTY; without even the implied warranty of
305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   GNU General Public License for more details.
325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   You should have received a copy of the GNU General Public License
345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   along with the LZO library; see the file COPYING.
355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   If not, write to the Free Software Foundation, Inc.,
365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   Markus F.X.J. Oberhumer
395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   <markus@oberhumer.com>
405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   http://www.oberhumer.com/opensource/lzo/
415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj */
425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#ifndef __LZODEFS_H_INCLUDED
455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define __LZODEFS_H_INCLUDED 1
465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __CYGWIN__ __CYGWIN32__
495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__IBMCPP__) && !defined(__IBMC__)
515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __IBMC__ __IBMCPP__
525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER)
545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __INTEL_COMPILER __ICL
555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define _ALL_SOURCE 1
585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__mips__) && defined(__R5900__)
605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if !defined(__LONG_MAX__)
615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LONG_MAX__ 9223372036854775807L
625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__INTEL_COMPILER) && defined(__linux__)
655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  pragma warning(disable: 193)
665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__KEIL__) && defined(__C166__)
685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  pragma warning disable = 322
695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 0 && defined(__C251__)
705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  pragma warning disable = 322
715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (_MSC_VER >= 1300)
745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    pragma warning(disable: 4668)
755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 0 && defined(__WATCOMC__)
785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    pragma warning 203 9
805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  pragma option -h
845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 0
865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_0xffffL             0xfffful
875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_0xffffffffL         0xfffffffful
885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_0xffffL             65535ul
905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_0xffffffffL         4294967295ul
915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_0xffffL == LZO_0xffffffffL)
935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "your preprocessor is broken 1"
945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (16ul * 16384ul != 262144ul)
965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "your preprocessor is broken 2"
975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 0
995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (32767 >= 4294967295ul)
1005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "your preprocessor is broken 3"
1015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (65535u >= 4294967295ul)
1035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "your preprocessor is broken 4"
1045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (UINT_MAX == LZO_0xffffL)
1075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
1085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if !defined(MSDOS)
1095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define MSDOS 1
1105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
1115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if !defined(_MSDOS)
1125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define _MSDOS 1
1135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
1145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX)
1155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__VERSION == 520) && (MB_LEN_MAX == 1)
1165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__AZTEC_C__)
1175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __AZTEC_C__ __VERSION
1185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__DOS__)
1205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __DOS__ 1
1215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
1235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL)
1265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define ptrdiff_t long
1275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define _PTRDIFF_T_DEFINED 1
1285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (UINT_MAX == LZO_0xffffL)
1305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef __LZO_RENAME_A
1315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef __LZO_RENAME_B
1325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__AZTEC_C__) && defined(__DOS__)
1335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LZO_RENAME_A 1
1345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(_MSC_VER) && defined(MSDOS)
1355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if (_MSC_VER < 600)
1365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __LZO_RENAME_A 1
1375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    elif (_MSC_VER < 700)
1385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __LZO_RENAME_B 1
1395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__TSC__) && defined(__OS2__)
1415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LZO_RENAME_A 1
1425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410)
1435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LZO_RENAME_A 1
1445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__PACIFIC__) && defined(DOS)
1455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__far)
1465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __far far
1475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__near)
1495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __near near
1505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
1525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__LZO_RENAME_A)
1535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__cdecl)
1545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __cdecl cdecl
1555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__far)
1575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __far far
1585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__huge)
1605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __huge huge
1615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__near)
1635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __near near
1645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__pascal)
1665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __pascal pascal
1675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__huge)
1695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __huge huge
1705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__LZO_RENAME_B)
1725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__cdecl)
1735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __cdecl _cdecl
1745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__far)
1765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __far _far
1775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__huge)
1795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __huge _huge
1805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__near)
1825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __near _near
1835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__pascal)
1855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __pascal _pascal
1865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
1885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__cdecl)
1895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __cdecl cdecl
1905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if !defined(__pascal)
1925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __pascal pascal
1935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
1945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
1955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef __LZO_RENAME_A
1965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef __LZO_RENAME_B
1975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
1985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (UINT_MAX == LZO_0xffffL)
1995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__AZTEC_C__) && defined(__DOS__)
2005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
2015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(_MSC_VER) && defined(MSDOS)
2025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (_MSC_VER < 600)
2035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
2045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (_MSC_VER < 700)
2065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
2075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_SIZEOF 1
2085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__PACIFIC__) && defined(DOS)
2105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
2115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__TURBOC__) && defined(__MSDOS__)
2125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__TURBOC__ < 0x0150)
2135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
2145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
2155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
2165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__TURBOC__ < 0x0200)
2185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_SIZEOF 1
2195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__TURBOC__ < 0x0400) && defined(__cplusplus)
2215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
2225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
2245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
2255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_BROKEN_SIZEOF 1
2265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__WATCOMC__) && (__WATCOMC__ < 900)
2295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
2305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(_CRAY) && defined(_CRAY1)
2325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1
2335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_STRINGIZE(x)             #x
2355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_MACRO_EXPAND(x)          LZO_PP_STRINGIZE(x)
2365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_CONCAT2(a,b)             a ## b
2375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_CONCAT3(a,b,c)           a ## b ## c
2385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_CONCAT4(a,b,c,d)         a ## b ## c ## d
2395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_CONCAT5(a,b,c,d,e)       a ## b ## c ## d ## e
2405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_ECONCAT2(a,b)            LZO_PP_CONCAT2(a,b)
2415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_ECONCAT3(a,b,c)          LZO_PP_CONCAT3(a,b,c)
2425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_ECONCAT4(a,b,c,d)        LZO_PP_CONCAT4(a,b,c,d)
2435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_PP_ECONCAT5(a,b,c,d,e)      LZO_PP_CONCAT5(a,b,c,d,e)
2445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1
2455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_STRINGIZE(x)            #x
2465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_MACRO_EXPAND(x)         LZO_CPP_STRINGIZE(x)
2475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_CONCAT2(a,b)            a ## b
2485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_CONCAT3(a,b,c)          a ## b ## c
2495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_CONCAT4(a,b,c,d)        a ## b ## c ## d
2505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_CONCAT5(a,b,c,d,e)      a ## b ## c ## d ## e
2515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_ECONCAT2(a,b)           LZO_CPP_CONCAT2(a,b)
2525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_ECONCAT3(a,b,c)         LZO_CPP_CONCAT3(a,b,c)
2535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_ECONCAT4(a,b,c,d)       LZO_CPP_CONCAT4(a,b,c,d)
2545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_CPP_ECONCAT5(a,b,c,d,e)     LZO_CPP_CONCAT5(a,b,c,d,e)
2555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-1)) - (o)) << 1) + (o))
2575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1 && defined(__cplusplus)
2585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if !defined(__STDC_CONSTANT_MACROS)
2595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __STDC_CONSTANT_MACROS 1
2605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if !defined(__STDC_LIMIT_MACROS)
2625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __STDC_LIMIT_MACROS 1
2635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
2645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__cplusplus)
2665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_EXTERN_C extern "C"
2675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
2685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_EXTERN_C extern
2695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
2705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__LZO_OS_OVERRIDE)
2715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_FREESTANDING)
2725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "freestanding"
2735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_EMBEDDED)
2745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "embedded"
2755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && defined(__IAR_SYSTEMS_ICC__)
2765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_EMBEDDED       1
2775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "embedded"
2785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__CYGWIN__) && defined(__GNUC__)
2795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_CYGWIN         1
2805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "cygwin"
2815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__EMX__) && defined(__GNUC__)
2825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_EMX            1
2835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "emx"
2845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__BEOS__)
2855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_BEOS           1
2865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "beos"
2875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__Lynx__)
2885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_LYNXOS         1
2895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "lynxos"
2905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__OS400__)
2915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_OS400          1
2925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "os400"
2935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__QNX__)
2945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_QNX            1
2955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "qnx"
2965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460)
2975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_DOS32          1
2985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "dos32"
2995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__BORLANDC__) && defined(__DPMI16__)
3005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_DOS16          1
3015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "dos16"
3025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__ZTC__) && defined(DOS386)
3035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_DOS32          1
3045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "dos32"
3055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__OS2__) || defined(__OS2V2__)
3065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX == LZO_0xffffL)
3075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_OS216        1
3085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "os216"
3095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (UINT_MAX == LZO_0xffffffffL)
3105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_OS2          1
3115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "os2"
3125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
3135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "check your limits.h header"
3145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
3155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64)
3165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_WIN64          1
3175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "win64"
3185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__)
3195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_WIN32          1
3205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "win32"
3215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__MWERKS__) && defined(__INTEL__)
3225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_WIN32          1
3235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "win32"
3245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
3255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX == LZO_0xffffL)
3265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_WIN16        1
3275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "win16"
3285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (UINT_MAX == LZO_0xffffffffL)
3295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_WIN32        1
3305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "win32"
3315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
3325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "check your limits.h header"
3335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
3345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS))
3355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX == LZO_0xffffL)
3365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_DOS16        1
3375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "dos16"
3385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (UINT_MAX == LZO_0xffffffffL)
3395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_DOS32        1
3405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "dos32"
3415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
3425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "check your limits.h header"
3435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
3445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__WATCOMC__)
3455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__NT__) && (UINT_MAX == LZO_0xffffL)
3465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_DOS16        1
3475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "dos16"
3485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__NT__) && (__WATCOMC__ < 1100)
3495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_WIN32        1
3505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "win32"
3515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__linux__) || defined(__LINUX__)
3525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX        1
3535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS         "posix"
3545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
3555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "please specify a target using the -bt compiler option"
3565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
3575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__palmos__)
3585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_PALMOS         1
3595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "palmos"
3605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__TOS__) || defined(__atarist__)
3615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_TOS            1
3625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "tos"
3635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(macintosh) && !defined(__ppc__)
3645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_MACCLASSIC     1
3655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "macclassic"
3665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__VMS)
3675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_VMS            1
3685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "vms"
3695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
3705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_CONSOLE        1
3715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_CONSOLE_PS2    1
3725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "console"
3735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS_CONSOLE   "ps2"
3745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (defined(__mips__) && defined(__psp__))
3755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_CONSOLE        1
3765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_CONSOLE_PSP    1
3775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "console"
3785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS_CONSOLE   "psp"
3795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
3805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OS_POSIX          1
3815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_OS           "posix"
3825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
3835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_POSIX)
3845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(_AIX) || defined(__AIX__) || defined(__aix__)
3855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_AIX        1
3865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "aix"
3875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__FreeBSD__)
3885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_FREEBSD    1
3895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "freebsd"
3905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__hpux__) || defined(__hpux)
3915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_HPUX       1
3925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "hpux"
3935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__INTERIX)
3945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_INTERIX    1
3955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "interix"
3965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__IRIX__) || defined(__irix__)
3975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_IRIX       1
3985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "irix"
3995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
4005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_LINUX      1
4015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "linux"
4025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__APPLE__) || defined(__MACOS__)
4035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_MACOSX     1
4045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "macosx"
4055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__minix__) || defined(__minix)
4065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_MINIX      1
4075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "minix"
4085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__NetBSD__)
4095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_NETBSD     1
4105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "netbsd"
4115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__OpenBSD__)
4125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_OPENBSD    1
4135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "openbsd"
4145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__osf__)
4155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_OSF        1
4165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "osf"
4175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__solaris__) || defined(__sun)
4185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if defined(__SVR4) || defined(__svr4__)
4195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_OS_POSIX_SOLARIS  1
4205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_INFO_OS_POSIX     "solaris"
4215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    else
4225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_OS_POSIX_SUNOS    1
4235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_INFO_OS_POSIX     "sunos"
4245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
4255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__ultrix__) || defined(__ultrix)
4265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_ULTRIX     1
4275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "ultrix"
4285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(_UNICOS)
4295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_UNICOS     1
4305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "unicos"
4315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
4325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OS_POSIX_UNKNOWN    1
4335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_OS_POSIX       "unknown"
4345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
4365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
4375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
4385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX != LZO_0xffffL)
4395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
4405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (ULONG_MAX != LZO_0xffffffffL)
4425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
4435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
4455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64)
4465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX != LZO_0xffffffffL)
4475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
4485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (ULONG_MAX != LZO_0xffffffffL)
4505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
4515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
4535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
4545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_CILLY          1
4555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Cilly"
4565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__CILLY__)
4575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__CILLY__)
4585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
4595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      "unknown"
4605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__)
4625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_SDCC           1
4635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "sdcc"
4645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(SDCC)
4655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
4665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
4675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Pathscale C"
4685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        __PATHSCALE__
4695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__INTEL_COMPILER)
4705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_INTELC         1
4715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Intel C"
4725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__INTEL_COMPILER)
4735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(_WIN32) || defined(_WIN64)
4745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_SYNTAX_MSC 1
4755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
4765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_SYNTAX_GNUC 1
4775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__POCC__) && defined(_WIN32)
4795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_PELLESC        1
4805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Pelles C"
4815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__POCC__)
4825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
4835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__GNUC_PATCHLEVEL__)
4845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
4855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
4865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_CLANG_GNUC   (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
4875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__)
4895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_CLANG_CLANG  (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__)
4905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
4915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_CLANG_CLANG  0x010000L
4925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
4935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_CLANG          LZO_CC_CLANG_GNUC
4945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "clang"
4955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        __VERSION__
4965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
4975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__GNUC_PATCHLEVEL__)
4985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
4995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
5005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_LLVM_GNUC    (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
5015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
5025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_LLVM           LZO_CC_LLVM_GNUC
5035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "llvm-gcc"
5045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        __VERSION__
5055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__GNUC__) && defined(__VERSION__)
5065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
5075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
5085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__GNUC_MINOR__)
5095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
5105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
5115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
5125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
5135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "gcc"
5145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        __VERSION__
5155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__ACK__) && defined(_ACK)
5165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_ACK            1
5175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Amsterdam Compiler Kit C"
5185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        "unknown"
5195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__AZTEC_C__)
5205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_AZTECC         1
5215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Aztec C"
5225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__AZTEC_C__)
5235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__CODEGEARC__)
5245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_CODEGEARC      1
5255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "CodeGear C"
5265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__CODEGEARC__)
5275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__BORLANDC__)
5285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_BORLANDC       1
5295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Borland C"
5305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__BORLANDC__)
5315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(_CRAYC) && defined(_RELEASE)
5325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_CRAYC          1
5335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Cray C"
5345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(_RELEASE)
5355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__DMC__) && defined(__SC__)
5365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_DMC            1
5375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Digital Mars C"
5385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DMC__)
5395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__DECC)
5405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_DECC           1
5415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "DEC C"
5425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DECC)
5435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__HIGHC__)
5445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_HIGHC          1
5455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "MetaWare High C"
5465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        "unknown"
5475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IAR_SYSTEMS_ICC__)
5485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_IARC           1
5495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "IAR C"
5505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__VER__)
5515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__VER__)
5525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
5535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      "unknown"
5545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
5555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IBMC__)
5565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_IBMC           1
5575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "IBM C"
5585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMC__)
5595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__KEIL__) && defined(__C166__)
5605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_KEILC          1
5615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Keil C"
5625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__C166__)
5635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL)
5645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_LCCWIN32       1
5655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "lcc-win32"
5665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        "unknown"
5675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__LCC__)
5685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_LCC            1
5695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "lcc"
5705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__LCC_VERSION__)
5715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__LCC_VERSION__)
5725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
5735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      "unknown"
5745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
5755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(_MSC_VER)
5765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_MSC            1
5775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Microsoft C"
5785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(_MSC_FULL_VER)
5795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
5805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
5815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
5825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
5835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__MWERKS__)
5845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_MWERKS         1
5855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Metrowerks C"
5865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__MWERKS__)
5875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
5885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_NDPC           1
5895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Microway NDP C"
5905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        "unknown"
5915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__PACIFIC__)
5925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_PACIFICC       1
5935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Pacific C"
5945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PACIFIC__)
5955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
5965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_PGI            1
5975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Portland Group PGI C"
5985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        "unknown"
5995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__PUREC__) && defined(__TOS__)
6005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_PUREC          1
6015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Pure C"
6025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PUREC__)
6035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__SC__) && defined(__ZTC__)
6045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_SYMANTECC      1
6055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Symantec C"
6065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__SC__)
6075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__SUNPRO_C)
6085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "SunPro C"
6095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if ((__SUNPRO_C)+0 > 0)
6105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_SUNPROC      __SUNPRO_C
6115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_C)
6125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
6135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_SUNPROC      1
6145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      "unknown"
6155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
6165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__SUNPRO_CC)
6175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "SunPro C"
6185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if ((__SUNPRO_CC)+0 > 0)
6195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_SUNPROC      __SUNPRO_CC
6205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_CC)
6215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
6225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_CC_SUNPROC      1
6235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      "unknown"
6245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
6255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__TINYC__)
6265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_TINYC          1
6275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Tiny C"
6285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TINYC__)
6295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__TSC__)
6305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_TOPSPEEDC      1
6315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "TopSpeed C"
6325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TSC__)
6335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__WATCOMC__)
6345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_WATCOMC        1
6355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Watcom C"
6365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__WATCOMC__)
6375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__TURBOC__)
6385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_TURBOC         1
6395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Turbo C"
6405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TURBOC__)
6415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__ZTC__)
6425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_ZORTECHC       1
6435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "Zortech C"
6445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__ZTC__ == 0x310)
6455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      "0x310"
6465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
6475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__ZTC__)
6485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
6495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
6505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CC_UNKNOWN        1
6515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CC           "unknown"
6525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_CCVER        "unknown"
6535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
6545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
6555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
6565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
6575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY)
6585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY)
6595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E)
6605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_ARCH_CRAY_MPP     1
6615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    elif defined(_CRAY1)
6625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_ARCH_CRAY_PVP     1
6635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
6645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
6655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
6665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__LZO_ARCH_OVERRIDE)
6675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_GENERIC)
6685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "generic"
6695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
6705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I086             1
6715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA16             1
6725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "i086"
6735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
6745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_ALPHA            1
6755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "alpha"
6765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E))
6775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_ALPHA            1
6785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "alpha"
6795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
6805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_AMD64            1
6815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "amd64"
6825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
6835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_ARM              1
6845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_ARM_THUMB        1
6855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "arm_thumb"
6865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
6875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_ARM              1
6885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
6895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ARCH_ARM_THUMB      1
6905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "arm_thumb"
6915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
6925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "arm"
6935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
6945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "arm"
6955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
6965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__arm__) || defined(_M_ARM)
6975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_ARM              1
6985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "arm"
6995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__)
7005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_AVR              1
7015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "avr"
7025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__avr32__) || defined(__AVR32__)
7035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_AVR32            1
7045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "avr32"
7055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__bfin__)
7065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_BLACKFIN         1
7075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "blackfin"
7085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__)
7095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_C166             1
7105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "c166"
7115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__cris__)
7125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_CRIS             1
7135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "cris"
7145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__)
7155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_EZ80             1
7165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "ez80"
7175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
7185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_H8300            1
7195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "h8300"
7205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__hppa__) || defined(__hppa)
7215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_HPPA             1
7225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "hppa"
7235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386)
7245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I386             1
7255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA32             1
7265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "i386"
7275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_ZORTECHC && defined(__I86__))
7285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I386             1
7295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA32             1
7305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "i386"
7315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386)
7325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I386             1
7335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA32             1
7345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "i386"
7355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
7365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA64             1
7375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "ia64"
7385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__)
7395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_M16C             1
7405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "m16c"
7415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__)
7425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_M16C             1
7435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "m16c"
7445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__m32r__)
7455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_M32R             1
7465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "m32r"
7475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
7485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_M68K             1
7495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "m68k"
7505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__)
7515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_MCS251           1
7525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "mcs251"
7535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__)
7545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_MCS51            1
7555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "mcs51"
7565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
7575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_MCS51            1
7585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "mcs51"
7595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
7605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_MIPS             1
7615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "mips"
7625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__)
7635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_MSP430           1
7645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "msp430"
7655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
7665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_MSP430           1
7675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "msp430"
7685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
7695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_POWERPC          1
7705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "powerpc"
7715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
7725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_S390             1
7735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "s390"
7745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__sh__) || defined(_M_SH)
7755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_SH               1
7765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "sh"
7775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8)
7785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_SPARC            1
7795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "sparc"
7805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__SPU__)
7815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_SPU              1
7825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "spu"
7835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (UINT_MAX == LZO_0xffffL) && defined(__z80)
7845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_Z80              1
7855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "z80"
7865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_CRAY_PVP)
7875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(_CRAYSV1)
7885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ARCH_CRAY_SV1       1
7895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "cray_sv1"
7905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (_ADDR64)
7915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ARCH_CRAY_T90       1
7925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "cray_t90"
7935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (_ADDR32)
7945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ARCH_CRAY_YMP       1
7955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "cray_ymp"
7965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
7975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ARCH_CRAY_XMP       1
7985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_INFO_ARCH           "cray_xmp"
7995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
8015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_UNKNOWN          1
8025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ARCH             "unknown"
8035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2)
8065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - missing define for CPU architecture"
8075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32)
8095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - missing WIN32 define for CPU architecture"
8105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64)
8125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - missing WIN64 define for CPU architecture"
8135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_OS216 || LZO_OS_WIN16)
8155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I086PM           1
8165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA16PM           1
8175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_OS_DOS16 && defined(BLX286))
8185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I086PM           1
8195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA16PM           1
8205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_OS_DOS16 && defined(DOSX286))
8215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I086PM           1
8225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA16PM           1
8235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__))
8245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_I086PM           1
8255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ARCH_IA16PM           1
8265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM)
8285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "this should not happen"
8295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086)
8315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "this should not happen"
8325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086)
8345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX != LZO_0xffffL)
8355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
8365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (ULONG_MAX != LZO_0xffffffffL)
8385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
8395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I386)
8425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__)
8435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
8445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__)
8465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
8475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (ULONG_MAX != LZO_0xffffffffL)
8495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
8505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__LZO_MM_OVERRIDE)
8535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086)
8545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (UINT_MAX != LZO_0xffffL)
8555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "this should not happen"
8565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
8585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_TINY           1
8595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM)
8605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_HUGE           1
8615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL)
8625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_SMALL          1
8635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM)
8645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_MEDIUM         1
8655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM)
8665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_COMPACT        1
8675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL)
8685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_LARGE          1
8695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_AZTECC)
8705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(_LARGE_CODE) && defined(_LARGE_DATA)
8715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_MM_LARGE        1
8725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(_LARGE_CODE)
8735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_MM_MEDIUM       1
8745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(_LARGE_DATA)
8755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_MM_COMPACT      1
8765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
8775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_MM_SMALL        1
8785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
8795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_ZORTECHC && defined(__VCM__))
8805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_LARGE          1
8815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
8825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "unknown memory model"
8835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
8855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_HAVE_MM_HUGE_PTR        1
8865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_HAVE_MM_HUGE_ARRAY      1
8875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_MM_TINY)
8885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_HAVE_MM_HUGE_ARRAY
8895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
8905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC)
8915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_HAVE_MM_HUGE_PTR
8925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_HAVE_MM_HUGE_ARRAY
8935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
8945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_HAVE_MM_HUGE_ARRAY
8955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && defined(_QC))
8965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_HAVE_MM_HUGE_ARRAY
8975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (_MSC_VER < 600)
8985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    undef LZO_HAVE_MM_HUGE_PTR
8995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
9005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295))
9015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_HAVE_MM_HUGE_ARRAY
9025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR)
9045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_OS_DOS16)
9055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
9065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_ZORTECHC)
9075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
9085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "this should not happen"
9095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
9105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#ifdef __cplusplus
9125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardjextern "C" {
9135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
9155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   extern void __near __cdecl _AHSHIFT(void);
9165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
9175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
9185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   extern void __near __cdecl _AHSHIFT(void);
9195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
9205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC)
9215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   extern void __near __cdecl _AHSHIFT(void);
9225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
9235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295))
9245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   extern void __near __cdecl _AHSHIFT(void);
9255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
9265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16)
9275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_AHSHIFT      12
9285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_WATCOMC)
9295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj   extern unsigned char _HShift;
9305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_AHSHIFT      ((unsigned) _HShift)
9315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
9325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - implement LZO_MM_AHSHIFT"
9335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#ifdef __cplusplus
9355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj}
9365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_C166)
9395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__MODEL__)
9405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - C166 __MODEL__"
9415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 0)
9425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_SMALL          1
9435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 1)
9445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_SMALL          1
9455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 2)
9465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_LARGE          1
9475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 3)
9485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_TINY           1
9495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 4)
9505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_XTINY          1
9515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 5)
9525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_XSMALL         1
9535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
9545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - C166 __MODEL__"
9555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_MCS251)
9575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__MODEL__)
9585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - MCS251 __MODEL__"
9595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 0)
9605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_SMALL          1
9615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 2)
9625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_LARGE          1
9635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 3)
9645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_TINY           1
9655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 4)
9665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_XTINY          1
9675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 5)
9685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_XSMALL         1
9695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
9705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - MCS251 __MODEL__"
9715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_MCS51)
9735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__MODEL__)
9745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - MCS51 __MODEL__"
9755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 1)
9765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_SMALL          1
9775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 2)
9785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_LARGE          1
9795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 3)
9805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_TINY           1
9815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 4)
9825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_XTINY          1
9835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((__MODEL__) == 5)
9845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_XSMALL         1
9855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
9865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "FIXME - MCS51 __MODEL__"
9875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_CRAY_PVP)
9895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_PVP            1
9905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
9915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_MM_FLAT           1
9925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
9935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_MM_COMPACT)
9945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "compact"
9955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_FLAT)
9965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "flat"
9975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_HUGE)
9985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "huge"
9995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_LARGE)
10005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "large"
10015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_MEDIUM)
10025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "medium"
10035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_PVP)
10045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "pvp"
10055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_SMALL)
10065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "small"
10075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_TINY)
10085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_MM           "tiny"
10095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
10105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "unknown memory model"
10115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_SHORT)
10145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
10155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_INT)
10175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_INT            (SIZEOF_INT)
10185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_LONG)
10205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
10215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_LONG_LONG)
10235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
10245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF___INT16)
10265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
10275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF___INT32)
10295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
10305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF___INT64)
10325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
10335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_VOID_P)
10355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
10365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_SIZE_T)
10385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
10395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(SIZEOF_PTRDIFF_T)
10415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
10425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
10445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_SHORT)
10455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_ARCH_CRAY_PVP)
10465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        8
10475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (USHRT_MAX == LZO_0xffffL)
10485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        2
10495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
10505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        1
10515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
10525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        2
10535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
10545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        4
10555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
10565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        8
10575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
10585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SHORT        16
10595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
10605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "LZO_SIZEOF_SHORT"
10615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
10625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_INT)
10645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_ARCH_CRAY_PVP)
10655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          8
10665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (UINT_MAX == LZO_0xffffL)
10675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          2
10685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (UINT_MAX == LZO_0xffffffffL)
10695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          4
10705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(UINT_MAX,7) == 1)
10715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          1
10725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(UINT_MAX,15) == 1)
10735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          2
10745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(UINT_MAX,31) == 1)
10755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          4
10765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(UINT_MAX,63) == 1)
10775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          8
10785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(UINT_MAX,127) == 1)
10795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_INT          16
10805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
10815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "LZO_SIZEOF_INT"
10825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
10835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
10845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_LONG)
10855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (ULONG_MAX == LZO_0xffffffffL)
10865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_LONG         4
10875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
10885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_LONG         1
10895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
10905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_LONG         2
10915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
10925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_LONG         4
10935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
10945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_LONG         8
10955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
10965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_LONG         16
10975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
10985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "LZO_SIZEOF_LONG"
10995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
11025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
11035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
11045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if (LZO_CC_GNUC >= 0x030300ul)
11055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
11065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
11075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
11085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#        define LZO_SIZEOF_LONG_LONG      4
11095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      endif
11105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
11115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
11155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
11165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086 && LZO_CC_DMC)
11175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CILLY) && defined(__GNUC__)
11185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
11205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
11225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_WIN64 || defined(_WIN64))
11245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        8
11255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
11265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
11285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
11305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
11325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
11345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        8
11355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
11365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        8
11375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
11385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        8
11395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
11405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        8
11415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
11425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF___INT64        8
11435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
11445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
11465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
11485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
11495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_LONG_LONG      8
11505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__cplusplus) && (LZO_CC_GNUC)
11545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_GNUC < 0x020800ul)
11555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    undef LZO_SIZEOF_LONG_LONG
11565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
11595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_SIZEOF_LONG_LONG
11605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
11615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_VOID_P)
11625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086)
11635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            2
11645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
11655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       2
11665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
11675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       4
11685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
11695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "LZO_MM"
11705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_AVR || LZO_ARCH_Z80)
11725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            1
11735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         2
11745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
11755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         2
11765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_H8300)
11775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__NORMAL_MODE__)
11785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LZO_WORDSIZE          4
11795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       2
11805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
11815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LZO_WORDSIZE          4
11825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       4
11835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
11845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __LZO_WORDSIZE          2
11855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       2
11865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
11885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
11895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
11905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_M16C)
11925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            2
11935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
11945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       4
11955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
11965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_VOID_P       2
11975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
11985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
11995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            8
12005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         4
12015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
12025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            8
12035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         8
12045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
12055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
12065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
12075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
12085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_OS400 || defined(__OS400__))
12095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            LZO_SIZEOF_LONG
12105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         16
12115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
12125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
12135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
12145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         8
12155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
12165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
12175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_SPU)
12185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj# if 0
12195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_WORDSIZE            16
12205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj# endif
12215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         4
12225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
12235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
12245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_WORDSIZE)
12275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__LZO_WORDSIZE)
12285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_WORDSIZE            __LZO_WORDSIZE
12295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
12305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_WORDSIZE            LZO_SIZEOF_VOID_P
12315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
12325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_SIZE_T)
12345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
12355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SIZE_T         2
12365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
12375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
12385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_SIZEOF_PTRDIFF_T)
12415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I086)
12425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
12435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
12445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
12455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
12465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_SIZEOF_PTRDIFF_T  4
12475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    else
12485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define LZO_SIZEOF_PTRDIFF_T  2
12495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
12505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
12515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    error "LZO_MM"
12525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
12535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
12545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
12555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ABI_NEUTRAL_ENDIAN)
12585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_ABI_BIG_ENDIAN
12595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_ABI_LITTLE_ENDIAN
12605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN)
12615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
12625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_BIG_ENDIAN        1
12635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64)
12645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LITTLE_ENDIAN     1
12655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
12665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LITTLE_ENDIAN     1
12675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390)
12685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_BIG_ENDIAN        1
12695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
12705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (__LITTLE_ENDIAN__ == 1)
12715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ABI_LITTLE_ENDIAN   1
12725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
12735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_ABI_BIG_ENDIAN      1
12745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
12755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
12765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_BIG_ENDIAN        1
12775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
12785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LITTLE_ENDIAN     1
12795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
12805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_BIG_ENDIAN        1
12815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
12825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LITTLE_ENDIAN     1
12835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
12845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_BIG_ENDIAN        1
12855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
12865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LITTLE_ENDIAN     1
12875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
12905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "this should not happen"
12915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ABI_BIG_ENDIAN)
12935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_ENDIAN       "be"
12945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ABI_LITTLE_ENDIAN)
12955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_ENDIAN       "le"
12965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ABI_NEUTRAL_ENDIAN)
12975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_ENDIAN       "neutral"
12985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
12995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
13005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_I8LP16         1
13015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "i8lp16"
13025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
13035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_ILP16         1
13045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "ilp16"
13055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
13065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_ILP32         1
13075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "ilp32"
13085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
13095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LLP64         1
13105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "llp64"
13115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
13125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_LP64          1
13135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "lp64"
13145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
13155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_ILP64         1
13165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "ilp64"
13175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
13185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ABI_IP32L64       1
13195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_ABI_PM       "ip32l64"
13205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__LZO_LIBC_OVERRIDE)
13225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_LIBC_NAKED)
13235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "naked"
13245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_LIBC_FREESTANDING)
13255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "freestanding"
13265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_LIBC_MOSTLY_FREESTANDING)
13275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "mfreestanding"
13285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_LIBC_ISOC90)
13295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "isoc90"
13305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_LIBC_ISOC99)
13315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "isoc99"
13325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__dietlibc__)
13335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_LIBC_DIETLIBC     1
13345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "dietlibc"
13355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(_NEWLIB_VERSION)
13365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_LIBC_NEWLIB       1
13375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "newlib"
13385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
13395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__UCLIBC_SUBLEVEL__)
13405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
13415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
13425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_LIBC_UCLIBC     0x00090bL
13435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
13445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "uclibc"
13455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
13465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100)
13475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "glibc"
13485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MWERKS) && defined(__MSL__)
13495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_LIBC_MSL          __MSL__
13505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "msl"
13515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif 1 && defined(__IAR_SYSTEMS_ICC__)
13525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_LIBC_ISOC90       1
13535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "isoc90"
13545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
13555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_LIBC_DEFAULT      1
13565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_INFO_LIBC         "default"
13575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_gnuc_extension__)
13605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x020800ul)
13615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_gnuc_extension__    __extension__
13625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
13635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_gnuc_extension__    __extension__
13645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
13655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_gnuc_extension__    /*empty*/
13665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_ua_volatile)
13695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_ua_volatile     volatile
13705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_alignof)
13725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
13735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_alignof(e)      __alignof__(e)
13745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
13755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_alignof(e)      __alignof__(e)
13765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
13775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_alignof(e)      __alignof(e)
13785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
13795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_alignof(e)      __alignof__(e)
13805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_alignof)
13835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_alignof 1
13845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_constructor)
13865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x030400ul)
13875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_constructor     __attribute__((__constructor__,__used__))
13885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_GNUC >= 0x020700ul)
13895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_constructor     __attribute__((__constructor__))
13905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
13915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_constructor     __attribute__((__constructor__))
13925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_constructor)
13955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_constructor 1
13965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
13975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_destructor)
13985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x030400ul)
13995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_destructor      __attribute__((__destructor__,__used__))
14005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_GNUC >= 0x020700ul)
14015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_destructor      __attribute__((__destructor__))
14025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
14035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_destructor      __attribute__((__destructor__))
14045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_destructor)
14075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_destructor 1
14085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
14105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "this should not happen"
14115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_inline)
14135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295))
14145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__cplusplus)
14155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          inline
14165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
14175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline
14185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
14195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline__
14205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_DMC)
14215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline
14225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC)
14235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline
14245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405))
14255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline
14265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 900))
14275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline
14285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
14295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          __inline__
14305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
14315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          inline
14325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_inline)
14355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_inline 1
14365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
14375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_inline          /*empty*/
14385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_forceinline)
14405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x030200ul)
14415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
14425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
14435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     __forceinline
14445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
14455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
14465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
14475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
14485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
14495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     __forceinline
14505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
14515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
14525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_forceinline)
14555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_forceinline 1
14565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
14575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_forceinline     /*empty*/
14585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_noinline)
14605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul)
14615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __attribute__((__noinline__,__used__))
14625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_GNUC >= 0x030200ul)
14635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __attribute__((__noinline__))
14645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC)
14655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __declspec(noinline)
14665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
14675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __attribute__((__noinline__))
14685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
14695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __attribute__((__noinline__))
14705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
14715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __declspec(noinline)
14725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64))
14735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__cplusplus)
14745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
14755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_noinline      __declspec(noinline)
14765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
14775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100))
14785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        __attribute__((__noinline__))
14795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_noinline)
14825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_noinline 1
14835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
14845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noinline        /*empty*/
14855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline)
14875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  error "this should not happen"
14885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
14895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_noreturn)
14905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x020700ul)
14915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noreturn        __attribute__((__noreturn__))
14925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
14935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noreturn        __declspec(noreturn)
14945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
14955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noreturn        __attribute__((__noreturn__))
14965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
14975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noreturn        __attribute__((__noreturn__))
14985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
14995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noreturn        __declspec(noreturn)
15005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_noreturn)
15035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_noreturn 1
15045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
15055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_noreturn        /*empty*/
15065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_nothrow)
15085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x030300ul)
15095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_nothrow         __attribute__((__nothrow__))
15105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus)
15115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_nothrow         __declspec(nothrow)
15125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC)
15135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_nothrow         __attribute__((__nothrow__))
15145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
15155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_nothrow         __attribute__((__nothrow__))
15165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
15175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_nothrow         __declspec(nothrow)
15185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_nothrow)
15215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_nothrow 1
15225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
15235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_nothrow         /*empty*/
15245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_restrict)
15265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x030400ul)
15275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_restrict        __restrict__
15285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
15295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_restrict        __restrict__
15305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM)
15315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_restrict        __restrict__
15325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_MSC && (_MSC_VER >= 1400))
15335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_restrict        __restrict
15345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_restrict)
15375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_restrict 1
15385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
15395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_restrict        /*empty*/
15405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_likely) && !defined(__lzo_unlikely)
15425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_GNUC >= 0x030200ul)
15435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
15445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
15455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800))
15465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
15475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
15485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE)
15495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
15505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
15515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_likely)
15545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_likely 1
15555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
15565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_likely(e)       (e)
15575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__lzo_unlikely)
15595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_HAVE_unlikely 1
15605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
15615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_unlikely(e)     (e)
15625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_UNUSED)
15645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
15655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         ((void) &var)
15665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
15675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         if (&var) ; else
15685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
15695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         ((void) var)
15705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_MSC && (_MSC_VER < 900))
15715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         if (&var) ; else
15725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_KEILC)
15735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         {extern int __lzo_unused[1-2*!(sizeof(var)>0)];}
15745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_PACIFICC)
15755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         ((void) sizeof(var))
15765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
15775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         ((void) var)
15785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
15795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED(var)         ((void) &var)
15805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
15815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_UNUSED_FUNC)
15835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
15845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   ((void) func)
15855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
15865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   if (func) ; else
15875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_CLANG || LZO_CC_LLVM)
15885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   ((void) &func)
15895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_MSC && (_MSC_VER < 900))
15905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   if (func) ; else
15915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_MSC)
15925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   ((void) &func)
15935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
15945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];}
15955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
15965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_FUNC(func)   ((void) func)
15975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
15985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
15995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_UNUSED_LABEL)
16005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_WATCOMC) && defined(__cplusplus)
16015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
16025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC)
16035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_LABEL(l)     if (0) goto l
16045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
16065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
16095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if 0
16105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
16115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif 0 && (LZO_CC_GNUC)
16125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
16135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
16155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_UNCONST_CAST)
16185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if 0 && defined(__cplusplus)
16195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNCONST_CAST(t,e)   (const_cast<t> (e))
16205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
16215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e))))))
16225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_UNCONST_CAST(t,e)   ((t) ((void *) ((char *) ((const void *) (e)))))
16245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
16275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
16285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
16295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
16305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1u-2*!(e)];
16315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
16325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
16335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-2*!(e)];
16355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(LZO_COMPILE_TIME_ASSERT)
16385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_AZTECC)
16395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-!(e)];}
16405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
16415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
16425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_MSC && (_MSC_VER < 900))
16435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
16445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
16455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
16465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-2*!(e)];}
16485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#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)
16515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC)
16525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
16535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl                 __cdecl
16545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_atexit          /*empty*/
16555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_main            __cdecl
16565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
16575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __lzo_cdecl_qsort         __pascal
16585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
16595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __lzo_cdecl_qsort         _stdcall
16605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    else
16615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __lzo_cdecl_qsort         __cdecl
16625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
16635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_WATCOMC)
16645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl                 __cdecl
16655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl                 __cdecl
16675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_atexit          __cdecl
16685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_main            __cdecl
16695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_qsort           __cdecl
16705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC)
16725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
16735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_sighandler      __pascal
16745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
16755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_sighandler      _stdcall
16765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE)
16775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_sighandler      __clrcall
16785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700))
16795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    if defined(_DLL)
16805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __lzo_cdecl_sighandler    _far _cdecl _loadds
16815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    elif defined(_MT)
16825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __lzo_cdecl_sighandler    _far _cdecl
16835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    else
16845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#      define __lzo_cdecl_sighandler    _cdecl
16855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    endif
16865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
16875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define __lzo_cdecl_sighandler      __cdecl
16885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
16895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC)
16905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl                   __cdecl
16915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC))
16925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl                   cdecl
16935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_cdecl)
16955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl                   /*empty*/
16965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
16975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_cdecl_atexit)
16985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl_atexit            /*empty*/
16995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_cdecl_main)
17015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl_main              /*empty*/
17025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_cdecl_qsort)
17045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl_qsort             /*empty*/
17055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_cdecl_sighandler)
17075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl_sighandler        /*empty*/
17085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !defined(__lzo_cdecl_va)
17105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __lzo_cdecl_va                __lzo_cdecl
17115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if !(LZO_CFG_NO_WINDOWS_H)
17135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
17145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
17155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__)
17165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
17175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  else
17185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_HAVE_WINDOWS_H 1
17195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
17205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_ALPHA)
17235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_UINT_INDEX  1
17245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_SHORT       1
17255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_USHORT      1
17265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_AMD64)
17275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_INT_INDEX   1
17285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_UINT_INDEX  1
17295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED16       1
17305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED32       1
17315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED64       1
17325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB)
17335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_ARM)
17345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_SHORT       1
17355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_USHORT      1
17365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_CRIS)
17375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED16       1
17385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED32       1
17395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386)
17405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED16       1
17415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED32       1
17425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_IA64)
17435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_INT_INDEX   1
17445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_UINT_INDEX  1
17455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_POSTINC    1
17465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_M68K)
17475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_POSTINC    1
17485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_PREDEC     1
17495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if defined(__mc68020__) && !defined(__mcoldfire__)
17505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OPT_UNALIGNED16     1
17515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OPT_UNALIGNED32     1
17525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
17535d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_MIPS)
17545d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_AVOID_UINT_INDEX  1
17555d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_POWERPC)
17565d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_PREINC     1
17575d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_PREDEC     1
17585d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_ABI_BIG_ENDIAN)
17595d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OPT_UNALIGNED16     1
17605d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OPT_UNALIGNED32     1
17615d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
17625d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_S390)
17635d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED16       1
17645d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_UNALIGNED32       1
17655d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  if (LZO_SIZEOF_SIZE_T == 8)
17665d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#    define LZO_OPT_UNALIGNED64     1
17675d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  endif
17685d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_SH)
17695d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_POSTINC    1
17705d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_OPT_PREFER_PREDEC     1
17715d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17725d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#ifndef LZO_CFG_NO_INLINE_ASM
17735d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CC_LLVM)
17745d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CFG_NO_INLINE_ASM 1
17755d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17765d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17775d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#ifndef LZO_CFG_NO_UNALIGNED
17785d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
17795d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_CFG_NO_UNALIGNED 1
17805d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17815d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17825d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CFG_NO_UNALIGNED)
17835d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_OPT_UNALIGNED16
17845d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_OPT_UNALIGNED32
17855d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  undef LZO_OPT_UNALIGNED64
17865d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17875d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_CFG_NO_INLINE_ASM)
17885d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
17895d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ASM_SYNTAX_MSC 1
17905d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
17915d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul))
17925d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
17935d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ASM_SYNTAX_GNUC 1
17945d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
17955d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define LZO_ASM_SYNTAX_GNUC 1
17965d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
17975d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ASM_SYNTAX_GNUC)
17985d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
17995d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_ASM_CLOBBER         "ax"
18005d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_CC_INTELC)
18015d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_ASM_CLOBBER         "memory"
18025d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18035d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_ASM_CLOBBER         "cc", "memory"
18045d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18055d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18065d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__LZO_INFOSTR_MM)
18075d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM))
18085d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_MM          ""
18095d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_MM)
18105d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_MM          "." LZO_INFO_MM
18115d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18125d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_MM          ""
18135d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18145d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__LZO_INFOSTR_PM)
18155d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_ABI_PM)
18165d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_PM          "." LZO_INFO_ABI_PM
18175d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18185d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_PM          ""
18195d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18205d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__LZO_INFOSTR_ENDIAN)
18215d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_ABI_ENDIAN)
18225d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_ENDIAN      "." LZO_INFO_ABI_ENDIAN
18235d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18245d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_ENDIAN      ""
18255d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18265d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__LZO_INFOSTR_OSNAME)
18275d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_OS_CONSOLE)
18285d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_CONSOLE
18295d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_OS_POSIX)
18305d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_POSIX
18315d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18325d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS
18335d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18345d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__LZO_INFOSTR_LIBC)
18355d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_LIBC)
18365d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_LIBC        "." LZO_INFO_LIBC
18375d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18385d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_LIBC        ""
18395d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18405d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#if defined(__LZO_INFOSTR_CCVER)
18415d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#elif defined(LZO_INFO_CCVER)
18425d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_CCVER       " " LZO_INFO_CCVER
18435d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#else
18445d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#  define __LZO_INFOSTR_CCVER       ""
18455d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif
18465d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#define LZO_INFO_STRING \
18475d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj    LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \
18485d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj    " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER
18495d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
18505d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj#endif /* already included */
18515d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj
18525d616dfbb8439dfd51a40ddf1dba970938baa1ebsewardj/* vim:set ts=4 et: */
1853