summary refs log tree commit diff stats
path: root/nim/platform.pas
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-04-12 01:13:42 +0200
committerAraq <rumpf_a@web.de>2011-04-12 01:13:42 +0200
commitcd292568d775d55d9abb51e962882ecda12c03a9 (patch)
tree85451f0e1f17dc0463350915f12bdd0a82a73455 /nim/platform.pas
parent46c41e43690cba9bc1caff6a994bb6915df8a1b7 (diff)
downloadNim-cd292568d775d55d9abb51e962882ecda12c03a9.tar.gz
big repo cleanup
Diffstat (limited to 'nim/platform.pas')
-rwxr-xr-xnim/platform.pas662
1 files changed, 0 insertions, 662 deletions
diff --git a/nim/platform.pas b/nim/platform.pas
deleted file mode 100755
index c2fa711b9..000000000
--- a/nim/platform.pas
+++ /dev/null
@@ -1,662 +0,0 @@
-//
-//
-//           The Nimrod Compiler
-//        (c) Copyright 2009 Andreas Rumpf
-//
-//    See the file "copying.txt", included in this
-//    distribution, for details about the copyright.
-//
-unit platform;
-
-// This module contains data about the different processors
-// and operating systems.
-// Note: Unfortunately if an OS or CPU is listed here this does not mean that
-// Nimrod has been tested on this platform or that the RTL has been ported.
-// Feel free to test for your excentric platform!
-
-interface
-
-{$include 'config.inc'}
-
-uses
-  nsystem, strutils;
-
-type
-  TSystemOS = (
-    // Also add OS in initialization section and alias conditionals to
-    // condsyms (end of module).
-    osNone,
-    osDos,
-    osWindows,
-    osOs2,
-    osLinux,
-    osMorphos,
-    osSkyos,
-    osSolaris,
-    osIrix,
-    osNetbsd,
-    osFreebsd,
-    osOpenbsd,
-    osAix,
-    osPalmos,
-    osQnx,
-    osAmiga,
-    osAtari,
-    osNetware,
-    osMacos,
-    osMacosx,
-    osEcmaScript,
-    osNimrodVM
-  );
-type
-  TInfoOSProp = (
-    ospNeedsPIC,        // OS needs PIC for libraries
-    ospCaseInsensitive, // OS filesystem is case insensitive
-    ospPosix            // OS is posix-like
-  );
-
-  TInfoOSProps = set of TInfoOSProp;
-  TInfoOS = record{@tuple}
-    name: string;
-    parDir: string;
-    dllFrmt: string;
-    altDirSep: string;
-    objExt: string;
-    newLine: string;
-    pathSep: string;
-    dirSep: string;
-    scriptExt: string;
-    curDir: string;
-    exeExt: string;
-    extSep: string;
-    props: TInfoOSProps;
-  end;
-const
-  OS: array [succ(low(TSystemOS))..high(TSystemOS)] of TInfoOS = (
-  (
-    name: 'DOS';
-    parDir: '..';
-    dllFrmt: '$1.dll';
-    altDirSep: '/'+'';
-    objExt: '.obj';
-    newLine: #13#10;
-    pathSep: ';'+'';
-    dirSep: '\'+'';
-    scriptExt: '.bat';
-    curDir: '.'+'';
-    exeExt: '.exe';
-    extSep: '.'+'';
-    props: {@set}[ospCaseInsensitive];
-  ),
-  (
-    name: 'Windows';
-    parDir: '..';
-    dllFrmt: '$1.dll';
-    altDirSep: '/'+'';
-    objExt: '.obj';
-    newLine: #13#10;
-    pathSep: ';'+'';
-    dirSep: '\'+'';
-    scriptExt: '.bat';
-    curDir: '.'+'';
-    exeExt: '.exe';
-    extSep: '.'+'';
-    props: {@set}[ospCaseInsensitive];
-  ),
-  (
-    name: 'OS2';
-    parDir: '..';
-    dllFrmt: '$1.dll';
-    altDirSep: '/'+'';
-    objExt: '.obj';
-    newLine: #13#10;
-    pathSep: ';'+'';
-    dirSep: '\'+'';
-    scriptExt: '.bat';
-    curDir: '.'+'';
-    exeExt: '.exe';
-    extSep: '.'+'';
-    props: {@set}[ospCaseInsensitive];
-  ),
-  (
-    name: 'Linux';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'MorphOS';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'SkyOS';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'Solaris';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'Irix';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'NetBSD';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'FreeBSD';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'OpenBSD';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'AIX';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'PalmOS';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC];
-  ),
-  (
-    name: 'QNX';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'Amiga';
-    parDir: '..';
-    dllFrmt: '$1.library';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC];
-  ),
-  (
-    name: 'Atari';
-    parDir: '..';
-    dllFrmt: '$1.dll';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '';
-    curDir: '.'+'';
-    exeExt: '.tpp';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC];
-  ),
-  (
-    name: 'Netware';
-    parDir: '..';
-    dllFrmt: '$1.nlm';
-    altDirSep: '/'+'';
-    objExt: '';
-    newLine: #13#10;
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '.nlm';
-    extSep: '.'+'';
-    props: {@set}[ospCaseInsensitive];
-  ),
-  (
-    name: 'MacOS';
-    parDir: '::';
-    dllFrmt: '$1Lib';
-    altDirSep: ':'+'';
-    objExt: '.o';
-    newLine: #13+'';
-    pathSep: ','+'';
-    dirSep: ':'+'';
-    scriptExt: '';
-    curDir: ':'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospCaseInsensitive];
-  ),
-  (
-    name: 'MacOSX';
-    parDir: '..';
-    dllFrmt: 'lib$1.dylib';
-    altDirSep: ':'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[ospNeedsPIC, ospPosix];
-  ),
-  (
-    name: 'EcmaScript';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[];
-  ),
-  (
-    name: 'NimrodVM';
-    parDir: '..';
-    dllFrmt: 'lib$1.so';
-    altDirSep: '/'+'';
-    objExt: '.o';
-    newLine: #10+'';
-    pathSep: ':'+'';
-    dirSep: '/'+'';
-    scriptExt: '.sh';
-    curDir: '.'+'';
-    exeExt: '';
-    extSep: '.'+'';
-    props: {@set}[];
-  )
-);
-type
-  TSystemCPU = (
-    // Also add CPU for in initialization section and alias conditionals to
-    // condsyms (end of module).
-    cpuNone,
-    cpuI386,
-    cpuM68k,
-    cpuAlpha,
-    cpuPowerpc,
-    cpuSparc,
-    cpuVm,
-    cpuIa64,
-    cpuAmd64,
-    cpuMips,
-    cpuArm,
-    cpuEcmaScript,
-    cpuNimrodVM
-  );
-type
-  TEndian = (littleEndian, bigEndian);
-  TInfoCPU = record{@tuple}
-    name: string;
-    intSize: int;
-    endian: TEndian;
-    floatSize: int;
-    bit: int;
-  end;
-const
-  EndianToStr: array [TEndian] of string = ('littleEndian', 'bigEndian');
-  CPU: array [succ(low(TSystemCPU))..high(TSystemCPU)] of TInfoCPU = (
-  (
-    name: 'i386';
-    intSize: 32;
-    endian: littleEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'm68k';
-    intSize: 32;
-    endian: bigEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'alpha';
-    intSize: 64;
-    endian: littleEndian;
-    floatSize: 64;
-    bit: 64;
-  ),
-  (
-    name: 'powerpc';
-    intSize: 32;
-    endian: bigEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'sparc';
-    intSize: 32;
-    endian: bigEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'vm';
-    intSize: 32;
-    endian: littleEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'ia64';
-    intSize: 64;
-    endian: littleEndian;
-    floatSize: 64;
-    bit: 64;
-  ),
-  (
-    name: 'amd64';
-    intSize: 64;
-    endian: littleEndian;
-    floatSize: 64;
-    bit: 64;
-  ),
-  (
-    name: 'mips';
-    intSize: 32;
-    endian: bigEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'arm';
-    intSize: 32;
-    endian: littleEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'ecmascript';
-    intSize: 32;
-    endian: bigEndian;
-    floatSize: 64;
-    bit: 32;
-  ),
-  (
-    name: 'nimrodvm';
-    intSize: 32;
-    endian: bigEndian;
-    floatSize: 64;
-    bit: 32;
-  )
-);
-
-var
-  targetCPU, hostCPU: TSystemCPU;
-  targetOS, hostOS: TSystemOS;
-
-function NameToOS(const name: string): TSystemOS;
-function NameToCPU(const name: string): TSystemCPU;
-
-var
-  IntSize: int;
-  floatSize: int;
-  PtrSize: int;
-  tnl: string; // target newline
-
-procedure setTarget(o: TSystemOS; c: TSystemCPU);
-
-implementation
-
-procedure setTarget(o: TSystemOS; c: TSystemCPU);
-begin
-  assert(c <> cpuNone);
-  assert(o <> osNone);
-  targetCPU := c;
-  targetOS := o;
-  intSize := cpu[c].intSize div 8;
-  floatSize := cpu[c].floatSize div 8;
-  ptrSize := cpu[c].bit div 8;
-  tnl := os[o].newLine;
-end;
-
-function NameToOS(const name: string): TSystemOS;
-var
-  i: TSystemOS;
-begin
-  for i := succ(osNone) to high(TSystemOS) do
-    if cmpIgnoreStyle(name, OS[i].name) = 0 then begin
-      result := i; exit
-    end;
-  result := osNone
-end;
-
-function NameToCPU(const name: string): TSystemCPU;
-var
-  i: TSystemCPU;
-begin
-  for i := succ(cpuNone) to high(TSystemCPU) do
-    if cmpIgnoreStyle(name, CPU[i].name) = 0 then begin
-      result := i; exit
-    end;
-  result := cpuNone
-end;
-
-// this is Ok for the Pascal version, but the Nimrod version needs a different
-// mechanism
-{@emit
-procedure nimCPU(): cstring; importc; noconv;}
-{@emit
-procedure nimOS(): cstring; importc; noconv;}
-
-{@ignore}
-initialization
-{$ifdef i386}
-  hostCPU := cpuI386;
-{$endif}
-{$ifdef m68k}
-  hostCPU := cpuM68k;
-{$endif}
-{$ifdef alpha}
-  hostCPU := cpuAlpha;
-{$endif}
-{$ifdef powerpc}
-  hostCPU := cpuPowerpc;
-{$endif}
-{$ifdef sparc}
-  hostCPU := cpuSparc;
-{$endif}
-{$ifdef vm}
-  hostCPU := cpuVm;
-{$endif}
-{$ifdef ia64}
-  hostCPU := cpuIa64;
-{$endif}
-{$ifdef amd64}
-  hostCPU := cpuAmd64;
-{$endif}
-{$ifdef mips}
-  hostCPU := cpuMips;
-{$endif}
-{$ifdef arm}
-  hostCPU := cpuArm;
-{$endif}
-{$ifdef DOS}
-  hostOS := osDOS;
-{$endif}
-{$ifdef Windows}
-  hostOS := osWindows;
-{$endif}
-{$ifdef OS2}
-  hostOS := osOS2;
-{$endif}
-{$ifdef Linux}
-  hostOS := osLinux;
-{$endif}
-{$ifdef MorphOS}
-  hostOS := osMorphOS;
-{$endif}
-{$ifdef SkyOS}
-  hostOS := osSkyOS;
-{$endif}
-{$ifdef Solaris}
-  hostOS := osSolaris;
-{$endif}
-{$ifdef Irix}
-  hostOS := osIrix;
-{$endif}
-{$ifdef NetBSD}
-  hostOS := osNetBSD;
-{$endif}
-{$ifdef FreeBSD}
-  hostOS := osFreeBSD;
-{$endif}
-{$ifdef OpenBSD}
-  hostOS := osOpenBSD;
-{$endif}
-{$ifdef PalmOS}
-  hostOS := osPalmOS;
-{$endif}
-{$ifdef QNX}
-  hostOS := osQNX;
-{$endif}
-{$ifdef Amiga}
-  hostOS := osAmiga;
-{$endif}
-{$ifdef Atari}
-  hostOS := osAtari;
-{$endif}
-{$ifdef Netware}
-  hostOS := osNetware;
-{$endif}
-{$ifdef MacOS}
-  hostOS := osMacOS;
-{$endif}
-{$ifdef MacOSX}
-  hostOS := osMacOSX;
-{$endif}
-{$ifdef darwin} // BUGFIX
-  hostOS := osMacOSX;
-{$endif}
-{@emit
-  hostCPU := nameToCPU(toString(nimCPU()));
-}
-{@emit
-  hostOS := nameToOS(toString(nimOS()));
-}
-  setTarget(hostOS, hostCPU); // assume no cross-compiling
-end.