fpc/api/inc/platform.inc
2000-11-13 14:35:57 +00:00

333 lines
12 KiB
PHP

{
$Id$
Include file to sort out compilers/platforms/targets
Copyright (c) 1997 Balazs Scheidler (bazsi@tas.vein.hu)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
****************************************************************************
This include file defines some conditional defines to allow us to select
the compiler/platform/target in a consequent way.
OS_XXXX The operating system used (XXXX may be one of:
DOS, OS2, Linux, Windows, Go32, FreeBSD,Linux)
PPC_XXXX The compiler used: BP, FPK, Virtual, Speed
BIT_XX The number of bits of the target platform: 16 or 32
PROC_XXXX The mode of the target processor (Real or Protected)
This shouldn't be used, except for i386 specific parts.
ASM_XXXX This is the assembler type: BP, ISO-ANSI, FPK
****************************************************************************
Changelog:
Date Version Who Comments
02 Jul 97 0.1 Bazsi Initial implementation~
28 Aug 97 0.2 LdeB Fixed OS2 platform sort out
29 Aug 97 0.3 LdeB Added assembler type change
29 Aug 97 0.4 LdeB OS_DOS removed from Windows
23 Oct 97 0.5 LdeB Delphi & Speed compilers added
05 May 98 0.6 LdeB Virtual pascal 2.0 added
19 May 98 0.7 LdeB Delphi2/3 definitions altered
6 Aug 98 0.8 CEC/LdeB FPC only support - fixed for Win32
10 Aug 98 0.9 LdeB BP_VMTLink def/Undef for object reg.
27 Aug 98 1.0 LdeB Fixed Atari etc not $UNDEF OS_DOS.
25 Oct 98 1.1 pfv Delphi4
13 nov 00 1.2 mvdv Unix renamefest Addition of FreeBSD
and change of Linux conditional
meaning
****************************************************************************
This is how the IFDEF and UNDEF statements below should translate.
PLATFORM SYSTEM COMPILER COMP ID CPU MODE BITS ASSEMBLER
-------- ------ -------- ------- -------- ---- ---------
DOS OS_DOS BP/TP7 PPC_BP PROC_Real BIT_16 ASM_BP
FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
DPMI OS_DOS BP/TP7 PPC_BP PROC_Protected BIT_16 ASM_BP
LINUX OS_LINUX FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
FREEBSD OS_FREEBSD FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
WINDOWS OS_WINDOWS BP/TP7 PPC_BP PROC_Protected BIT_16 ASM_BP
DELPHI PPC_DELPHI PROC_Protected BIT_16 ASM_BP
DELPHI2 PPC_DELPHI&2 PROC_Protected BIT_16 ASM_BP
WIN95/NT OS_WINDOWS DELPHI2 PPC_DELPHI&2 PROC_Protected BIT_32 ASM_BP
DELPHI3 PPC_DELPHI&3 PROC_Protected BIT_32 ASM_BP
DELPHI4 PPC_DELPHI&3 PROC_Protected BIT_32 ASM_BP
VIRTUAL PPC_VIRTUAL PROC_Protected BIT 32 ASM_BP
OS2 OS_OS2 BPOS2 PPC_BPOS2 PROC_Protected BIT_16 ASM_BP
VIRTUAL PPC_VIRTUAL PROC_Protected BIT_32 ASM_BP
SPEED PPC_SPEED PROC_Protected BIT_32 ASM_BP
FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
****************************************************************************}
{****************************************************************************
FOR ALL COMPILERS BP_VMTLink will be defined but FPC and Delphi3 undefine it
****************************************************************************}
{****************************************************************************
FOR FPC THESE ARE THE TRANSLATIONS
PLATFORM SYSTEM COMPILER HANDLE SIZE ASM CPU
-------- ------ -------- ----------- ---- ---
DOS OS_DOS,
OS_GO32 FPC 32-bit AT&T CPU86
WIN32 OS_WINDOWS FPC 32-bit AT&T ----
LINUX OS_LINUX,
OS_UNIX FPC 32-bit AT&T ----
FREEBSD OS_FREEBSD,
OS_BSD,
OS_UNIX FPC 32-bit AT&T ----
OS2 OS_OS2 FPC ????? AT&T CPU86
ATARI OS_ATARI FPC 32-bit Internal CPU68
MACOS OS_MAC FPC ????? Internal CPU68
AMIGA OS_AMIGA FPC 32-bit Internal CPU68
Note: All Unices have OS_UNIX in common. All BSD's (Open,Net,Free) have
OS_BSD in common.
****************************************************************************}
{---------------------------------------------------------------------------}
{ Initial assume BORLAND 16 BIT DOS COMPILER - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$DEFINE OS_DOS}
{$DEFINE PROC_Real}
{$DEFINE BIT_16}
{$DEFINE PPC_BP}
{$DEFINE ASM_BP}
{$DEFINE BP_VMTLink}
{---------------------------------------------------------------------------}
{ BORLAND 16 BIT DPMI changes protected mode - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF DPMI}
{$UNDEF PROC_Real}
{$DEFINE PROC_Protected}
{$ENDIF}
{---------------------------------------------------------------------------}
{ FPC 32 BIT COMPILER changes ASM, 32 bits etc - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF FPC}
{$UNDEF PROC_Real}
{$DEFINE PROC_Protected}
{$UNDEF BIT_16}
{$DEFINE BIT_32}
{$UNDEF PPC_BP}
{$DEFINE PPC_FPC}
{$UNDEF ASM_BP}
{$DEFINE ASM_FPC}
{$UNDEF BP_VMTLink}
{$ENDIF}
{---------------------------------------------------------------------------}
{ FPC LINUX COMPILER changes operating system - Updated 12nov00 MvdV }
{ Note: Other linux compilers would need to change other details }
{---------------------------------------------------------------------------}
{$IFDEF UNIX}
{$UNDEF OS_DOS}
{$DEFINE OS_UNIX}
{$IFNDEF BSD} {Work around. BSD still defines "linux"
in 1.1 for now}
{$DEFINE OS_LINUX}
{$ELSE}
{$DEFINE OS_FREEBSD}
{$DEFINE OS_BSD}
{$ENDIF}
{$ENDIF}
{---------------------------------------------------------------------------}
{ FPC GO32V2 COMPILER changes operating system - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF GO32V2}
{$DEFINE OS_GO32}
{$ENDIF}
{---------------------------------------------------------------------------}
{ 32 BIT WINDOWS COMPILERS changes bit size - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF WIN32}
{$IFNDEF WINDOWS}
{$DEFINE WINDOWS}
{$ENDIF}
{$UNDEF BIT_16}
{$DEFINE BIT_32}
{$ENDIF}
{---------------------------------------------------------------------------}
{ WINDOWS COMPILERS change op system and proc mode - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF WINDOWS}
{$UNDEF OS_DOS}
{$DEFINE OS_WINDOWS}
{$UNDEF PROC_Real}
{$DEFINE PROC_Protected}
{$ENDIF}
{---------------------------------------------------------------------------}
{ DELPHI1 COMPILER changes compiler type - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF VER80}
{$UNDEF PPC_BP}
{$DEFINE PPC_DELPHI}
{$ENDIF}
{---------------------------------------------------------------------------}
{ DELPHI2 COMPILER changes compiler type - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF VER90}
{$UNDEF PPC_BP}
{$DEFINE PPC_DELPHI}
{$DEFINE PPC_DELPHI2}
{$ENDIF}
{---------------------------------------------------------------------------}
{ DELPHI3 COMPILER changes compiler type - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF VER100}
{$UNDEF PPC_BP}
{$DEFINE PPC_DELPHI}
{$DEFINE PPC_DELPHI3}
{$UNDEF BP_VMTLink}
{$ENDIF}
{---------------------------------------------------------------------------}
{ DELPHI4 COMPILER changes compiler type - Updated 25Oct98 pfv }
{---------------------------------------------------------------------------}
{$IFDEF VER120}
{$UNDEF PPC_BP}
{$DEFINE PPC_DELPHI}
{$DEFINE PPC_DELPHI3}
{$DEFINE PPC_DELPHI4}
{$UNDEF BP_VMTLink}
{$ENDIF}
{---------------------------------------------------------------------------}
{ OS2 COMPILERS change compiler type and mode - Updated 27Aug98 LdB }
{ Note: Assumes BPOS2 16BIT OS2 patch except for FPC which undefines this }
{---------------------------------------------------------------------------}
{$IFDEF OS2}
{$UNDEF OS_DOS}
{$DEFINE OS_OS2}
{$UNDEF PROC_Real}
{$DEFINE PROC_Protected}
{$UNDEF PPC_BP}
{$DEFINE PPC_BPOS2}
{$IFDEF FPC}
{$UNDEF PPC_BPOS2}
{$ENDIF}
{$ENDIF}
{---------------------------------------------------------------------------}
{ VIRTUAL PASCAL changes compiler type/32 bit - Updated 27Aug98 LdB }
{ Note: VP2 can compile win 32 code so changes op system as needed }
{---------------------------------------------------------------------------}
{$IFDEF VirtualPascal}
{$UNDEF BIT_16}
{$DEFINE BIT_32}
{$IFDEF PPC_BPOS2}
{$UNDEF PPC_BPOS2}
{$ENDIF}
{$DEFINE PPC_VIRTUAL}
{$IFDEF WIN32}
{$UNDEF PPC_BP}
{$UNDEF OS_OS2}
{$DEFINE OS_WINDOWS}
{$ENDIF}
{$ENDIF}
{---------------------------------------------------------------------------}
{ SPEED COMPILER changes compiler type/32 bit - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF Speed}
{$UNDEF BIT_16}
{$DEFINE BIT_32}
{$UNDEF PPC_BPOS2}
{$DEFINE PPC_SPEED}
{$ENDIF}
{---------------------------------------------------------------------------}
{ FPC AMIGA COMPILER changes op system and CPU type - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF AMIGA}
{$UNDEF OS_DOS}
{$DEFINE OS_AMIGA}
{$IFDEF CPU86}
{$UNDEF CPU86}
{$ENDIF}
{$IFNDEF CPU68}
{$DEFINE CPU68}
{$ENDIF}
{$ENDIF}
{---------------------------------------------------------------------------}
{ FPC ATARI COMPILER changes op system and CPU type - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF ATARI}
{$UNDEF OS_DOS}
{$DEFINE OS_ATARI}
{$IFDEF CPU86}
{$UNDEF CPU86}
{$ENDIF}
{$IFNDEF CPU68}
{$DEFINE CPU68}
{$ENDIF}
{$ENDIF}
{---------------------------------------------------------------------------}
{ FPC MAC COMPILER changes op system and CPU type - Updated 27Aug98 LdB }
{---------------------------------------------------------------------------}
{$IFDEF MACOS}
{$UNDEF OS_DOS}
{$DEFINE OS_MAC}
{$IFDEF CPU86}
{$UNDEF CPU86}
{$ENDIF}
{$IFNDEF CPU68}
{$DEFINE CPU68}
{$ENDIF}
{$ENDIF}
{
$Log$
Revision 1.3 2000-11-13 14:35:57 marco
* Unix Renamefest for defines.
Revision 1.2 2000/07/13 11:32:24 michael
+ removed logs
}