mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 00:32:24 +00:00
Some more significant ReadMe work.
This commit is contained in:
parent
a359e16ae9
commit
b495b2725c
15 changed files with 148 additions and 2997 deletions
|
|
@ -2,136 +2,6 @@
|
|||
|
||||
This is Norayr Chilingarian's Vishap Oberon adapted to build a little more easily on a wider variety of modern platforms, including Linuxes, BSDs, MAC OSx Darwin, Cygwin on Windows, Mingw on Cygwin on Windows, Microsoft Visual C++ and even Android under Termux. See 'Changes relative to Vishap Oberon' below.
|
||||
|
||||
#### Building and installation summary
|
||||
|
||||
1. git clone https://github.com/dcwbrown/olang
|
||||
2. cd olang
|
||||
3. make full
|
||||
|
||||
Since 'make full' will install the compiler and libraries, it needs root (unix) or administrator (windows) privileges.
|
||||
|
||||
| System | Install dir | Access required |
|
||||
| ----------------------- | -------------------------------------- | ------------------------------ |
|
||||
| Linux | /opt/voc | Needs root except under cygwin |
|
||||
| BSD | /usr/local/share/voc | Needs root |
|
||||
| Windows (mingw or Visual C) | %ProgramFiles[(X86)]% | Needs administrator |
|
||||
| Termux (android) | /data/data/com.termux/files/opt/voc | |
|
||||
|
||||
|
||||
#### 32 and 64 bit
|
||||
|
||||
The size of compiler built is determined by the C compiler that runs, which is in turn determined by
|
||||
the shell or command prompt configuration you are running under.
|
||||
|
||||
The following Oberon types are independent of compiler size:
|
||||
|
||||
| Types | Size |
|
||||
| ----- | -------|
|
||||
| CHAR, SHORTINT | 8 bit |
|
||||
| REAL | 32 bit |
|
||||
| LONGREAL | 64 bit |
|
||||
|
||||
The following type sizes follow the built compiler size:
|
||||
|
||||
| Types | 32 bit builds | 64 bit builds |
|
||||
| ----- | ------------- | ------------- |
|
||||
| INTEGER | 16 bit | 32 bit |
|
||||
| LONGINT, SET | 32 bit | 16 bit |
|
||||
|
||||
Note that many library modules have been written with the assumption that INTEGER
|
||||
is 16 bit and LONGINT 32 bit, therefore they will only work in 32 bit builds.
|
||||
|
||||
#### Which compiler? (gcc vs clang)
|
||||
|
||||
By default make uses the compiler defined in variable CC. This can be overriden by running 'export CC=gcc' or 'export CC=clang' from the command line before running make.
|
||||
|
||||
*Note*: be sure to run 'make clean' any time you change the value of CC. Otherwise directories will be mixed up.
|
||||
|
||||
*Note*: Darwin (MAC OS/X) redirects gcc to clang, so specifying CC=gcc still builds clang binaries under Darwin.
|
||||
|
||||
|
||||
#### Building on Windows
|
||||
|
||||
There are three ways to build on Windows:
|
||||
|
||||
| Type | How to build | Compiled binary uses: |
|
||||
| ----------- | ------- | --------------------- |
|
||||
| cygwin | Use 'make' from cygwin bash shell. | cygwin.dll |
|
||||
| mingw under cygwin | Set CC for mingw then use 'make' from cygwin bash shell. | Win32 API |
|
||||
| Visual C | Use 'make.cmd' from Visual C command prompt. | Win32 API |
|
||||
|
||||
##### mingw on cygwin
|
||||
|
||||
To use mingw, install the correct sized package and export CC= the compiler name:
|
||||
|
||||
- For 32 bit cygwin
|
||||
|
||||
- use setup-x86.exe to add the package mingw64-i686-gcc-core.
|
||||
- run 'export CC=i686-w64-mingw32-gcc' then 'make full'
|
||||
|
||||
- For 64 bit cygwin
|
||||
|
||||
- use setup-x86\_64.exe to add the package mingw64-x86\_64-gcc-core.
|
||||
- run 'export CC=x86_64-w64-mingw32-gcc' then 'make full'
|
||||
|
||||
(*Note*: Don't be put off by the name 'mingw64' in the 32 bit package.)
|
||||
|
||||
##### Microsoft Visual C compiler
|
||||
|
||||
Use the free command line Visual C++ compiler. At the time of writing it can be
|
||||
downloaded here:
|
||||
|
||||
http://landinghub.visualstudio.com/visual-cpp-build-tools
|
||||
|
||||
For example (Windows 10):
|
||||
|
||||
Start an adminstrator command prompt from the start button as follows:
|
||||
|
||||
Start / All apps / Visual C++ Build Tools
|
||||
|
||||
Right click on
|
||||
|
||||
Visual C++ 2015 x86 Native Build Tools Command Prompt
|
||||
|
||||
or
|
||||
|
||||
Visual C++ 2015 x64 Native Build Tools Command Prompt
|
||||
|
||||
And select
|
||||
|
||||
More / Administrative Command Prompt
|
||||
|
||||
#### A 'Hello' application
|
||||
|
||||
Anything appended to Oberon.Log is automatically displayed on the console, so the
|
||||
following conventional Oberon program will display 'Hello.':
|
||||
|
||||
MODULE hello;
|
||||
IMPORT Oberon, Texts;
|
||||
VAR W: Texts.Writer;
|
||||
BEGIN
|
||||
Texts.OpenWriter(W);
|
||||
Texts.WriteString(W, "Hello."); Texts.WriteLn(W);
|
||||
Texts.Append(Oberon.Log, W.buf)
|
||||
END hello.
|
||||
|
||||
Alternatively the Console may be accessed directly as follows:
|
||||
|
||||
MODULE hello;
|
||||
IMPORT Console;
|
||||
BEGIN
|
||||
Console.String("Hello."); Console.Ln;
|
||||
END hello.
|
||||
|
||||
Compile as follows:
|
||||
|
||||
voc hello.mod -m
|
||||
|
||||
The -m parameter tells voc that this is a main module, and to generate an
|
||||
executable binary.
|
||||
|
||||
Execute as usual on Linux ('./hello') or Windows ('hello').
|
||||
|
||||
#### How make adapts to each platform
|
||||
|
||||
On all platforms other than Visual C on Windows, make runs from a bash shell,
|
||||
|
|
@ -313,5 +183,3 @@ Linux is currently compiled using PlatfromUnix.Mod, but the integration of Windo
|
|||
|
||||
##### Issue 14 - 'separate rtl from SYSTEM?'.
|
||||
OS specific code is now all in Platformxxx.Mod. Memory management (including the loaded module list) is now in Heap.Mod. SYSTEM.h is platform independent, with minimal ifdefs to allow compiling on all platforms. For example, when SYSTEM.h/SYSTEM.c need to allocate memory, or to halt, they call into Platform.Mod.
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue