#ifndef Py_CONFIG_H
#define Py_CONFIG_H

/**********************************************************************
 * config.h.  NOT Generated automatically by configure.
 *
 * This is a manually maintained version used for the Watcom,
 * Borland and Microsoft Visual C++ compilers on the MS Windows
 * platform, and the IBM VisualAge C/C++ compiler on the OS/2
 * platform.  It is a standard part of the Python distribution.
 *
 * FILESYSTEM DEFINES:
 * The code specific to a particular way of naming files and
 * directory paths should be wrapped around one of the following
 * #defines:
 *
 *     DOSFILESYS   PCDOS-Style (for PCDOS, Windows and OS/2)
 *     MACFILESYS   Macintosh-Style
 *     UNIXFILESYS  Unix-Style
 *     AMIGAFILESYS AmigaDOS-Style (to-be-supported)
 * 
 * Because of the different compilers and operating systems in
 * use on the Intel platform, neither the compiler name nor
 * the operating system name is sufficient.
 *
 * WINDOWS DEFINES:
 * The code specific to Windows should be wrapped around one of
 * the following #defines
 *
 * MS_WIN32 - Code specific to the MS Win32 API
 * MS_WIN16 - Code specific to the old 16 bit Windows API.
 * MS_WINDOWS - Code specific to Windows, but all versions.
 * MS_COREDLL - Code if the Python core is built as a DLL.
 *
 * Note that the old defines "NT" and "WIN32" are still supported, but
 * will soon be dropped.
 *
 * Also note that neither "_M_IX86" or "_MSC_VER" should be used for
 * any purpose other than "Windows Intel x86 specific" and "Microsoft
 * compiler specific".  Therefore, these should be very rare.
 *
 * OS/2 DEFINES:
 * The code specific to OS/2's Program API should be wrapped around
 *
 * __TOS_OS2__   Target Operating System, OS/2
 *
 * Any code specific to the compiler itself should be wrapped with
 *
 * __IBMC__      IBM C Compiler
 * __IBMCPP__    IBM C++ Compiler
 *
 * Note that since the VisualAge C/C++ compiler is also available
 * for the Windows platform, it may be necessary to use both a
 * __TOS_OS2__ and a __IBMC__ to select a very specific environment.
 *
 **********************************************************************/

/*
 * Some systems require special declarations for data items imported
 * or exported from dynamic link libraries.  Note that the definition
 * of DL_IMPORT covers both cases.  Define USE_DL_IMPORT for the client
 * of a DLL.  Define USE_DL_EXPORT when making a DLL.
 */

#include <io.h>

#define HAVE_LIMITS_H
#define HAVE_HYPOT
#define DONT_HAVE_SIG_ALARM
#define DONT_HAVE_SIG_PAUSE

#define LONG_BIT               32

/* Configuration Options for Finding Modules */
#define PREFIX                 ""
#define EXEC_PREFIX            ""

/***************************************************/
/*    32-Bit IBM VisualAge C/C++ v3.0 for OS/2     */
/*  (Convert Compiler Flags into Useful Switches)  */
/***************************************************/
#if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)

  #define COMPILER "[VisualAge C/C++]"
  #define PYOS_OS2   /* Define Indicator of Operating System */
  #define PYCC_VACPP /* Define Indicator of C Compiler */

  /* Platform Filesystem */
  #define PYTHONPATH ".;.\\lib;.\\lib\\plat-win;.\\lib\\dos-8x3;.\\lib\\lib-tk"
  #define DOSFILESYS /* OS/2 Uses the DOS File Naming Conventions */
  /* #define IMPORT_8x3_NAMES */

  /* Platform CPU-Mode Dependencies */
  #define WORD_BIT  32  /* OS/2 is a 32-Bit Operating System */

  typedef int mode_t;
  typedef int uid_t;
  typedef int gid_t;
  typedef int pid_t;

  #if defined(__MULTI__)  /* If Compiler /Gt+ Multithread Option Enabled,  */
    #define WITH_THREAD     /* Then Enable Threading Throughout Python     */
    #define OS2_THREADS     /* And Use the OS/2 Flavor of Threads          */
  #endif

  /* Compiler Runtime Library Capabilities */
