summaryrefslogtreecommitdiff
path: root/PC/pyconfig.h
diff options
context:
space:
mode:
authorMark Hammond <mhammond@skippinet.com.au>2002-07-19 06:55:41 +0000
committerMark Hammond <mhammond@skippinet.com.au>2002-07-19 06:55:41 +0000
commit345bc4e4f2349115e5099caa17ad79a44afe525c (patch)
treefe7e6d24ce0f68e5e2b5deca50fb5ea94f50a877 /PC/pyconfig.h
parentdef2aab3c6b8584a93837360f7e1aee14f0f12e2 (diff)
downloadcpython-345bc4e4f2349115e5099caa17ad79a44afe525c.tar.gz
Land Patch [ 566100 ] Rationalize DL_IMPORT and DL_EXPORT.
Diffstat (limited to 'PC/pyconfig.h')
-rw-r--r--PC/pyconfig.h257
1 files changed, 82 insertions, 175 deletions
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index d4dfd903a5..a1e947cff3 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -14,23 +14,17 @@ the following #defines
MS_WIN64 - Code specific to the MS Win64 API
MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs)
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.
+Py_ENABLE_SHARED - Code if the Python core is built as a DLL.
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.
-*/
+NOTE: The following symbols are deprecated:
+NT, WIN32, USE_DL_EXPORT, USE_DL_IMPORT, DL_EXPORT, DL_IMPORT
+MS_CORE_DLL.
-/*
- 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>
@@ -40,12 +34,30 @@ compiler specific". Therefore, these should be very rare.
#define HAVE_TEMPNAM
#define HAVE_TMPFILE
#define HAVE_TMPNAM
+#define HAVE_CLOCK
+#define HAVE_STRFTIME
+#define HAVE_STRERROR
#define DONT_HAVE_SIG_ALARM
#define DONT_HAVE_SIG_PAUSE
#define LONG_BIT 32
+#define WORD_BIT 32
#define PREFIX ""
#define EXEC_PREFIX ""
+#define MS_WIN32 /* only support win32 and greater. */
+#define MS_WINDOWS
+#ifndef PYTHONPATH
+# define PYTHONPATH ".\\DLLs;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
+#endif
+#define NT_THREADS
+#define WITH_THREAD
+#ifndef NETSCAPE_PI
+#define USE_SOCKET
+#endif
+
+/* Compiler specific defines */
+
+/* ------------------------------------------------------------------------*/
/* Microsoft C defines _MSC_VER */
#ifdef _MSC_VER
@@ -60,11 +72,6 @@ compiler specific". Therefore, these should be very rare.
#ifdef _WIN64
#define MS_WIN64
#endif
-#ifdef _WIN32
-#define NT /* NT is obsolete - please use MS_WIN32 instead */
-#define MS_WIN32
-#endif
-#define MS_WINDOWS
/* set the COMPILER */
#ifdef MS_WIN64
@@ -87,99 +94,39 @@ compiler specific". Therefore, these should be very rare.
#endif
#endif /* MS_WIN32 && !MS_WIN64 */
-#endif /* _MSC_VER */
-
-#if defined(_MSC_VER) && _MSC_VER > 850
-/* Start of defines for MS_WIN32 using VC++ 2.0 and up */
-
-/* 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 */
-
-#define PYTHONPATH ".\\DLLs;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
typedef int pid_t;
-#define WORD_BIT 32
-#pragma warning(disable:4113)
#define hypot _hypot
-#include <stdio.h>
-#define HAVE_CLOCK
-#define HAVE_STRFTIME
-#define HAVE_STRERROR
-#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
-#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#endif
-#define HAVE_LONG_LONG 1
-#define LONG_LONG __int64
-#endif /* _MSC_VER && > 850 */
+#endif /* _MSC_VER */
+/* define some ANSI types that are not defined in earlier Win headers */
+#if defined(_MSC_VER) && _MSC_VER >= 1200
+/* This file only exists in VC 6.0 or higher */
+#include <basetsd.h>
+#endif
+
+/* ------------------------------------------------------------------------*/
/* The Borland compiler defines __BORLANDC__ */
/* XXX These defines are likely incomplete, but should be easy to fix. */
#ifdef __BORLANDC__
#define COMPILER "[Borland]"
-#define HAVE_CLOCK
-#define HAVE_STRFTIME
#ifdef _WIN32
-
/* tested with BCC 5.5 (__BORLANDC__ >= 0x0550)
*/
-#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 */
-
-#define PYTHONPATH ".\\DLLs;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
typedef int pid_t;
-#define WORD_BIT 32
-#include <stdio.h>
-#define HAVE_STRERROR
-#define NT_THREADS
-#define WITH_THREAD
-#ifndef NETSCAPE_PI
-#define USE_SOCKET
-#endif
/* BCC55 seems to understand __declspec(dllimport), it is used in its
- own header files (winnt.h, ...) */
-#ifdef USE_DL_IMPORT
-#define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
-#endif
-#ifdef USE_DL_EXPORT
-#define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
-#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#endif
-
-#define HAVE_LONG_LONG 1
-#define LONG_LONG __int64
+ own header files (winnt.h, ...) - so we can do nothing and get the default*/
#undef HAVE_SYS_UTIME_H
#define HAVE_UTIME_H
#define HAVE_DIRENT_H
-#define HAVE_CLOCK
+
+/* rename a few functions for the Borland compiler */
+#include <io.h>
+#define _chsize chsize
+#define _setmode setmode
#else /* !_WIN32 */
#error "Only Win32 and later are supported"
@@ -187,6 +134,7 @@ typedef int pid_t;
#endif /* BORLANDC */
+/* ------------------------------------------------------------------------*/
/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */
#if defined(__GNUC__) && defined(_WIN32)
/* XXX These defines are likely incomplete, but should be easy to fix.
@@ -199,97 +147,67 @@ typedef int pid_t;
#warning "Please use an up-to-date version of gcc! (>2.91 recommended)"
#endif
-#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 */
-
#define COMPILER "[gcc]"
-#define PYTHONPATH ".\\DLLs;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
-#define WORD_BIT 32
#define hypot _hypot
-#include <stdio.h>
-#define HAVE_CLOCK
-#define HAVE_STRFTIME
-#define HAVE_STRERROR
-#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
-#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#endif
-
-#define HAVE_LONG_LONG 1
#define LONG_LONG long long
#endif /* GNUC */
+/* ------------------------------------------------------------------------*/
/* lcc-win32 defines __LCC__ */
-
#if defined(__LCC__)
/* XXX These defines are likely incomplete, but should be easy to fix.
They should be complete enough to build extension modules. */
-#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 */
-
#define COMPILER "[lcc-win32]"
-#define PYTHONPATH ".\\DLLs;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk"
typedef int pid_t;
-#define WORD_BIT 32
-#include <stdio.h>
-#define HAVE_CLOCK
-#define HAVE_STRFTIME
-#define HAVE_STRERROR
-#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
-#define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#endif
+/* __declspec() is supported here too - do nothing to get the defaults */
-#define HAVE_LONG_LONG 1
-#define LONG_LONG __int64
#endif /* LCC */
+/* ------------------------------------------------------------------------*/
/* End of compilers - finish up */
-/* define some ANSI types that are not defined in earlier Win headers */
-#if _MSC_VER >= 1200 /* This file only exists in VC 6.0 or higher */
-#include <basetsd.h>
+#ifndef NO_STDIO_H
+# include <stdio.h>
+#endif
+
+/* 64 bit ints are usually spelt __int64 unless compiler has overridden */
+#define HAVE_LONG_LONG 1
+#ifndef LONG_LONG
+# define LONG_LONG __int64
#endif
+/* For Windows the Python core is in a DLL by default. Test
+Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
+#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED)
+# define Py_ENABLE_SHARED 1 /* standard symbol for shared library */
+# define MS_COREDLL /* deprecated old symbol */
+#endif /* !MS_NO_COREDLL && ... */
+
+/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */
+#ifdef USE_DL_EXPORT
+# define Py_BUILD_CORE
+#endif /* USE_DL_EXPORT */
+
+/* All windows compilers that use this header support __declspec */
+#define HAVE_DECLSPEC_DLL
+
+/* For an MSVC DLL, we can nominate the .lib files used by extensions */
+#ifdef MS_COREDLL
+# ifndef Py_BUILD_CORE /* not building the core - must be an ext */
+# if defined(_MSC_VER)
+ /* So MSVC users need not specify the .lib file in
+ their Makefile (other compilers are generally
+ taken care of by distutils.) */
+# ifdef _DEBUG
+# pragma comment(lib,"python23_d.lib")
+# else
+# pragma comment(lib,"python23.lib")
+# endif /* _DEBUG */
+# endif /* _MSC_VER */
+# endif /* Py_BUILD_CORE */
+#endif /* MS_COREDLL */
+
#if defined(MS_WIN64)
/* maintain "win32" sys.platform for backward compatibility of Python code,
the Win64 API should be close enough to the Win32 API to make this
@@ -321,23 +239,12 @@ typedef int pid_t;
# endif
#endif
-
-#ifdef MS_WIN32
-
-#if !defined(USE_DL_EXPORT) && defined(_MSC_VER)
-/* So nobody using MSVC needs to specify the .lib in their Makefile any
- more (other compilers will still need to do so, but that's taken care
- of by the Distutils, so it's not a problem). */
#ifdef _DEBUG
-#pragma comment(lib,"python23_d.lib")
-#else
-#pragma comment(lib,"python23.lib")
+# define Py_DEBUG
#endif
-#endif /* USE_DL_EXPORT */
-#ifdef _DEBUG
-#define Py_DEBUG
-#endif
+
+#ifdef MS_WIN32
#define SIZEOF_SHORT 2
#define SIZEOF_INT 4