Begin update to V2. Move old files to triage.

This commit is contained in:
David Brown 2016-06-16 11:52:06 +01:00
parent 593774a3fc
commit ead30cb27b
20 changed files with 0 additions and 0 deletions

1
triage/05vishap.conf Normal file
View file

@ -0,0 +1 @@
/opt/voc-1.1/lib

1342
triage/CHANGES.md Normal file

File diff suppressed because it is too large Load diff

37
triage/CHANGES0.md Normal file
View file

@ -0,0 +1,37 @@
Before initial commit
=====================
* fixed bug in OPC.Genheader function. If new option is added in OPM, but not added in OPC, compiler was crashing. Simple ELSE fixed the problem.
* par file is not necessary by default (there is a command line argument for that, and defaultTarget is set in OPM.Mod, version.Mod and architecture.Mod)
* external compiler is called by default. added options to just generate the output, and not call external compiler or assembler.
* OBERON variable always contains current directory path by default (changes in Kernel.Mod, added oocStrings dependency to it), as well as installed default libraries sym files path.
* MODULES variable added in order to specify directories where to look for source file. OBERON variable is not used by developer anymore, only MODULES variable.
* error messages are now more descriptive (errors.Mod added)
* help is now more descriptive
* version module which defines the target and version string.
* recoursive build (not yet implemented)
* change max and min longint, change maxset - calculated, and not hardcoded
* real 64bit LONGINT on x86_64
* changed makefile
* ported some ooc and ooc2 libraries
* ported some Ulm Oberon libraries
* works with unicode strings
* voc checks for CFLAGS variable, and adds it to it's command line. this is used during bootstrapping, see makefile.
* many other changes

71
triage/COMPILE Normal file
View file

@ -0,0 +1,71 @@
Platforms
=======:
several bootstrap static binaries provided, for
gnu/linux on x86_64
gnu/linux on x86
gnu/linux on armv6j_hardfp (i. e. raspberry pi)
darwin on x86_64 (read osx)
freebsd on x86_64
openbsd on x86_64
Prerequisites:
==========
on Debian GNU/Linux:
gcc, libc6-dev on debian
on RHEL/CentOS/Fedora:
gcc, glibc-devel, glibc-static
on OSX:
clang, Xcode.
How to install
==============
By default, voc will be installed to /opt/voc-<version> and /opt/voc symlink to it will be created.
If you want it in other prefix, then edit makefile for your platform, and change PRF = "/opt" to the path you need.
Then just cd into source directory and type
>make -f makefile.linux.gcc.x86_64
if you are on GNU/Linux x86_64 platform and you want voc to use gcc as backend.
otherwise use corresponding makefile.
Note for FreeBSD, OpenBSD and OSX users:
use gmake instead of make, i. e.
>gmake -f makefile.darwin.clang.x86_64
then type
>sudo make install
or
>sudo gmake -f makefile.darwin.clang.x86_64 install
on MacOSX/Darwin.
build rpm
=========
if you'd like to build an rpm installer, then
* compress sources as voc-1.0.src.tar.bz2
assuming you in voc directory
> cd ..
> tar -jcvpf voc-1.0.src.tar.bz2 voc
* put them to ~/rpmbuild/SOURCES (on some systems as root to /usr/src/redhat/SOURCES/) or other similar location.
> mkdir -p ~/rpmbuild/SOURCES
> cp voc-1.0.src.tar.bz2 ~/rpmbuild/SOURCES
* cd to voc directory and run
> rpmbuild -ba voc.spec
this should create voc rpm installers.
-- noch

34
triage/FAQ.md Normal file
View file

@ -0,0 +1,34 @@
compiler does show only character position, not the line number
===============================================================
Yes, by default it shows you the character position, because it's faster to go to character position in vim
:goto number
In case you still want to use line numbers then pass -l option to voc
voc -ls m.Mod
compilation crashes on Ubuntu 15.10 x86_64 or latest Raspbians on Raspberry Pi with recent (like 3.12) kernels.
===========================================================================
> echo 1 > /proc/sys/vm/legacy_va_layout
should fix that.
compilation crashes with "cannot find -lc" on recent fedoras
============================================================
remove <code>-static</code> from makefile on the line where voc binary created (first -static you'll find)
make errors on freebsd
======================
># make -f makefile.freebsd.clang.x86_64
make: "/root/voc/makefile.freebsd.clang.x86_64" line 22: Need an operator
make: "/root/voc/makefile.freebsd.clang.x86_64" line 24: Need an operator
make: Fatal errors encountered -- cannot continue
make: stopped in /root/voc
use gmake.

128
triage/README.md Normal file
View file

@ -0,0 +1,128 @@
Vishap oberon compiler
======================
[ⱱishap Oberon Compiler](http://oberon.vishap.am) (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](http://blog.fogus.me/2015/04/27/six-works-of-computer-science-fiction/) 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](https://github.com/norayr/voc/blob/master/COMPILE) it.
As it is stated in [COMPILE](https://github.com/norayr/voc/blob/master/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
<code>
MODULE hey;
IMPORT Console;
BEGIN
Console.String("hey there"); Console.Ln
END hey.
</code>
>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

2
triage/gen_changelog.sh Executable file
View file

@ -0,0 +1,2 @@
git log --decorate > CHANGES.md
sed -i 's/@/[at]/g' CHANGES.md

39
triage/hints Normal file
View file

@ -0,0 +1,39 @@
==how to port to a new platform==
0) generate voc.par file for the target platform(if it does not exist in src/par).
you can do it by compiling vocparam, and running it as "./vocparam > voc.par"
1) generate voc, ocat, showdef source for target platform by running
make -f makefile.gcc.<arch> port0
(or copy corresponding voc.par to the source directory yourself, remove stage2 from port0 section of the makefile, and run make port0)
2) transfer source to a target platform and write
make port1
(or use a crosscompiler)
now you have voc, showdef, and ocat binaries for your target platform
3) cp voc vocstatic
make -f makefile for your target.
that's how I've done x86 port.
voc was originally run on x86_64.
notes** in practice everything is not always simple, because you may need to edit Unix.Mod, Args.Mod and SYSTEM.h, and put them to src/lib/system/gcc/<yourtarget>, and create new makefile for your target.
==how to add a new option==
define it in OPM as a constant before defopt is defined.
define a BOOLEAN variable in OPM which will describe if setting is set.
add handling of a new option in OPM.ScanOptions
set your BOOLEAN value in OPM.OpenPari (or in ScanOptions, after the CASE) so you can check it later.
check your boolean when necessary, (see useParFile in OPM.GetOptions)
add it in OPC.GenHeaderMsg function.
==known bugs==
when using SYSTEM.LSH(s, n) where s is SET,
c compiler generates an error like
"error: duplicate 'unsigned'",
that's because SET is defined as unsigned in SYSTEM.h,
while LSH is defined in SYSTEM.h as ((t)((unsigned t)(x)<<(n))),
and it makes not possible to make SYSTEM.LSH with type SET.
I don't want to prohibit it at the parser level
because C backend is only one of possible backends.
The solution currently is to cast set type to longint before lsh-ing it.
And then casting it back to set if necessary.

309
triage/makefile Normal file
View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = x86_64
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = gcc
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g -fno-stack-protector
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,310 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = darwin
TARCH = x86_64
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = clang
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
#PRF = "/Users/noch/local"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g
SHRLIBEXT = dylib
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = libtool -dynamic -lSystem -compatibility_version $(RELEASE) -current_version $(RELEASE) -install_name $(PREFIX)/lib/$(LIBRARY).$(SHRLIBEXT) -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
#cp 05vishap.conf /etc/ld.so.conf.d/
#ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = freebsd
TARCH = x86_64
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = clang
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
#cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig -m $(PREFIX)/lib
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = powerpc
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = clang
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = x86_64
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = clang
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = armv6j_hardfp
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = gcc
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g -fno-stack-protector
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = powerpc
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = gcc
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g -fno-stack-protector
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = x86
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = gcc
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g -fno-stack-protector
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,309 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = linux
TARCH = x86_64
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = gcc
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g -fno-stack-protector
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -a src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

View file