#include <ctype.h>
#include <direct.h>

  /* #define VA_LIST_IS_ARRAY */
  #define HAVE_CLOCK        /* We support all of the Unix clock() API      */
  #define HAVE_STRFTIME     /* We have a strftime() formatting function    */
  #define HAVE_PUTENV       /* We have a putenv() function                 */
  #define HAVE_SYS_SELECT_H /* We have sys/select.h (under TCP/IP dirs)    */
  #define HAVE_PROTOTYPES   /* Our Compiler Supports C Function Prototypes */

  #ifdef USE_DL_EXPORT
    #define DL_IMPORT(RTYPE) RTYPE _Export
  #endif

#endif /* VAC++ for OS/2 */

/***************************************************/
/* 32-Bit Microsoft Visual C/C++ v2.0+ for Windows */
/*  (Convert Compiler Flags into Useful Switches)  */
/***************************************************/
#if defined(_MSC_VER) && _MSC_VER > 850
  /* Start of defines for MS_WIN32 using VC++ 2.0 and up */
  #define NT        /* NT is obsolete - please use MS_WIN32 instead */
  #define MS_WIN32
  #define MS_WINDOWS

  /* For NT the Python core is in a DLL by default.  Test the
   * standard macro MS_COREDLL to find out.  If you have an exception
   * you must define MS_NO_COREDLL (do not test this macro)
   */
  #ifndef MS_NO_COREDLL
    #define MS_COREDLL  /* Python core is in a DLL */
    #ifndef USE_DL_EXPORT
      #define USE_DL_IMPORT
    #endif /* !USE_DL_EXPORT */
  #endif /* !MS_NO_COREDLL */

  #ifdef _M_IX86
    #define COMPILER "[MSC 32 bit (Intel)]"
  #else
    #define COMPILER "[MSC (Unknown)]"
  #endif

  /* Platform Filesystem */
  #define PYTHONPATH ".\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
  #define DOSFILESYS /* Windows Uses the DOS File Naming Conventions */

  /* Platform CPU-Mode Dependencies */
  #define WORD_BIT 32

  typedef int pid_t;
  #define hypot _hypot

  /* Compiler Runtime Library Capabilities */
  #pragma warning(disable:4113)
  #include <stdio.h>

  #define HAVE_CLOCK        /* We support all of the Unix clock() API      */
  #define HAVE_STRFTIME     /* We have a strftime() formatting function    */
  #define NT_THREADS
  #define WITH_THREAD

  #ifndef NETSCAPE_PI
    #define USE_SOCKET
  #endif

  #ifdef USE_DL_IMPORT
    #define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
  #endif

  #ifdef USE_DL_EXPORT
    #define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
  #endif
#endif /* _MSC_VER && > 850 */

/***************************************************/
/* 16-Bit Microsoft Visual C/C++ v1.5+ for Windows */
/*  (Convert Compiler Flags into Useful Switches)  */
/***************************************************/
#if defined(_MSC_VER) && _MSC_VER <= 850
  #define COMPILER "[MSC 16-bit]"
  #define MS_WIN16
  #define MS_WINDOWS

  /* Platform Filesystem */
  #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
  #define IMPORT_8x3_NAMES
  #define DOSFILESYS /* Windows Uses the DOS File Naming Conventions */

  /* Platform CPU-Mode Dependencies */
  #define WORD_BIT 16

  typedef int pid_t;

  /* Compiler Runtime Library Capabilities */
  #pragma warning(disable:4113)
  #define memcpy memmove  /* memcpy dangerous pointer wrap in Win 3.1 */
  #define hypot _hypot
  #define SIGINT  2

