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