@ -0,0 +1,310 @@
#SHELL := /bin/bash
BUILDID=$(shell date +%Y/%m/%d)
TOS = openbsd
TARCH = x86_64
#TARCH = x86 x86_64 armv6j armv6j_hardfp armv7a_hardfp powerpc
CCOMP = gcc
RELEASE = 1.1
INCLUDEPATH = -Isrc/lib/system/$(TOS)/$(CCOMP)/$(TARCH)
SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/v4_compat:src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(TOS)/$(CCOMP):src/lib/ooc:src/lib/ooc/$(TOS)/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/lib/s3/$(TARCH):src/voc:src/voc/$(TOS)/$(CCOMP):src/voc/$(TOS)/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test
VOC = voc
VERSION = $(TOS).$(CCOMP).$(TARCH)
VOCSTATIC0 = $(SETPATH) ./vocstatic.$(TOS).$(CCOMP).$(TARCH)
VOCSTATIC = $(SETPATH) ./voc
VOCPARAM = $(shell ./vocparam > voc.par)
LIBNAME = VishapOberon
LIBRARY = lib$(LIBNAME)
ifndef PRF
PRF = "/opt"
endif
PREFIX = $(PRF)/voc-$(RELEASE)
PREFIXLN = $(PRF)/voc
CCOPT = -fPIC $(INCLUDEPATH) -g
SHRLIBEXT = so
CC = $(CCOMP) $(CCOPT) -c
CL = $(CCOMP) $(CCOPT)
LD = $(CCOMP) -shared -o $(LIBRARY).$(SHRLIBEXT)
# s is necessary to create index inside a archive
ARCHIVE = ar rcs $(LIBRARY).a
#%.c: %.Mod
#%.o: %.c
# $(CC) $(input)
all: stage2 stage3 stage4 stage5 stage6 stage7
# when porting to new platform:
# * put corresponding .par file into current directory. it can be generated on the target platform by compiling vocparam (stage0) and running (stage1)
# * run make port0 - this will generate C source files for the target architecture
# * move the source tree to the target machine, and compile (or compile here via crosscompiler) (port1)
port0: stage2 stage3 stage4
# now compile C source files for voc, showdef and ocat on target machine (or by using crosscompiler)
port1: stage5
# after you have "voc" compiled for target architecture. replace vocstatic with it and run make on target platform to get everything compiled
# this builds binary which generates voc.par
stage0: src/tools/vocparam/vocparam.c
$(CL) -I src/lib/system/$(TOS)/$(CCOMP)/$(TARCH) -o vocparam src/tools/vocparam/vocparam.c
# this creates voc.par for a host architecture.
# comment this out if you need to build a compiler for a different architecture.
stage1:
#rm voc.par
#$(shell "./vocparam > voc.par")
#./vocparam > voc.par
$(VOCPARAM)
# this copies necessary voc.par to the current directory.
# skip this if you are building compiler for the host architecture.
stage2:
cp src/par/voc.par.$(CCOMP).$(TARCH) voc.par
# cp src/par/voc.par.gnu.x86_64 voc.par
# cp src/par/voc.par.gnu.x86 voc.par
# cp src/par/voc.par.gnu.armv6 voc.par
# cp src/par/voc.par.gnu.armv7 voc.par
cp src/voc/prf.Mod_default src/voc/prf.Mod
# this prepares modules necessary to build the compiler itself
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed "s#/opt#$(PRF)#g" src/voc/prf.Mod > tmp.Mod
mv tmp.Mod src/voc/prf.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
#this is to build the compiler from C sources.
#this is a way to create a bootstrap binary.
stage5:
$(CC) SYSTEM.c Args.c Console.c Modules.c Unix.c \
Strings.c architecture.c prf.c version.c Kernel0.c Files0.c Reals.c Texts0.c vt100.c \
extTools.c \
OPM.c OPS.c OPT.c OPC.c OPV.c OPB.c OPP.c errors.c
$(CL) -static voc.c -o voc \
SYSTEM.o Args.o Console.o Modules.o Unix.o \
Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
extTools.o \
OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
$(CL) BrowserCmd.c -o showdef \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o vt100.o \
OPM.o OPS.o OPT.o OPV.o OPC.o errors.o
$(CL) OCatCmd.c -o ocat \
SYSTEM.o Args.o Console.o Modules.o Unix.o Strings.o architecture.o prf.o version.o Kernel0.o Files0.o Reals.o Texts0.o
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
# $(CC) oocMsg.c
#ooc2 libs
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o
stage7:
#remove non library objects
rm -f Kernel0.o Files0.o Texts0.o architecture.o prf.o version.o extTools.o OPM.o OPS.o OPT.o OPC.o OPV.o OPB.o OPP.o errors.o
#objects := $(wildcard *.o)
#$(LD) objects
$(ARCHIVE) *.o
#$(ARCHIVE) objects
$(LD) *.o
echo "$(PREFIX)/lib" > 05vishap.conf
clean:
# rm_objects := rm $(wildcard *.o)
# objects
rm *.h
rm *.c
rm *.sym
rm *.o
rm *.a
rm *.$(SHRLIBEXT)
install:
test -d $(PREFIX)/bin | mkdir -p $(PREFIX)/bin
cp voc $(PREFIX)/bin/
cp showdef $(PREFIX)/bin/
cp ocat $(PREFIX)/bin/
#cp vmake $(PREFIX)/bin/
cp -RPp src $(PREFIX)/
test -d $(PREFIX)/lib/voc | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/ | mkdir -p $(PREFIX)/lib/voc
test -d $(PREFIX)/lib/voc/obj | mkdir -p $(PREFIX)/lib/voc/obj
test -d $(PREFIX)/lib/voc/sym | mkdir -p $(PREFIX)/lib/voc/sym
cp $(LIBRARY).$(SHRLIBEXT) $(PREFIX)/lib
cp $(LIBRARY).a $(PREFIX)/lib
cp *.c $(PREFIX)/lib/voc/obj/
cp *.h $(PREFIX)/lib/voc/obj/
cp *.sym $(PREFIX)/lib/voc/sym/
#cp 05vishap.conf /etc/ld.so.conf.d/
ldconfig -m $(PREFIX)/lib
ln -s $(PREFIX) $(PREFIXLN)
# cp *.o $(PREFIX)/lib/voc/$(RELEASE)/obj/
uninstall:
rm -rf $(PREFIX)
rm -rf $(PREFIXLN)