#include <stdio.h>

  /* Windows 3.1 will not tolerate any console io in a dll */

  #ifdef _USRDLL
    #include <time.h>

    #ifdef __cplusplus
      extern "C" {
    #endif

    #define stdin   ((FILE *)0)
    #define stdout  ((FILE *)1)
    #define stderr  ((FILE *)2)

    #define fflush  Py_fflush
    int Py_fflush(FILE *);

    #define fgets   Py_fgets
    char *Py_fgets(char *, int, FILE *);

    #define fileno  Py_fileno
    int Py_fileno(FILE *);

    #define fprintf Py_fprintf
    int Py_fprintf(FILE *, const char *, ...);

    #define printf  Py_printf
    int Py_printf(const char *, ...);

    #define sscanf  Py_sscanf
    int Py_sscanf(const char *, const char *, ...);

    clock_t  clock();
    void     _exit(int);
    void     exit(int);
    int      sscanf(const char *, const char *, ...);

    #ifdef __cplusplus
      }
    #endif
  #endif /* _USRDLL */

  #ifndef NETSCAPE_PI
    /* use sockets, but not in a Netscape dll */
    #define USE_SOCKET
  #endif
#endif /* MS_WIN16 */

/***************************************************/
/*      32-Bit Watcom C/C++ v?.? for Windows       */
/*  (Convert Compiler Flags into Useful Switches)  */
/***************************************************/
#ifdef __WATCOMC__
  #define COMPILER "[Watcom]"

  /* Platform Filesystem */
  #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
  #define IMPORT_8x3_NAMES
  #define DOSFILESYS /* Watcom Uses the DOS File Naming Conventions */

  typedef int mode_t;
  typedef int uid_t;
  typedef int gid_t;
  typedef int pid_t;

  #if defined(__NT__)
    #define NT  /* NT is obsolete - please use MS_WIN32 instead */
    #define MS_WIN32
    #define MS_WINDOWS
    #define NT_THREADS
    #define USE_SOCKET
    #define WITH_THREAD
  #elif defined(__WINDOWS__)
    #define MS_WIN16
    #define MS_WINDOWS
  #endif

  #ifdef M_I386
    #define WORD_BIT 32
  #else
    #define WORD_BIT 16
  #endif

  /* Compiler Runtime Library Capabilities */
  #include <ctype.h>
  #include <direct.h>

  #define VA_LIST_IS_ARRAY
  #define HAVE_CLOCK
  #define HAVE_STRFTIME

  #ifdef USE_DL_EXPORT
    #define DL_IMPORT(RTYPE) RTYPE __export
  #endif
#endif /* __WATCOMC__ */

/***************************************************/
/*      32-Bit Borland C/C++ v?.? for Windows      */
/*  (Convert Compiler Flags into Useful Switches)  */
/***************************************************/
/* The Borland compiler defines __BORLANDC__ */
/* XXX These defines are likely incomplete, but should be easy to fix. */
#ifdef __BORLANDC__
  #define COMPILER "[Borland]"

  /* Platform Filesystem */
  #define PYTHONPATH ".;.\\lib;.\\lib\\win;.\\lib\\dos_8x3"
  #define IMPORT_8x3_NAMES
  #define DOSFILESYS /* Borland Uses the DOS File Naming Conventions */

  /* Compiler Runtime Library Capabilities */
  #define HAVE_CLOCK
  #define HAVE_STRFTIME

  #ifdef USE_DL_IMPORT
    #define DL_IMPORT(RTYPE)  RTYPE __import
  #endif
#endif /* BORLANDC */

/********************************/
/* End of compilers - finish up */
/********************************/

/****************************************
 * Adjustments for the Operating System
 ****************************************/
#ifdef MS_WIN32
  #define PLATFORM "win32"
#else
  #ifdef MS_WIN16
    #define PLATFORM "win16"
  #else
    #ifdef PYOS_OS2
      #define PLATFORM "os2"
    #else
      #define PLATFORM "dos"
    #endif
  #endif /* !MS_WIN16 */
#endif /* !MS_WIN32 */

/****************************************
 *   Supported Features in Runtime API
 ****************************************/

/* Define if on AIX 3.
   System headers sometimes define this.
   We just want to avoid a redefinition error message.  */
#ifndef _ALL_SOURCE
/* #undef _ALL_SOURCE */
#endif

/* Define to empty if the keyword does not work.  */
/* #define const  */

/* Define if you have dirent.h.  */
/* #define DIRENT 1 */

/* Define to the type of elements in the array set by `getgroups'.
   Usually this is either `int' or `gid_t'.  */
/* #undef GETGROUPS_T */

/* Define to `int' if <sys/types.h> doesn't define.  */
/* #undef gid_t */

