Vishap Oberon Compiler http://oberon.vishap.am
Find a file
Norayr Chilingarian 042ff66d14 added -fno-stack-protector to linux gcc makefiles. -- noch
Former-commit-id: 7f6c73341414af134c2ae23cd5dab5629d0d5fe5
2016-05-02 03:13:04 +04:00
src fixed Oberon.Mod; now Oberon.DumpLog works. 2016-02-24 15:21:16 +04:00
05vishap.conf added problematic ubuntu version to faq file 2016-02-04 01:27:29 +04:00
CHANGES.md updated changelog 2014-09-19 00:49:41 +04:00
CHANGES0.md updated changelog - CHANGES file. 2014-09-18 19:05:40 +04:00
COMPILE fixed makefile name in the "COMPILE" file. [issue](https://github.com/norayr/voc/issues/6); -- noch 2016-01-19 19:07:36 +04:00
FAQ.md added problematic ubuntu version to faq file 2016-02-04 01:27:29 +04:00
gen_changelog.sh improved changelog generation script to fix the email address to possibly prevent spambots to identify an email address. 2014-09-18 19:14:06 +04:00
hints changed branding of git version to 1.1 2015-01-29 11:57:57 +04:00
LICENSE Initial commit 2013-09-27 08:55:16 -07:00
makefile added -fno-stack-protector to linux gcc makefiles. -- noch 2016-05-02 03:13:04 +04:00
makefile.darwin.clang.x86_64 reverted darwin makefile by fixing default prefix. -- noch 2016-01-19 17:05:23 +04:00
makefile.freebsd.clang.x86_64 moved Oberon.Mod to v4_compat directory. -- noch; 2015-07-01 15:52:22 +04:00
makefile.linux.clang.powerpc moved Oberon.Mod to v4_compat directory. -- noch; 2015-07-01 15:52:22 +04:00
makefile.linux.clang.x86_64 moved Oberon.Mod to v4_compat directory. -- noch; 2015-07-01 15:52:22 +04:00
makefile.linux.gcc.armv6j_hardfp added -fno-stack-protector to linux gcc makefiles. -- noch 2016-05-02 03:13:04 +04:00
makefile.linux.gcc.powerpc added -fno-stack-protector to linux gcc makefiles. -- noch 2016-05-02 03:13:04 +04:00
makefile.linux.gcc.x86 added -fno-stack-protector to linux gcc makefiles. -- noch 2016-05-02 03:13:04 +04:00
makefile.linux.gcc.x86_64 added -fno-stack-protector to linux gcc makefiles. -- noch 2016-05-02 03:13:04 +04:00
makefile.openbsd.gcc.x86_64 fixed home path 2016-01-13 14:34:16 +04:00
quick_start voc compiler first commit 2013-09-27 22:34:17 +04:00
README.md yet another readme fix. 2016-01-15 13:55:40 +04:00
voc.spec changed branding of git version to 1.1 2015-01-29 11:57:57 +04:00
vocstatic.darwin.clang.x86_64.REMOVED.git-id Unix.Timeval fix. suseconds_t is 4 bytes on osx x86_64 apparently. 2016-01-19 16:54:26 +04:00
vocstatic.freebsd.clang.x86_64.REMOVED.git-id freebsd binary update. -- noch 2015-05-20 17:07:31 +00:00
vocstatic.linux.clang.powerpc.REMOVED.git-id small changes in OPC and OPM, updated powerpc bootstrap binaries. -- noch 2015-02-02 21:14:50 +04:00
vocstatic.linux.clang.x86_64.REMOVED.git-id unified makefiles; updated linux clang x86_64 bootstrap binary. -- noch 2015-03-17 13:49:31 +04:00
vocstatic.linux.gcc.armv6j_hardfp.REMOVED.git-id it seems that jmp_buf has some 4 bytes long field at the end, which is not described in header file. see http://hastebin.com/conujujeyu.pl for reference. i have also checked offsets. 2015-05-08 07:09:56 +00:00
vocstatic.linux.gcc.powerpc.REMOVED.git-id powerpc bootstrap binary update -- noch 2015-03-19 16:25:02 +04:00
vocstatic.linux.gcc.x86.REMOVED.git-id updated x86 linux bootstrap binary. -- noch. 2015-03-17 13:31:14 +04:00
vocstatic.linux.gcc.x86_64.REMOVED.git-id added problematic ubuntu version to faq file 2016-02-04 01:27:29 +04:00
vocstatic.openbsd.gcc.x86_64.REMOVED.git-id apparently, openbsd bootstrap binary was not added to the git. (: 2016-01-16 01:09:32 +04:00

Vishap oberon compiler

ⱱishap Oberon Compiler (voc) is a free (GPLv3) professional oberon-2 compiler.

Platforms:

voc produces x86_64, x86, ppc, armv{4-7} binaries and works on those platforms. On x86_64 it supports 64bit LONGINT and 64bit SET types. By using currently stable C backend voc is relatively easy to port to any platform for which C compiler exists.

Operating Systems:

Currently GNU/Linux, Mac OS X, FreeBSD and OpenBSD sources (with bootstrap binaries) are published.

Ports to Solaris, AIX will be made and published in case there is an interest from community. voc should work on MS Windows/ReactOS via Cygwin/gcc, however we did not test it on Windows compatible machine.

Backends:

voc has stable C backend, which generates human readable and easily debuggable C code. Generated C code is fairly efficient and does not cause a noticeable overhead. voc was used to generate code even for low end 8 bit devices like nmos6502 and AVR micros.

Work on native backends for arm and x86_64 is in progress.

Libraries:

voc comes with a useful set of libraries, in particular: Oberon V4 and S3 compatible library set. ooc (optimizing oberon-2 compiler) library port. Ulms Oberon system library port.

This makes it easier to compile/port software which was developed by using those compilers.

Work on other compatibility layers is in progress. voc team also works on bindings to existing C/Pascal libraries.

Some other freely redistributable libraries are available as a part of voc distribution.

Licensing:

vocs frontend and C backend engine is a fork of Josef Templs Ofront, which has been released under FreeBSD License. Unlike Ofront, it does not include Oberon v4 environment. Ulm Oberon Library is distributed under GPL. ooc library is distributed under GPL.

voc tools are distributed under GPLv3. most of the runtime in libVishapOberon is distributed under GPLv3 with runtime exception. ulm and ooc libraries were distributed under GPL, thus static linking to those modules from libVishapOberon.a to proprietary code is disallowed.

Naming:

Vishaps are dragons inhabited in Armenian Highlands. We decided to name the project “Vishap” because ties between compilers and dragons have ancient traditions.

Also, Vishaps are known in tales, fiction. This page refers to some technologies as “computer science fiction”. Among them to Oberon. This brings another meaning, Oberon is like aliens, ghosts. And Vishaps.

How to use

First you need to build it.

As it is stated in COMPILE page, voc is installed in /opt/voc/bin if you did not change the prefix. So, in order to run voc you need to type

/opt/voc/bin/voc

or add /opt/voc/bin to you PATH environment variable, and then just typing voc will execute it. For that you have to know how to work in Unix shell, and this knowledge is out of the scope of this document.

Type voc and it'll show you help.

Simple example

Let's write hello world file:

$ cat hey.Mod

MODULE hey;

IMPORT Console;

BEGIN

Console.String("hey there"); Console.Ln

END hey.

voc -M hey.Mod

will compile your module and link it statically to libVishapOberon.

voc -m hey.Mod

will link the module dynamically.

Example with two modules

If you have more than one module, and you want them to be compiled in to elf file then: Let's assume we have module M0 which imports M1;

voc -l M1.Mod -s M0.Mod -M

Here -l is a global option. Module M1 will be compiled with -s option, i. e. sym file will be generated.

Module M0 will be compiled and linked statically.

Example with many modules

In case you have modules in different directories, like "ui", "logic", "math", then you need to export MODULES environment variable like this:

export MODULES=".:ui:logic:math"

and after call voc

voc -s ui0.Mod

Otherwise you can use full path:

voc -s ui/ui0.Mod