45
triage/quick_start Normal file
View file

@ -0,0 +1,45 @@
Firstly, make sure that voc binary is in your path.
You may need to issue
# PATH=/opt/voc/bin:$PATH
== Compiling a main module==
In order to compile a main module, and get it linked dynamically to libVishapOberon.so, issue
# voc -m hello.Mod
If you want it to be linked statically, then
# voc -M hello.Mod
It is necessary to specify -m or -M key so that compiler generates _start entry point.
Otherwise the module will be generated as .o object file.
Currently, voc by default asks gcc to include debugging information (-g) so you may want to strip resulting binaries before distributing them
# strip hello
==Creating shared object==
Compile several modules but not link resulting object files.
voc -s M0.Mod M1.Mod Mn.Mod
Then create a shared object with
# ld -shared -o libYouLib.so M0.o M1.o Mn.o
To create a static .a archive do
# ar rcs libYourLib.a M0.o M1.o Mn.o
== Sorting modules in different directories ==
By default voc looks for modules only in default path, where distributed libVishapOberon library symbol files are located, and in current directory. If you have many modules and want to sort them into different directories, then you need to tell compiler where to look for your modules.
For that we have introduced MODULES environment variable.
Lets assume, you have directories "logic", "graphics", "misc" in current directory, and you want compiler to search for your source modules there.
# export MODULES=".:logic:graphics:misc"
Directories will be searched in the same order as specified. In this example we specify current directory, which is not necessary, because it's already in a search path by default.

133
triage/voc.spec Normal file
View file