/* Define if your struct tm has tm_zone.  */
/* #undef HAVE_TM_ZONE */

/* Define if you don't have tm_zone but do have the external array
   tzname.  */
#define HAVE_TZNAME

/* Define if on MINIX.  */
/* #undef _MINIX */

/* Define to `int' if <sys/types.h> doesn't define.  */
/* #undef mode_t */

/* Define if you don't have dirent.h, but have ndir.h.  */
/* #undef NDIR */

/* Define to `long' if <sys/types.h> doesn't define.  */
/* #undef off_t */

/* Define to `int' if <sys/types.h> doesn't define.  */
/* #undef pid_t */

/* Define if the system does not provide POSIX.1 features except
   with this defined.  */
/* #undef _POSIX_1_SOURCE */

/* Define if you need to in order for stat and other things to work.  */
/* #undef _POSIX_SOURCE */

/* Define as the return type of signal handlers (int or void).  */
#define RETSIGTYPE void

/* Define to `unsigned' if <sys/types.h> doesn't define.  */
/* #undef size_t */

/* Define if you have the ANSI C header files.  */
#define STDC_HEADERS 1

/* Define if you don't have dirent.h, but have sys/dir.h.  */
/* #undef SYSDIR */

/* Define if you don't have dirent.h, but have sys/ndir.h.  */
/* #undef SYSNDIR */

/* Define if you can safely include both <sys/time.h> and <time.h>.  */
/* #undef TIME_WITH_SYS_TIME */

/* Define if your <sys/time.h> declares struct tm.  */
/* #define TM_IN_SYS_TIME 1 */

/* Define to `int' if <sys/types.h> doesn't define.  */
/* #undef uid_t */

/* Define if the closedir function returns void instead of int.  */
/* #undef VOID_CLOSEDIR */

/* Define if your <unistd.h> contains bad prototypes for exec*()
   (as it does on SGI IRIX 4.x) */
/* #undef BAD_EXEC_PROTOTYPES */

/* Define if your compiler botches static forward declarations
   (as it does on SCI ODT 3.0) */
/* #define BAD_STATIC_FORWARD 1 */

/* Define if getpgrp() must be called as getpgrp(0)
   and (consequently) setpgrp() as setpgrp(0, 0). */
/* #undef GETPGRP_HAVE_ARGS */

/* Define this if your time.h defines altzone */
/* #define HAVE_ALTZONE */

/* Define if you have the putenv function.  */
#ifdef MS_WIN32
/* Does this exist on Win16? */
#define HAVE_PUTENV
#endif

/* Define if your compiler supports function prototypes */
#define HAVE_PROTOTYPES

/* Define if  you can safely include both <sys/select.h> and <sys/time.h>
   (which you can't on SCO ODT 3.0). */
/* #undef SYS_SELECT_WITH_SYS_TIME */

/* Define if you want to use SGI (IRIX 4) dynamic linking.
   This requires the "dl" library by Jack Jansen,
   ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
   Don't bother on IRIX 5, it already has dynamic linking using SunOS
   style shared libraries */
/* #undef WITH_SGI_DL */

/* Define if you want to emulate SGI (IRIX 4) dynamic linking.
   This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
   Sequent Symmetry (Dynix), and Atari ST.
   This requires the "dl-dld" library,
   ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
   as well as the "GNU dld" library,
   ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
   Don't bother on SunOS 4 or 5, they already have dynamic linking using
   shared libraries */
/* #undef WITH_DL_DLD */

/* Define if you want to compile in rudimentary thread support */
/* #undef WITH_THREAD */

/* Define if you want to use the GNU readline library */
/* #define WITH_READLINE 1 */

/* Define if you have clock.  */
#define HAVE_CLOCK

/* Define if you have ftime.  */
#define HAVE_FTIME

/* Define if you have getpeername.  */
#define HAVE_GETPEERNAME

/* Define if you have getpgrp.  */
/* #undef HAVE_GETPGRP */

/* Define if you have getpid.  */
#define HAVE_GETPID

/* Define if you have gettimeofday.  */
/* #undef HAVE_GETTIMEOFDAY */

