From e8afe516ab841977dd73a80bf4ed334781d25dda Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 28 Sep 1998 22:02:40 +0000 Subject: New set of files for the OS/2 port by Jeff Rush. --- PC/os2vacpp/_tkinter.def | 8 + PC/os2vacpp/config.c | 2 - PC/os2vacpp/config.h | 696 ++++++++------------------------------- PC/os2vacpp/makefile | 51 +-- PC/os2vacpp/python.def | 833 ++++++++++++++++++++++++++--------------------- PC/os2vacpp/readme.txt | 228 ++++++------- 6 files changed, 757 insertions(+), 1061 deletions(-) create mode 100644 PC/os2vacpp/_tkinter.def diff --git a/PC/os2vacpp/_tkinter.def b/PC/os2vacpp/_tkinter.def new file mode 100644 index 0000000..49dab8d --- /dev/null +++ b/PC/os2vacpp/_tkinter.def @@ -0,0 +1,8 @@ +LIBRARY _TKINTER INITINSTANCE TERMINSTANCE +DESCRIPTION 'Python Extension DLL v1.0 for Access to Tcl/Tk Environment' +PROTMODE +DATA MULTIPLE NONSHARED + +EXPORTS + init_tkinter + diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c index 3e7adf9..11caad2 100644 --- a/PC/os2vacpp/config.c +++ b/PC/os2vacpp/config.c @@ -50,7 +50,6 @@ extern void initos2(); extern void initoperator(); extern void initposix(); extern void initregex(); -extern void initreop(); extern void initrgbimg(); extern void initrotor(); extern void initsignal(); @@ -97,7 +96,6 @@ struct _inittab _PyImport_Inittab[] = { #endif {"operator", initoperator}, {"regex", initregex}, - {"reop", initreop}, // {"rgbimg", initrgbimg}, // {"rotor", initrotor}, {"signal", initsignal}, diff --git a/PC/os2vacpp/config.h b/PC/os2vacpp/config.h index 373d009..e7901e3 100644 --- a/PC/os2vacpp/config.h +++ b/PC/os2vacpp/config.h @@ -4,10 +4,9 @@ /********************************************************************** * 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. + * This is a manually maintained version used for 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 @@ -17,28 +16,12 @@ * DOSFILESYS PCDOS-Style (for PCDOS, Windows and OS/2) * MACFILESYS Macintosh-Style * UNIXFILESYS Unix-Style - * AMIGAFILESYS AmigaDOS-Style (to-be-supported) + * AMIGAFILESYS AmigaDOS-Style * * 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 * @@ -64,565 +47,156 @@ #include -#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 "" +/* Provide a default library so writers of extension modules + * won't have to explicitly specify it anymore + */ +#pragma library("Python15.lib") + /***************************************************/ /* 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 */ +#define PLATFORM "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 */ +#define PYTHONPATH ".;.\\lib;.\\lib\\plat-win;.\\lib\\lib-tk" +#define DOSFILESYS /* OS/2 Uses the DOS File Naming Conventions */ +/* #define IMPORT_8x3_NAMES (let's move up to long filenames) */ /* Platform CPU-Mode Dependencies */ - #define WORD_BIT 32 /* OS/2 is a 32-Bit Operating System */ +#define WORD_BIT 32 /* OS/2 is a 32-Bit Operating System */ +#define LONG_BIT 32 +#define SIZEOF_INT 4 /* Count of Bytes in an (int) */ +#define SIZEOF_LONG 4 /* Count of Bytes in a (long) */ +#define SIZEOF_VOID_P 4 /* Count of Bytes in a (void *) */ +/* #define HAVE_LONG_LONG 1 */ /* VAC++ does not support (long long) */ +/* #define SIZEOF_LONG_LONG 8 */ /* Count of Bytes in a (long long) */ + +/* Define if type char is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +/* #undef __CHAR_UNSIGNED__ */ +#endif - typedef int mode_t; - typedef int uid_t; - typedef int gid_t; - typedef int pid_t; +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 +#if defined(__MULTI__) /* If Compiler /Gt+ Multithread Option Enabled, */ + #define WITH_THREAD 1 /* Enable Threading Throughout Python */ + #define OS2_THREADS 1 /* And Use the OS/2 Flavor of Threads */ +/* #define _REENTRANT 1 */ /* Use thread-safe errno, h_errno, and other fns */ +#endif /* Compiler Runtime Library Capabilities */ #include #include - - /* #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 - - #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 - - /* Windows 3.1 will not tolerate any console io in a dll */ - - #ifdef _USRDLL - #include - - #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 - #include - - #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 */ +/* #undef BAD_STATIC_FORWARD */ /* if compiler botches static fwd decls */ + +#define STDC_HEADERS 1 /* VAC++ is an ANSI C Compiler */ +#define HAVE_LIMITS_H 1 /* #include */ +#define HAVE_STDLIB_H 1 /* #include */ +#define HAVE_HYPOT 1 /* hypot() */ +#define HAVE_PUTENV 1 /* putenv() */ +#define HAVE_STDDEF_H 1 /* #include */ +/* #define VA_LIST_IS_ARRAY 1 */ /* if va_list is an array of some kind */ + + /* Variable-Arguments/Prototypes */ +#define HAVE_PROTOTYPES 1 /* VAC++ supports C Function Prototypes */ +#define HAVE_STDARG_H 1 /* #include */ +#define HAVE_STDARG_PROTOTYPES 1 /* Our has prototypes */ + + /* String/Memory/Locale Operations */ +#define HAVE_STRDUP 1 /* strdup() */ +#define HAVE_MEMMOVE 1 /* memmove() */ +#define HAVE_STRERROR 1 /* strerror() */ +#define HAVE_SETLOCALE 1 /* setlocale() */ +#define HAVE_LOCALE_H 1 /* #include */ +#define MALLOC_ZERO_RETURNS_NULL 1 /* Our malloc(0) returns a NULL ptr */ + + /* Signal Handling */ +#define RETSIGTYPE void /* Return type of handlers (int or void) */ +#define HAVE_SIGNAL_H 1 /* #include */ +/* #undef WANT_SIGFPE_HANDLER */ /* Handle SIGFPE (see Include/pyfpe.h) */ +/* #define HAVE_ALARM 1 */ /* alarm() */ +/* #define HAVE_SIGINTERRUPT 1 */ /* siginterrupt() */ +/* #define HAVE_SIGRELSE 1 */ /* sigrelse() */ +#define DONT_HAVE_SIG_ALARM 1 +#define DONT_HAVE_SIG_PAUSE 1 + + /* Clock/Time Support */ +#define HAVE_FTIME 1 /* We have ftime() in */ +#define HAVE_CLOCK 1 /* clock() */ +#define HAVE_STRFTIME 1 /* strftime() */ +#define HAVE_STRPTIME 1 /* strptime() */ +#define HAVE_MKTIME 1 /* mktime() */ +#define HAVE_TZNAME 1 /* No tm_zone but do have tzname[] */ +#define HAVE_TIMES 1 /* #include */ +#define HAVE_SYS_UTIME_H 1 /* #include */ +/* #define HAVE_UTIME_H 1 */ /* #include */ +#define HAVE_SYS_TIME_H 1 /* #include */ +/* #define TM_IN_SYS_TIME 1 */ /* declares struct tm */ +#define HAVE_GETTIMEOFDAY 1 /* gettimeofday() */ +/* #define GETTIMEOFDAY_NO_TZ 1 */ /* gettimeofday() does not have 2nd arg */ +/* #define HAVE_TIMEGM 1 */ /* timegm() */ +#define TIME_WITH_SYS_TIME 1 /* Mix and */ +#define SYS_SELECT_WITH_SYS_TIME 1 /* Mix and */ +/* #define HAVE_ALTZONE 1 */ /* if defines altzone */ + + /* Network/Sockets Support */ +#define HAVE_SYS_SELECT_H 1 /* #include */ +#define BSD_SELECT 1 /* Use BSD versus OS/2 form of select() */ +#define HAVE_SELECT 1 /* select() */ +#define HAVE_GETPEERNAME 1 /* getpeername() */ +/* #undef HAVE_GETHOSTNAME_R 1 */ /* gethostname_r() */ + + /* File I/O */ +#define HAVE_DUP2 1 /* dup2() */ +#define HAVE_EXECV 1 /* execv() */ +#define HAVE_SETVBUF 1 /* setvbuf() */ +#define HAVE_GETCWD 1 /* getcwd() */ +#define HAVE_PIPE 1 /* pipe() [OS/2-specific code added] */ +#define HAVE_FCNTL_H 1 /* #include */ +/* #define HAVE_FLOCK 1 */ /* flock() */ +/* #define HAVE_TRUNCATE 1 */ /* truncate() */ +/* #define HAVE_FTRUNCATE 1 */ /* ftruncate() */ +/* #define HAVE_LSTAT 1 */ /* lstat() */ +/* #define HAVE_DIRENT_H 1 */ /* #include */ +/* #define HAVE_OPENDIR 1 */ /* opendir() */ + + /* Process Operations */ +#define HAVE_GETPID 1 /* getpid() */ +#define HAVE_SYSTEM 1 /* system() */ +#define HAVE_WAIT 1 /* wait() */ +#define HAVE_KILL 1 /* kill() [OS/2-specific code added] */ +#define HAVE_POPEN 1 /* popen() [OS/2-specific code added] */ +/* #define HAVE_GETPPID 1 */ /* getppid() */ +/* #define HAVE_WAITPID 1 */ /* waitpid() */ +/* #define HAVE_FORK 1 */ /* fork() */ + + /* User/Group ID Queries */ +/* #define HAVE_GETEGID 1 */ +/* #define HAVE_GETEUID 1 */ +/* #define HAVE_GETGID 1 */ +/* #define HAVE_GETUID 1 */ + + /* Unix-Specific */ +#define HAVE_SYS_UN_H 1 /* #include */ +/* #define HAVE_SYS_UTSNAME_H 1 */ /* #include */ +/* #define HAVE_SYS_WAIT_H 1 */ /* #include */ +/* #define HAVE_UNISTD_H 1 */ /* #include */ +/* #define HAVE_UNAME 1 */ /* uname () */ + +#ifdef USE_DL_EXPORT + #define DL_IMPORT(RTYPE) RTYPE _System #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 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 doesn't define. */ -/* #undef mode_t */ - -/* Define if you don't have dirent.h, but have ndir.h. */ -/* #undef NDIR */ - -/* Define to `long' if doesn't define. */ -/* #undef off_t */ - -/* Define to `int' if 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 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 and . */ -/* #undef TIME_WITH_SYS_TIME */ - -/* Define if your declares struct tm. */ -/* #define TM_IN_SYS_TIME 1 */ - -/* Define to `int' if doesn't define. */ -/* #undef uid_t */ - -/* Define if the closedir function returns void instead of int. */ -/* #undef VOID_CLOSEDIR */ - -/* Define if your 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 and - (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 header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define if you have the header file. */ -#define HAVE_SIGNAL_H 1 - -/* Define if you have the header file. */ -#define HAVE_STDARG_H 1 - -/* Define if you have the 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 header file. */ -#define HAVE_STDLIB_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_SYS_AUDIOIO_H */ - -/* Define if you have the header file. */ -/* #define HAVE_SYS_PARAM_H 1 */ - -/* Define if you have the header file. */ -/* #define HAVE_SYS_SELECT_H 1 */ - -/* Define if you have the header file. */ -/* #define HAVE_SYS_TIME_H 1 */ - -/* Define if you have the header file. */ -/* #define HAVE_SYS_TIMES_H 1 */ - -/* Define if you have the header file. */ -/* #define HAVE_SYS_UN_H 1 */ - -/* Define if you have the header file. */ -#define HAVE_SYS_UTIME_H 1 - -/* Define if you have the header file. */ -/* #define HAVE_SYS_UTSNAME_H 1 */ - -/* Define if you have the header file. */ -/* #undef HAVE_THREAD_H */ - -/* Define if you have the header file. */ -/* #define HAVE_UNISTD_H 1 */ - -/* Define if you have the 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 */ diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile index d609d50..c60cd80 100644 --- a/PC/os2vacpp/makefile +++ b/PC/os2vacpp/makefile @@ -26,6 +26,7 @@ # # History (Most Recent First) # +# 26-Sep-98 jrr Retested and adjusted for building w/Python 1.5.2a1 # 20-Nov-97 jrr Cleaned Up for Applying to Distribution # 29-Oct-97 jrr Modified for Use with Python 1.5 Alpha 4 # 03-Aug-96 jrr Original for Use with Python 1.4 Release @@ -48,18 +49,24 @@ ERRS = make.out # Where to Find the IBM TCP/IP Socket Includes and Libraries OS2TCPIP = C:\MPTN +# Where to Find the Tcl/Tk Base Directory for Libs/Includes +TCLTK = D:\TclTk +TCLBASE = D:\Tcl7.6\OS2 +TKBASE = D:\Tk4.2\OS2 + # Where to Put the .OBJ Files, To Keep Them Out of the Way PATHOBJ = obj # Search Path for Include Files -PROJINCLUDE = .;$(OS2TCPIP)\Include;$(PY_INCLUDES) +PROJINCLUDE = .;$(TCLBASE);$(TKBASE);$(OS2TCPIP)\Include;$(PY_INCLUDES) # Place to Search for Sources re OpusMAKE Dependency Generator (Commercial) MKMF_SRCS = $(PY_MODULES)\*.c $(PY_OBJECTS)\*.c $(PY_PARSER)\*.c $(PY_PYTHON)\*.c #.HDRPATH.c := $(PROJINCLUDE,;= ) $(.HDRPATH.c) #.PATH.c = .;$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON) -OTHERLIBS = $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib +OTHERLIBS = $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib \ + $(TCLTK)\Lib\Tcl76.lib $(TCLTK)\Lib\Tk42.lib ################# # Inference Rules @@ -171,7 +178,6 @@ MODULES = \ $(PATHOBJ)\PosixModule.obj \ $(PATHOBJ)\RegexModule.obj \ $(PATHOBJ)\RegExpr.obj \ - $(PATHOBJ)\ReopModule.obj \ $(PATHOBJ)\SelectModule.obj \ $(PATHOBJ)\SignalModule.obj \ $(PATHOBJ)\SocketModule.obj \ @@ -204,6 +210,8 @@ _GEN = /G4 /Gm /Gd- # /G4 = Generate Code for 486 (Use 386 for Debugger) # /Gm = Use Multithread Runtime # /Gd = Dynamically Load Runtime + # /Ms = Use _System Calling Convention (vs _Optlink) + # (to allow non-VAC++ code to call into Python15.dll) _OPT = /O /Gl # /O = Enable Speed-Optimizations @@ -238,7 +246,8 @@ CFLAGS = $(_BASE) $(_GEN) $(_OPT) $(_DBG) $(_OUT) $(_EXE) /Ss ################### # Primary Target(s) ################### -All: obj noise PyCore.lib Python15.lib Python15.dll Python.exe PGen.exe +All: obj noise PyCore.lib Python15.lib PGen.exe \ + Python.exe PythonPM.exe Python15.dll _tkinter.dll Modules: $(MODULES) Objects: $(OBJECTS) @@ -257,6 +266,15 @@ noise: # ############## +# Python Extension DLL: Tcl/Tk Interface +_tkinter.dll: $(PATHOBJ)\_tkinter.obj Python15.lib _tkinter.def + @ Echo Linking $@ As DLL + @ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS) + +$(PATHOBJ)\_tkinter.obj: $(PY_MODULES)\_tkinter.c + @ Echo Compiling $** + @ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS) + # Object Library of All Essential Python Routines PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj @ Echo Adding Updated Object Files to Link Library $@ @@ -265,6 +283,8 @@ PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj Python15.dll: $(PATHOBJ)\Compile.obj PyCore.lib Python.def @ Echo Linking $@ As DLL @ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS) + @ Echo Compressing $@ with LxLite + @ lxlite $@ # IBM Linker Requires One Explicit .OBJ To Build a .DLL from a .LIB $(PATHOBJ)\Compile.obj: $(PY_PYTHON)\Compile.c @@ -277,10 +297,15 @@ Python15.lib: Python.def @ IMPLIB /NOLOGO /NOIGNORE $@ $** >>$(ERRS) @ ILIB /NOLOGO /CONVFORMAT /NOEXTDICTIONARY /NOBROWSE /NOBACKUP $@; >>$(ERRS) -# Small Program to Start Interpreter in Python15.dll +# Small Command-Line Program to Start Interpreter in Python15.dll Python.exe: $(PATHOBJ)\Python.obj Python15.lib @ Echo Linking $@ As EXE - @ $(CC) $(CFLAGS) $(_EXE) /B"/STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS) + @ $(CC) $(CFLAGS) $(_EXE) /B"/PM:VIO /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS) + +# Small PM-GUI Program to Start Interpreter in Python15.dll +PythonPM.exe: $(PATHOBJ)\Python.obj Python15.lib + @ Echo Linking $@ As EXE + @ $(CC) $(CFLAGS) $(_EXE) /B"/PM:PM /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS) PGen.exe: $(PGEN) PyCore.lib @ Echo Linking $@ As EXE @@ -305,6 +330,7 @@ release: Python.exe Python15.dll Python15.lib -- @Echo Y | copy /U Python.exe D:\EXEs -- @Echo Y | copy /U Python15.dll D:\DLLs -- @Echo Y | copy /U Python15.lib E:\Tau\Lib + -- @Echo Y | copy /U _tkinter.dll D:\Python test: python ..\..\lib\test\regrtest.py @@ -947,19 +973,6 @@ regexpr.obj: $(PY_INCLUDE)\abstract.h $(PY_PARSER)\assert.h $(PY_INCLUDE)\ceval. $(PY_INCLUDE)\stringobject.h $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h \ $(PY_INCLUDE)\tupleobject.h -reopmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \ - $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h config.h \ - $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \ - $(PY_INCLUDE)\funcobject.h $(PY_INCLUDE)\import.h $(PY_INCLUDE)\intobject.h \ - $(PY_INCLUDE)\intrcheck.h $(PY_INCLUDE)\listobject.h $(PY_INCLUDE)\longobject.h \ - $(PY_INCLUDE)\methodobject.h $(PY_INCLUDE)\modsupport.h \ - $(PY_INCLUDE)\moduleobject.h $(PY_INCLUDE)\mymalloc.h $(PY_INCLUDE)\myproto.h \ - $(PY_INCLUDE)\object.h $(PY_INCLUDE)\objimpl.h $(PY_INCLUDE)\pydebug.h \ - $(PY_INCLUDE)\pyerrors.h $(PY_INCLUDE)\pyfpe.h $(PY_INCLUDE)\pystate.h \ - $(PY_INCLUDE)\python.h $(PY_INCLUDE)\pythonrun.h $(PY_INCLUDE)\rangeobject.h \ - $(PY_MODULES)\regexpr.h $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \ - $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h - resource.obj: $(PY_INCLUDE)\abstract.h $(OS2TCPIP)\Include\sys\time.h $(PY_INCLUDE)\ceval.h \ $(PY_INCLUDE)\classobject.h $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h \ config.h $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h \ diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def index b671d83..6477536 100644 --- a/PC/os2vacpp/python.def +++ b/PC/os2vacpp/python.def @@ -4,369 +4,472 @@ PROTMODE DATA MULTIPLE NONSHARED EXPORTS - ; Data - PyCFunction_Type - PyCObject_Type - PyClass_Type - PyCode_Type - PyComplex_Type - PyDict_Type - PyExc_ArithmeticError - PyExc_AttributeError - PyExc_EOFError - PyExc_Exception - PyExc_FloatingPointError - PyExc_IOError - PyExc_ImportError - PyExc_IndexError - PyExc_KeyError - PyExc_KeyboardInterrupt - PyExc_LookupError - PyExc_MemoryError - PyExc_NameError - PyExc_OverflowError - PyExc_RuntimeError - PyExc_StandardError - PyExc_SyntaxError - PyExc_SystemError - PyExc_SystemExit - PyExc_TypeError - PyExc_ValueError - PyExc_ZeroDivisionError - PyFile_Type - PyFloat_Type - PyFrame_Type - PyFunction_Type - PyInstance_Type - PyInt_Type - PyList_Type - PyLong_Type - PyMethod_Type - PyModule_Type - PyOS_InputHook - PyOS_ReadlineFunctionPointer - PyRange_Type - PySlice_Type - PyString_Type - PyTuple_Type - PyType_Type - Py_DebugFlag - Py_InteractiveFlag - Py_NoSiteFlag - Py_UseClassExceptionsFlag - Py_VerboseFlag - _PyParser_Grammar - _PyParser_TokenNames - _PyThread_Started - _Py_EllipsisObject - _Py_NoneStruct - _Py_TrueStruct - _Py_ZeroStruct + ; Data + PyCFunction_Type + PyCObject_Type + PyClass_Type + PyCode_Type + PyComplex_Type + PyDict_Type + PyExc_ArithmeticError + PyExc_AssertionError + PyExc_AttributeError + PyExc_EOFError + PyExc_EnvironmentError + PyExc_Exception + PyExc_FloatingPointError + PyExc_IOError + PyExc_ImportError + PyExc_IndexError + PyExc_KeyError + PyExc_KeyboardInterrupt + PyExc_LookupError + PyExc_MemoryError + PyExc_MemoryErrorInst + PyExc_NameError + PyExc_OSError + PyExc_OverflowError + PyExc_RuntimeError + PyExc_StandardError + PyExc_SyntaxError + PyExc_SystemError + PyExc_SystemExit + PyExc_TypeError + PyExc_ValueError + PyExc_ZeroDivisionError + PyFile_Type + PyFloat_Type + PyFrame_Type + PyFunction_Type + PyImport_FrozenModules + PyImport_Inittab + PyInstance_Type + PyInt_Type + PyList_Type + PyLong_Type + PyMethod_Type + PyModule_Type + PyOS_InputHook + PyOS_ReadlineFunctionPointer + PyRange_Type + PySlice_Type + PyString_Type + PyTraceBack_Type + PyTuple_Type + PyType_Type + Py_DebugFlag + Py_FrozenFlag + Py_InteractiveFlag + Py_NoSiteFlag + Py_OptimizeFlag + Py_TabcheckFlag + Py_UseClassExceptionsFlag + Py_VerboseFlag + _PyImport_Filetab + _PyImport_Inittab + _PyParser_Grammar + _PyParser_TokenNames + _PyThread_Started + _Py_EllipsisObject + _Py_NoneStruct + _Py_PackageContext + _Py_TrueStruct + _Py_ZeroStruct + _Py_abstract_hack + _Py_cobject_hack + _Py_re_syntax + _Py_re_syntax_table + + ; Code + PyArg_Parse + PyArg_ParseTuple + PyArg_ParseTupleAndKeywords + PyArg_VaParse + PyCFunction_Fini + PyCFunction_GetFlags + PyCFunction_GetFunction + PyCFunction_GetSelf + PyCFunction_New + PyCObject_AsVoidPtr + PyCObject_FromVoidPtrAndDesc + PyCObject_FromVoidPtr + PyCObject_GetDesc + PyCObject_Import + PyCallable_Check + PyClass_IsSubclass + PyClass_New + PyCode_Addr2Line + PyCode_New + PyComplex_AsCComplex + PyComplex_FromCComplex + PyComplex_FromDoubles + PyComplex_ImagAsDouble + PyComplex_RealAsDouble + PyDict_Clear + PyDict_DelItem + PyDict_DelItemString + PyDict_GetItem + PyDict_GetItemString + PyDict_Items + PyDict_Keys + PyDict_New + PyDict_Next + PyDict_SetItem + PyDict_SetItemString + PyDict_Size + PyDict_Values + PyErr_BadArgument + PyErr_BadInternalCall + PyErr_CheckSignals + PyErr_Clear + PyErr_ExceptionMatches + PyErr_Fetch + PyErr_Format + PyErr_GivenExceptionMatches + PyErr_NewException + PyErr_NoMemory + PyErr_NormalizeException + PyErr_Occurred + PyErr_Print + PyErr_PrintEx + PyErr_Restore + PyErr_SetFromErrno + PyErr_SetFromErrnoWithFilename + PyErr_SetInterrupt + PyErr_SetNone + PyErr_SetObject + PyErr_SetString + PyEval_AcquireLock + PyEval_AcquireThread + PyEval_CallFunction + PyEval_CallMethod + PyEval_CallObject + PyEval_CallObjectWithKeywords + PyEval_EvalCode + PyEval_GetBuiltins + PyEval_GetFrame + PyEval_GetGlobals + PyEval_GetLocals + PyEval_GetRestricted + PyEval_InitThreads + PyEval_ReleaseLock + PyEval_ReleaseThread + PyEval_RestoreThread + PyEval_SaveThread + PyFile_AsFile + PyFile_FromFile + PyFile_FromString + PyFile_GetLine + PyFile_Name + PyFile_SetBufSize + PyFile_SoftSpace + PyFile_WriteObject + PyFile_WriteString + PyFloat_AsDouble + PyFloat_AsString + PyFloat_Fini + PyFloat_FromDouble + PyFrame_BlockPop + PyFrame_BlockSetup + PyFrame_FastToLocals + PyFrame_Fini + PyFrame_LocalsToFast + PyFrame_New + PyFunction_GetCode + PyFunction_GetDefaults + PyFunction_GetGlobals + PyFunction_New + PyFunction_SetDefaults + PyGrammar_AddAccelerators + PyGrammar_FindDFA + PyGrammar_LabelRepr + PyGrammar_RemoveAccelerators + PyImport_AddModule + PyImport_AppendInittab + PyImport_Cleanup + PyImport_ExecCodeModule + PyImport_ExecCodeModuleEx + PyImport_ExtendInittab + PyImport_GetMagicNumber + PyImport_GetModuleDict + PyImport_Import + PyImport_ImportFrozenModule + PyImport_ImportModule + PyImport_ImportModuleEx + PyImport_ReloadModule + PyInstance_DoBinOp + PyInstance_New + PyInt_AsLong + PyInt_Fini + PyInt_FromLong + PyInt_GetMax + PyInterpreterState_Clear + PyInterpreterState_Delete + PyInterpreterState_New + PyList_Append + PyList_AsTuple + PyList_GetItem + PyList_GetSlice + PyList_Insert + PyList_New + PyList_Reverse + PyList_SetItem + PyList_SetSlice + PyList_Size + PyList_Sort + PyLong_AsDouble + PyLong_AsLong +; PyLong_AsLongLong + PyLong_AsUnsignedLong +; PyLong_AsUnsignedLongLong + PyLong_AsVoidPtr + PyLong_FromDouble + PyLong_FromLong +; PyLong_FromLongLong + PyLong_FromString + PyLong_FromUnsignedLong +; PyLong_FromUnsignedLongLong + PyLong_FromVoidPtr + PyMapping_Check + PyMapping_GetItemString + PyMapping_HasKey + PyMapping_HasKeyString + PyMapping_Length + PyMapping_SetItemString + PyMarshal_Init + PyMarshal_ReadLongFromFile + PyMarshal_ReadObjectFromFile + PyMarshal_ReadObjectFromString + PyMarshal_WriteLongToFile + PyMarshal_WriteObjectToFile + PyMarshal_WriteObjectToString + PyMem_Free + PyMem_Malloc + PyMem_Realloc + PyMember_Get + PyMember_Set + PyMethod_Class + PyMethod_Fini + PyMethod_Function + PyMethod_New + PyMethod_Self + PyModule_GetDict + PyModule_GetName + PyModule_New + PyNode_AddChild + PyNode_Compile + PyNode_Free +; PyNode_ListTree + PyNode_New + PyNumber_Absolute + PyNumber_Add + PyNumber_And + PyNumber_Check + PyNumber_Coerce + PyNumber_CoerceEx + PyNumber_Divide + PyNumber_Divmod + PyNumber_Float + PyNumber_Int + PyNumber_Invert + PyNumber_Long + PyNumber_Lshift + PyNumber_Multiply + PyNumber_Negative + PyNumber_Or + PyNumber_Positive + PyNumber_Power + PyNumber_Remainder + PyNumber_Rshift + PyNumber_Subtract + PyNumber_Xor + PyOS_AfterFork + PyOS_FiniInterrupts + PyOS_GetLastModificationTime + PyOS_InitInterrupts + PyOS_InterruptOccurred + PyOS_Readline + PyOS_StdioReadline + PyOS_strtol + PyOS_strtoul + PyObject_CallFunction + PyObject_CallMethod + PyObject_CallObject + PyObject_Cmp + PyObject_Compare + PyObject_DelItem + PyObject_GetAttr + PyObject_GetAttrString + PyObject_GetItem + PyObject_HasAttr + PyObject_HasAttrString + PyObject_Hash + PyObject_IsTrue + PyObject_Length + PyObject_Not + PyObject_Print + PyObject_Repr + PyObject_SetAttr + PyObject_SetAttrString + PyObject_SetItem + PyObject_Str + PyObject_Type + PyParser_AddToken + PyParser_Delete + PyParser_New + PyParser_ParseFile + PyParser_ParseString + PyParser_SimpleParseFile + PyParser_SimpleParseString + PyRange_New + PyRun_AnyFile + PyRun_File + PyRun_InteractiveLoop + PyRun_InteractiveOne + PyRun_SimpleFile + PyRun_SimpleString + PyRun_String + PySequence_Check + PySequence_Concat + PySequence_Contains + PySequence_Count + PySequence_DelItem + PySequence_DelSlice + PySequence_GetItem + PySequence_GetSlice + PySequence_In + PySequence_Index + PySequence_Length + PySequence_List + PySequence_Repeat + PySequence_SetItem + PySequence_SetSlice + PySequence_Tuple + PySlice_GetIndices + PySlice_New + PyString_AsString + PyString_Concat + PyString_ConcatAndDel + PyString_Fini + PyString_Format + PyString_FromString + PyString_FromStringAndSize + PyString_InternFromString + PyString_InternInPlace + PyString_Size + PySys_GetFile + PySys_GetObject + PySys_SetArgv + PySys_SetObject + PySys_SetPath + PySys_WriteStderr + PySys_WriteStdout + PyThreadState_Clear + PyThreadState_Delete + PyThreadState_Get + PyThreadState_GetDict + PyThreadState_New + PyThreadState_Swap + PyThread__exit_thread + PyThread_acquire_lock + PyThread_allocate_lock + PyThread_allocate_sema + PyThread_down_sema + PyThread_exit_thread + PyThread_free_lock + PyThread_free_sema + PyThread_get_thread_ident + PyThread_init_thread + PyThread_release_lock + PyThread_start_new_thread + PyThread_up_sema + PyToken_OneChar + PyToken_TwoChars + PyTokenizer_Free + PyTokenizer_FromFile + PyTokenizer_FromString + PyTokenizer_Get + PyTraceBack_Here + PyTraceBack_Print + PyTuple_Fini + PyTuple_GetItem + PyTuple_GetSlice + PyTuple_New + PyTuple_SetItem + PyTuple_Size + Py_AddPendingCall + Py_AtExit + Py_BuildValue + Py_CompileString + Py_EndInterpreter + Py_Exit + Py_FatalError + Py_FdIsInteractive + Py_Finalize + Py_FindMethod + Py_FindMethodInChain + Py_FlushLine + Py_Free + Py_GetArgcArgv + Py_GetBuildInfo + Py_GetCompiler + Py_GetCopyright + Py_GetExecPrefix + Py_GetPath + Py_GetPlatform + Py_GetPrefix + Py_GetProgramFullPath + Py_GetProgramName + Py_GetPythonHome + Py_GetVersion + Py_InitModule4 + Py_Initialize + Py_IsInitialized + Py_Main + Py_MakePendingCalls + Py_Malloc + Py_NewInterpreter + Py_Realloc + Py_ReprEnter + Py_ReprLeave + Py_SetProgramName + Py_SetPythonHome + Py_VaBuildValue + _PyBuiltin_Fini_1 + _PyBuiltin_Fini_2 + _PyBuiltin_Init_1 + _PyBuiltin_Init_2 + _PyImport_FindExtension + _PyImport_Fini + _PyImport_FixupExtension + _PyImport_Init + _PyImport_LoadDynamicModule + _PyLong_New + _PyModule_Clear + _PyObject_New + _PyObject_NewVar + _PyString_Resize + _PySys_Init + _PyTuple_Resize + _Py_MD5Final + _Py_MD5Init + _Py_MD5Update +; _Py_addbit + _Py_c_diff + _Py_c_neg + _Py_c_pow + _Py_c_prod + _Py_c_quot + _Py_c_sum +; _Py_delbitset +; _Py_mergebitset +; _Py_meta_grammar +; _Py_newbitset + _Py_re_compile_fastmap + _Py_re_compile_initialize + _Py_re_compile_pattern + _Py_re_match + _Py_re_search + _Py_re_set_syntax +; _Py_samebitset - ; Code - PyArg_Parse - PyArg_ParseTuple - PyArg_ParseTupleAndKeywords - PyArg_VaParse - PyCFunction_GetFunction - PyCFunction_GetSelf - PyCFunction_New - PyCObject_AsVoidPtr - PyCObject_FromVoidPtr - PyCObject_Import - PyCallable_Check - PyClass_IsSubclass - PyClass_New - PyCode_New - PyComplex_AsCComplex - PyComplex_FromCComplex - PyComplex_FromDoubles - PyComplex_ImagAsDouble - PyComplex_RealAsDouble - PyDict_Clear - PyDict_DelItem - PyDict_DelItemString - PyDict_GetItem - PyDict_GetItemString - PyDict_Items - PyDict_Keys - PyDict_New - PyDict_Next - PyDict_SetItem - PyDict_SetItemString - PyDict_Size - PyDict_Values - PyErr_BadArgument - PyErr_BadInternalCall - PyErr_CheckSignals - PyErr_Clear - PyErr_Fetch - PyErr_Format - PyErr_NewException - PyErr_NoMemory - PyErr_Occurred - PyErr_Print - PyErr_Restore - PyErr_SetFromErrno - PyErr_SetInterrupt - PyErr_SetNone - PyErr_SetObject - PyErr_SetString - PyEval_AcquireLock - PyEval_AcquireThread - PyEval_CallObject - PyEval_CallObjectWithKeywords - PyEval_EvalCode - PyEval_GetBuiltins - PyEval_GetFrame - PyEval_GetGlobals - PyEval_GetLocals - PyEval_GetRestricted - PyEval_InitThreads - PyEval_ReleaseLock - PyEval_ReleaseThread - PyEval_RestoreThread - PyEval_SaveThread - PyFile_AsFile - PyFile_FromFile - PyFile_FromString - PyFile_GetLine - PyFile_Name - PyFile_SetBufSize - PyFile_SoftSpace - PyFile_WriteObject - PyFile_WriteString - PyFloat_AsDouble - PyFloat_AsString - PyFloat_FromDouble - PyFrame_BlockPop - PyFrame_BlockSetup - PyFrame_FastToLocals - PyFrame_LocalsToFast - PyFrame_New - PyFunction_GetCode - PyFunction_GetGlobals - PyFunction_New - PyGrammar_AddAccelerators - PyGrammar_FindDFA - PyGrammar_LabelRepr - PyImport_AddModule - PyImport_Cleanup - PyImport_FrozenModules - PyImport_GetMagicNumber - PyImport_GetModuleDict - PyImport_Import - PyImport_ImportFrozenModule - PyImport_ImportModule - PyImport_ImportModuleEx - PyImport_ReloadModule - PyInstance_DoBinOp - PyInstance_New - PyInt_AsLong - PyInt_FromLong - PyInt_GetMax - PyInterpreterState_Clear - PyInterpreterState_Delete - PyInterpreterState_New - PyList_Append - PyList_AsTuple - PyList_GetItem - PyList_GetSlice - PyList_Insert - PyList_New - PyList_Reverse - PyList_SetItem - PyList_SetSlice - PyList_Size - PyList_Sort - PyLong_AsDouble - PyLong_AsLong - PyLong_AsUnsignedLong - PyLong_FromDouble - PyLong_FromLong - PyLong_FromString - PyLong_FromUnsignedLong - PyMapping_Check - PyMapping_GetItemString - PyMapping_HasKey - PyMapping_HasKeyString - PyMapping_Length - PyMapping_SetItemString - PyMarshal_Init - PyMarshal_ReadLongFromFile - PyMarshal_ReadObjectFromFile - PyMarshal_ReadObjectFromString - PyMarshal_WriteLongToFile - PyMarshal_WriteObjectToFile - PyMem_Free - PyMem_Malloc - PyMem_Realloc - PyMember_Get - PyMember_Set - PyMethod_Class - PyMethod_Function - PyMethod_New - PyMethod_Self - PyModule_GetDict - PyModule_GetName - PyModule_New - PyNode_AddChild - PyNode_Compile - PyNode_Free - PyNode_New - PyNumber_Absolute - PyNumber_Add - PyNumber_And - PyNumber_Check - PyNumber_Coerce - PyNumber_Divide - PyNumber_Divmod - PyNumber_Float - PyNumber_Int - PyNumber_Invert - PyNumber_Long - PyNumber_Lshift - PyNumber_Multiply - PyNumber_Negative - PyNumber_Or - PyNumber_Positive - PyNumber_Power - PyNumber_Remainder - PyNumber_Rshift - PyNumber_Subtract - PyNumber_Xor - PyOS_GetLastModificationTime - PyOS_InitInterrupts - PyOS_InterruptOccurred - PyOS_Readline - PyOS_strtol - PyOS_strtoul - PyObject_CallFunction - PyObject_CallMethod - PyObject_CallObject - PyObject_Compare - PyObject_GetAttr - PyObject_GetAttrString - PyObject_GetItem - PyObject_HasAttrString - PyObject_Hash - PyObject_IsTrue - PyObject_Length - PyObject_Print - PyObject_Repr - PyObject_SetAttr - PyObject_SetAttrString - PyObject_SetItem - PyObject_Str - PyObject_Type - PyParser_AddToken - PyParser_Delete - PyParser_New - PyParser_ParseFile - PyParser_ParseString - PyParser_SimpleParseFile - PyParser_SimpleParseString - PyRange_New - PyRun_AnyFile - PyRun_File - PyRun_InteractiveLoop - PyRun_InteractiveOne - PyRun_SimpleFile - PyRun_SimpleString - PyRun_String - PySequence_Check - PySequence_Concat - PySequence_Count - PySequence_GetItem - PySequence_GetSlice - PySequence_In - PySequence_Index - PySequence_Length - PySequence_Repeat - PySequence_SetItem - PySequence_SetSlice - PySequence_Tuple - PySlice_GetIndices - PySlice_New - PyString_AsString - PyString_Concat - PyString_ConcatAndDel - PyString_Format - PyString_FromString - PyString_FromStringAndSize - PyString_Size - PySys_GetFile - PySys_GetObject - PySys_SetArgv - PySys_SetObject - PySys_SetPath - PyThreadState_Clear - PyThreadState_Delete - PyThreadState_Get - PyThreadState_New - PyThreadState_Swap - PyThread_acquire_lock - PyThread_allocate_lock - PyThread_allocate_sema - PyThread_down_sema - PyThread_exit_thread - PyThread_free_lock - PyThread_free_sema - PyThread_get_thread_ident - PyThread_init_thread - PyThread_release_lock - PyThread_start_new_thread - PyThread_up_sema - PyToken_OneChar - PyToken_TwoChars - PyTokenizer_Free - PyTokenizer_FromFile - PyTokenizer_FromString - PyTokenizer_Get - PyTraceBack_Here - PyTraceBack_Print - PyTuple_GetItem - PyTuple_GetSlice - PyTuple_New - PyTuple_SetItem - PyTuple_Size - Py_AtExit - Py_BuildValue - Py_CompileString - Py_EndInterpreter - Py_Exit - Py_FatalError - Py_FdIsInteractive - Py_Finalize - Py_FindMethod - Py_FindMethodInChain - Py_FlushLine - Py_Free - Py_FrozenMain - Py_GetBuildInfo - Py_GetCopyright - Py_GetExecPrefix - Py_GetPath - Py_GetPrefix - Py_GetProgramFullPath - Py_GetProgramName - Py_GetVersion - Py_InitModule4 - Py_Initialize - Py_IsInitialized - Py_Main - Py_Malloc - Py_NewInterpreter - Py_Realloc - Py_SetProgramName - Py_VaBuildValue - _PyObject_New - _PyObject_NewVar - _PyString_Resize - _Py_c_diff - _Py_c_neg - _Py_c_pow - _Py_c_prod - _Py_c_quot - _Py_c_sum - initimp diff --git a/PC/os2vacpp/readme.txt b/PC/os2vacpp/readme.txt index f805232..2da27b9 100644 --- a/PC/os2vacpp/readme.txt +++ b/PC/os2vacpp/readme.txt @@ -1,114 +1,114 @@ -IBM VisualAge C/C++ for OS/2 -============================ - -To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE' -command. This will build a PYTHON15.DLL containing the set of Python -modules listed in config.c and a small PYTHON.EXE to start the -interpreter. - -By changing the C compiler flag /Gd- in the makefile to /Gd+, you can -reduce the size of these by causing Python to dynamically link to the -C runtime DLLs instead of including their bulk in your binaries. -However, this means that any system on which you run Python must have -the VAC++ compiler installed in order to have those DLLs available. - -During the build process you may see a couple of harmless warnings: - - From the C Compiler, "No function prototype given for XXX", which - comes from the use of K&R parameters within Python for portability. - - From the ILIB librarian, "Module Not Found (XXX)", which comes - from its attempt to perform the (-+) operation, which removes and - then adds a .OBJ to the library. The first time a build is done, - it obviously cannot remove what is not yet built. - -This build includes support for most Python functionality as well as -TCP/IP sockets. It omits the Posix ability to 'fork' a process but -supports threads using OS/2 native capabilities. I have tried to -support everything possible but here are a few usage notes. - - --- os.popen() Usage Warnings - -With respect to my implementation of popen() under OS/2: - - import os - - fd = os.popen("pkzip.exe -@ junk.zip", 'wb') - fd.write("file1.txt\n") - fd.write("file2.txt\n") - fd.write("file3.txt\n") - fd.write("\x1a") # Should Not Be Necessary But Is - fd.close() - -There is a bug, either in the VAC++ compiler or OS/2 itself, where the -simple closure of the write-side of a pipe -to- a process does not -send an EOF to that process. I find I must explicitly write a -control-Z (EOF) before closing the pipe. This is not a problem when -using popen() in read mode. - -One other slight difference with my popen() is that I return None -from the close(), instead of the Unix convention of the return code -of the spawned program. I could find no easy way to do this under -OS/2. - - --- BEGINLIBPATH/ENDLIBPATH - -With respect to environment variables, this OS/2 port supports the -special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to -control where to load conventional DLLs from. Those names are -intercepted and converted to calls on the OS/2 kernel APIs and -are inherited by child processes, whether Python-based or not. - -A few new attributes have been added to the os module: - - os.meminstalled # Count of Bytes of RAM Installed on Machine - os.memkernel # Count of Bytes of RAM Reserved (Non-Swappable) - os.memvirtual # Count of Bytes of Virtual RAM Possible - os.timeslice # Duration of Scheduler Timeslice, in Milliseconds - os.maxpathlen # Maximum Length of a Path Specification, in chars - os.maxnamelen # Maximum Length of a Single Dir/File Name, in chars - os.version # Version of OS/2 Being Run e.g. "4.00" - os.revision # Revision of OS/2 Being Run (usually zero) - os.bootdrive # Drive that System Booted From e.g. "C:" - # (useful to find the CONFIG.SYS used to boot with) - - --- Using Python as the Default OS/2 Batch Language - -Note that OS/2 supports the Unix technique of putting the special -comment line at the time of scripts e.g. "#!/usr/bin/python" in -a different syntactic form. To do this, put your script into a file -with a .CMD extension and added 'extproc' to the top as follows: - - extproc C:\Python\Python.exe -x - import os - print "Hello from Python" - -The '-x' option tells Python to skip the first line of the file -while processing the rest as normal Python source. - - --- Suggested Environment Variable Setup - -With respect to the environment variables for Python, I use the -following setup: - - Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs - Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \ - E:\Tau\Projects\Python\Lib\plat-win - -The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where -you put any Python extension DLLs you may create/obtain. There -are none provided with this release. - - --- Contact Info - -If you have questions, suggestions or problems specifically with -the OS/2 VAC++ port of Python, please contact me at: - - Jeff Rush . - -I support no other platform but OS/2 (and eventually AmigaDOS). +IBM VisualAge C/C++ for OS/2 +============================ + +To build Python for OS/2, change into ./os2vacpp and issue an 'NMAKE' +command. This will build a PYTHON15.DLL containing the set of Python +modules listed in config.c and a small PYTHON.EXE to start the +interpreter. + +By changing the C compiler flag /Gd- in the makefile to /Gd+, you can +reduce the size of these by causing Python to dynamically link to the +C runtime DLLs instead of including their bulk in your binaries. +However, this means that any system on which you run Python must have +the VAC++ compiler installed in order to have those DLLs available. + +During the build process you may see a couple of harmless warnings: + + From the C Compiler, "No function prototype given for XXX", which + comes from the use of K&R parameters within Python for portability. + + From the ILIB librarian, "Module Not Found (XXX)", which comes + from its attempt to perform the (-+) operation, which removes and + then adds a .OBJ to the library. The first time a build is done, + it obviously cannot remove what is not yet built. + +This build includes support for most Python functionality as well as +TCP/IP sockets. It omits the Posix ability to 'fork' a process but +supports threads using OS/2 native capabilities. I have tried to +support everything possible but here are a few usage notes. + + +-- os.popen() Usage Warnings + +With respect to my implementation of popen() under OS/2: + + import os + + fd = os.popen("pkzip.exe -@ junk.zip", 'wb') + fd.write("file1.txt\n") + fd.write("file2.txt\n") + fd.write("file3.txt\n") + fd.write("\x1a") # Should Not Be Necessary But Is + fd.close() + +There is a bug, either in the VAC++ compiler or OS/2 itself, where the +simple closure of the write-side of a pipe -to- a process does not +send an EOF to that process. I find I must explicitly write a +control-Z (EOF) before closing the pipe. This is not a problem when +using popen() in read mode. + +One other slight difference with my popen() is that I return None +from the close(), instead of the Unix convention of the return code +of the spawned program. I could find no easy way to do this under +OS/2. + + +-- BEGINLIBPATH/ENDLIBPATH + +With respect to environment variables, this OS/2 port supports the +special-to-OS/2 magic names of 'BEGINLIBPATH' and 'ENDLIBPATH' to +control where to load conventional DLLs from. Those names are +intercepted and converted to calls on the OS/2 kernel APIs and +are inherited by child processes, whether Python-based or not. + +A few new attributes have been added to the os module: + + os.meminstalled # Count of Bytes of RAM Installed on Machine + os.memkernel # Count of Bytes of RAM Reserved (Non-Swappable) + os.memvirtual # Count of Bytes of Virtual RAM Possible + os.timeslice # Duration of Scheduler Timeslice, in Milliseconds + os.maxpathlen # Maximum Length of a Path Specification, in chars + os.maxnamelen # Maximum Length of a Single Dir/File Name, in chars + os.version # Version of OS/2 Being Run e.g. "4.00" + os.revision # Revision of OS/2 Being Run (usually zero) + os.bootdrive # Drive that System Booted From e.g. "C:" + # (useful to find the CONFIG.SYS used to boot with) + + +-- Using Python as the Default OS/2 Batch Language + +Note that OS/2 supports the Unix technique of putting the special +comment line at the time of scripts e.g. "#!/usr/bin/python" in +a different syntactic form. To do this, put your script into a file +with a .CMD extension and added 'extproc' to the top as follows: + + extproc C:\Python\Python.exe -x + import os + print "Hello from Python" + +The '-x' option tells Python to skip the first line of the file +while processing the rest as normal Python source. + + +-- Suggested Environment Variable Setup + +With respect to the environment variables for Python, I use the +following setup: + + Set PYTHONHOME=E:\Tau\Projects\Python;D:\DLLs + Set PYTHONPATH=.;E:\Tau\Projects\Python\Lib; \ + E:\Tau\Projects\Python\Lib\plat-win + +The EXEC_PREFIX (optional second pathspec on PYTHONHOME) is where +you put any Python extension DLLs you may create/obtain. There +are none provided with this release. + + +-- Contact Info + +If you have questions, suggestions or problems specifically with +the OS/2 VAC++ port of Python, please contact me at: + + Jeff Rush . + +I support no other platform but OS/2 (and eventually AmigaDOS). -- cgit v0.12