@ -0,0 +1,133 @@
# RPM spec file for package
#
# Copyright 2014 David Egan Evans, Magna UT 84044 USA
#
# Permission to use, copy, modify, and distribute this software for
# any purpose with or without fee is hereby granted, provided that the
# above copyright notice and this permission notice appear in all
# copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
# OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
#some changes added by Norayr Chilingarian
%define _prefix /opt/%{name}-%{version}
%define _bindir %{_prefix}/bin
%define _datadir %{_prefix}/share
%define _includedir %{_prefix}/include
%define _libdir %{_prefix}/lib
%define packer %(finger -lp `echo "$USER"` | head -n 1 | cut -d" " -f2)
Name: voc
Summary: Vishap Oberon-2 compiler
Version: 1.1
Release: 1
License: GPLv3
Vendor: D. E. Evans <sinuhe@gnu.org>
Packager: %{packer}
Group: Development/Languages
Source: http://oberon.vishap.am/voc/voc-1.1.src.tar.bz2
# this is ~/rpmbuild/SOURCES/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-build
#BuildArch: i686
#makes this .spec more generic
#BuildArch: %{_arch}
#on modern rhel/fedora/pidora systems
BuildRequires: glibc-static, libX11-devel
#on older systems like rhel4 it'll be
#BuildRequires: glibc-devel, xorg-x11-devel
#basicly we neet /usr/include/X11/Xlib.h and /usr/lib/libc.a
#makes this more portable across different distributions
#BuildRequires: /usr/include/X11/Xlib.h /usr/lib/libc.a
%description
Vishap's Oberon Compiler (voc) uses a C backend to drive compilation
of Oberon programs under Unix. voc includes libraries from the Ulm
and oo2c Oberon compilers as well as from Ofront, as well as default
libraries complying with the Oakwood Guidelines for Oberon-2 compilers.
%prep
echo Building %{name}-%{version}-%{release}
%setup -q -n %{name}
%build
#choose corresponding makefile depending on architecture.
if [ %{_arch} == "i386" ] || [ %{_arch} == "i686" ]
then
%{__make} -f makefile.linux.gcc.x86
elif [ %{_arch} == "arm" ] #rpmbuild on pidora/raspberry identifies arch as arm
then
%{__make} -f makefile.linux.gcc.armv6j_hardfp
elif [ %{_arch} == "armv6hl" ]
then
%{__make} -f makefile.linux.gcc.armv6j_hardfp
elif [ %{_arch} == "armv7" ]
then
%{__make} -f makefile.linux.gcc.armv7a_hardfp
else
%{__make} -f makefile.linux.gcc.%{_arch}
fi
%install
%{__install} -d %{buildroot}/%{_prefix}/bin
%{__install} -d %{buildroot}/%{_datadir}
%{__install} -d %{buildroot}/%{_datadir}/%{name}
%{__install} -d %{buildroot}/%{_libdir}
%{__install} -d %{buildroot}/%{_libdir}/%{name}
%{__install} -d %{buildroot}/%{_libdir}/%{name}/obj
%{__install} -d %{buildroot}/%{_libdir}/%{name}/sym
%{__install} -d %{buildroot}/etc/ld.so.conf.d
%{__install} -d %{buildroot}/etc/profile.d
cp voc %{buildroot}/%{_bindir}
cp showdef %{buildroot}/%{_bindir}
cp ocat %{buildroot}/%{_bindir}
cp *.so %{buildroot}%{_libdir}
cp *.a %{buildroot}%{_libdir}
cp *.c %{buildroot}/%{_libdir}/%{name}/obj
cp *.h %{buildroot}/%{_libdir}/%{name}/obj
cp *.sym %{buildroot}/%{_libdir}/%{name}/sym
cp -Rp src %{buildroot}%{_prefix}
ln -s %{_prefix} %{buildroot}/opt/%{name}
cp FAQ.md CHANGES.md README.md LICENSE hints quick_start %{buildroot}/%{_datadir}/%{name}
cp 05vishap.conf %{buildroot}/etc/ld.so.conf.d/
echo 'PATH=${PATH}:%{_bindir}' >%{buildroot}/etc/profile.d/%{name}.sh
%post
ldconfig
%postun
%{__rm} -f /etc/profile.d/%{name}.sh
ldconfig
%clean
%{__rm} -Rf %{buildroot}
%files
%defattr(-,root,root)
%{_bindir}/*
%{_datadir}/%{name}/*
%{_libdir}/*
%{_prefix}/src/*
/opt/%{name}
/etc/ld.so.conf.d/
/etc/profile.d/
%changelog
* Thu Jan 29 2015 - N. Chilingarian <norayr [at] vishap.am>
- 1.1 release, see changelog.
* Thu Sep 18 2014 - N. Chilingarian <norayr [at] vishap.am>
- 1.0.1 release of voc, see CHANGES.md file for changes history
* Tue Sep 9 2014 - D. E. Evans <sinuhe@gnu.org>
- Initial 1.0 release.