/* Define if you have getwd.  */
/* #undef HAVE_GETWD */

/* Define if you have lstat.  */
/* #undef HAVE_LSTAT */

/* Define if you have nice.  */
/* #undef HAVE_NICE */

/* Define if you have readlink.  */
/* #undef HAVE_READLINK */

/* Define if you have select.  */
/* #undef HAVE_SELECT */

/* Define if you have setpgid.  */
/* #undef HAVE_SETPGID */

/* Define if you have setpgrp.  */
/* #undef HAVE_SETPGRP */

/* Define if you have setsid.  */
/* #undef HAVE_SETSID */

/* Define if you have setvbuf.  */
#define HAVE_SETVBUF

/* Define if you have siginterrupt.  */
/* #undef HAVE_SIGINTERRUPT */

/* Define if you have symlink.  */
/* #undef HAVE_SYMLINK */

/* Define if you have tcgetpgrp.  */
/* #undef HAVE_TCGETPGRP */

/* Define if you have tcsetpgrp.  */
/* #undef HAVE_TCSETPGRP */

/* Define if you have times.  */
#define HAVE_TIMES

/* Define if you have uname.  */
/* #undef HAVE_UNAME */

/* Define if you have waitpid.  */
/* #undef HAVE_WAITPID */

/* Define if you have the <dlfcn.h> header file.  */
/* #undef HAVE_DLFCN_H */

/* Define if you have the <fcntl.h> header file.  */
#define HAVE_FCNTL_H 1

/* Define if you have the <signal.h> header file.  */
#define HAVE_SIGNAL_H 1

/* Define if you have the <stdarg.h> header file.  */
#define HAVE_STDARG_H 1

/* Define if you have the <stdarg.h> prototypes.  */
#define HAVE_STDARG_PROTOTYPES 1

/* Define if malloc(0) returns a NULL pointer */
#define MALLOC_ZERO_RETURNS_NULL 1

/* Define if you have the <stdlib.h> header file.  */
#define HAVE_STDLIB_H 1

/* Define if you have the <sys/audioio.h> header file.  */
/* #undef HAVE_SYS_AUDIOIO_H */

/* Define if you have the <sys/param.h> header file.  */
/* #define HAVE_SYS_PARAM_H 1 */

/* Define if you have the <sys/select.h> header file.  */
/* #define HAVE_SYS_SELECT_H 1 */

/* Define if you have the <sys/time.h> header file.  */
/* #define HAVE_SYS_TIME_H 1 */

/* Define if you have the <sys/times.h> header file.  */
/* #define HAVE_SYS_TIMES_H 1 */

/* Define if you have the <sys/un.h> header file.  */
/* #define HAVE_SYS_UN_H 1 */

/* Define if you have the <sys/utime.h> header file.  */
#define HAVE_SYS_UTIME_H 1

/* Define if you have the <sys/utsname.h> header file.  */
/* #define HAVE_SYS_UTSNAME_H 1 */

/* Define if you have the <thread.h> header file.  */
/* #undef HAVE_THREAD_H */

/* Define if you have the <unistd.h> header file.  */
/* #define HAVE_UNISTD_H 1 */

/* Define if you have the <utime.h> header file.  */
/* #define HAVE_UTIME_H 1 */

/* Define if you have the dl library (-ldl).  */
/* #undef HAVE_LIBDL */

/* Define if you have the mpc library (-lmpc).  */
/* #undef HAVE_LIBMPC */

/* Define if you have the nsl library (-lnsl).  */
#define HAVE_LIBNSL 1

/* Define if you have the seq library (-lseq).  */
/* #undef HAVE_LIBSEQ */

/* Define if you have the socket library (-lsocket).  */
#define HAVE_LIBSOCKET 1

/* Define if you have the sun library (-lsun).  */
/* #undef HAVE_LIBSUN */

/* Define if you have the termcap library (-ltermcap).  */
/* #undef HAVE_LIBTERMCAP */

/* Define if you have the termlib library (-ltermlib).  */
/* #undef HAVE_LIBTERMLIB */

/* Define if you have the thread library (-lthread).  */
/* #undef HAVE_LIBTHREAD */

#endif /* !Py_CONFIG_H */

