From 38d4e8887662c5f2b091c2c51813844276f85df7 Mon Sep 17 00:00:00 2001 From: Norayr Chilingarian Date: Tue, 18 Mar 2014 20:05:19 +0400 Subject: [PATCH] added target os, added experimental darwin, starting darwin port Former-commit-id: 49b86a4ac5f92113e807a12fc11df3ee305ab35c --- makefile | 6 +- makefile.darwin.clang.x86_64 | 300 +++++++++++ ....gnuc.armv6j => makefile.linux.gnuc.armv6j | 6 +- ...ardfp => makefile.linux.gnuc.armv6j_hardfp | 6 +- ...ardfp => makefile.linux.gnuc.armv7a_hardfp | 6 +- ...nuc.powerpc => makefile.linux.gnuc.powerpc | 6 +- makefile.gnuc.x86 => makefile.linux.gnuc.x86 | 6 +- ....gnuc.x86_64 => makefile.linux.gnuc.x86_64 | 6 +- ocat | Bin 209542 -> 209646 bytes showdef.REMOVED.git-id | 2 +- .../{gnuc => darwin/clang}/x86_64/oocC.Mod | 0 src/lib/ooc/{ => linux}/gnuc/armv6j/oocC.Mod | 0 .../{ => linux}/gnuc/armv6j_hardfp/oocC.Mod | 0 src/lib/ooc/{ => linux}/gnuc/powerpc/oocC.Mod | 0 src/lib/ooc/{ => linux}/gnuc/x86/oocC.Mod | 0 src/lib/ooc/linux/gnuc/x86_64/oocC.Mod | 71 +++ .../{gnuc => darwin/clang}/oocwrapperlibc.Mod | 0 src/lib/ooc2/linux/gnuc/oocwrapperlibc.Mod | 34 ++ .../{gnuc => darwin/clang}/x86_64/Args.Mod | 0 .../{gnuc => darwin/clang}/x86_64/SYSTEM.c0 | 0 src/lib/system/darwin/clang/x86_64/SYSTEM.h | 234 ++++++++ .../{gnuc => darwin/clang}/x86_64/Unix.Mod | 0 src/lib/system/{ => linux}/gnuc/Console.Mod | 0 src/lib/system/{ => linux}/gnuc/SYSTEM.Mod | 0 .../system/{ => linux}/gnuc/armv6j/Args.Mod | 0 .../system/{ => linux}/gnuc/armv6j/SYSTEM.c0 | 0 .../system/{ => linux}/gnuc/armv6j/SYSTEM.h | 0 .../system/{ => linux}/gnuc/armv6j/Unix.Mod | 0 .../{ => linux}/gnuc/armv6j_hardfp/Args.Mod | 0 .../{ => linux}/gnuc/armv6j_hardfp/SYSTEM.c0 | 0 .../{ => linux}/gnuc/armv6j_hardfp/SYSTEM.h | 0 .../{ => linux}/gnuc/armv6j_hardfp/Unix.Mod | 0 .../{ => linux}/gnuc/armv7a_hardfp/Args.Mod | 0 .../{ => linux}/gnuc/armv7a_hardfp/SYSTEM.c0 | 0 .../{ => linux}/gnuc/armv7a_hardfp/SYSTEM.h | 0 .../{ => linux}/gnuc/armv7a_hardfp/Unix.Mod | 0 .../system/{ => linux}/gnuc/powerpc/Args.Mod | 0 .../system/{ => linux}/gnuc/powerpc/SYSTEM.c0 | 0 .../system/{ => linux}/gnuc/powerpc/SYSTEM.h | 0 .../system/{ => linux}/gnuc/powerpc/Unix.Mod | 0 src/lib/system/{ => linux}/gnuc/x86/Args.Mod | 0 src/lib/system/{ => linux}/gnuc/x86/SYSTEM.c0 | 0 src/lib/system/{ => linux}/gnuc/x86/SYSTEM.h | 0 src/lib/system/{ => linux}/gnuc/x86/Unix.Mod | 0 src/lib/system/linux/gnuc/x86_64/Args.Mod | 65 +++ src/lib/system/linux/gnuc/x86_64/SYSTEM.c0 | 205 +++++++ .../system/{ => linux}/gnuc/x86_64/SYSTEM.h | 0 src/lib/system/linux/gnuc/x86_64/Unix.Mod | 501 ++++++++++++++++++ src/voc/darwin/clang/extTools.Mod | 82 +++ .../clang}/x86_64/architecture.Mod | 0 .../{ => linux}/gnuc/armv6j/architecture.Mod | 0 .../gnuc/armv6j_hardfp/architecture.Mod | 0 .../gnuc/armv7a_hardfp/architecture.Mod | 0 src/voc/{ => linux}/gnuc/extTools.Mod | 0 .../{ => linux}/gnuc/powerpc/architecture.Mod | 0 src/voc/{ => linux}/gnuc/x86/architecture.Mod | 0 src/voc/linux/gnuc/x86_64/architecture.Mod | 4 + voc.REMOVED.git-id | 2 +- vocparam | Bin 11001 -> 9724 bytes vocstatic.REMOVED.git-id | 2 +- vocstatic.linux.gnuc.x86_64.REMOVED.git-id | 2 +- 61 files changed, 1521 insertions(+), 25 deletions(-) create mode 100644 makefile.darwin.clang.x86_64 rename makefile.gnuc.armv6j => makefile.linux.gnuc.armv6j (94%) rename makefile.gnuc.armv6j_hardfp => makefile.linux.gnuc.armv6j_hardfp (94%) rename makefile.gnuc.armv7a_hardfp => makefile.linux.gnuc.armv7a_hardfp (94%) rename makefile.gnuc.powerpc => makefile.linux.gnuc.powerpc (94%) rename makefile.gnuc.x86 => makefile.linux.gnuc.x86 (94%) rename makefile.gnuc.x86_64 => makefile.linux.gnuc.x86_64 (94%) rename src/lib/ooc/{gnuc => darwin/clang}/x86_64/oocC.Mod (100%) rename src/lib/ooc/{ => linux}/gnuc/armv6j/oocC.Mod (100%) rename src/lib/ooc/{ => linux}/gnuc/armv6j_hardfp/oocC.Mod (100%) rename src/lib/ooc/{ => linux}/gnuc/powerpc/oocC.Mod (100%) rename src/lib/ooc/{ => linux}/gnuc/x86/oocC.Mod (100%) create mode 100644 src/lib/ooc/linux/gnuc/x86_64/oocC.Mod rename src/lib/ooc2/{gnuc => darwin/clang}/oocwrapperlibc.Mod (100%) create mode 100644 src/lib/ooc2/linux/gnuc/oocwrapperlibc.Mod rename src/lib/system/{gnuc => darwin/clang}/x86_64/Args.Mod (100%) rename src/lib/system/{gnuc => darwin/clang}/x86_64/SYSTEM.c0 (100%) create mode 100644 src/lib/system/darwin/clang/x86_64/SYSTEM.h rename src/lib/system/{gnuc => darwin/clang}/x86_64/Unix.Mod (100%) rename src/lib/system/{ => linux}/gnuc/Console.Mod (100%) rename src/lib/system/{ => linux}/gnuc/SYSTEM.Mod (100%) rename src/lib/system/{ => linux}/gnuc/armv6j/Args.Mod (100%) rename src/lib/system/{ => linux}/gnuc/armv6j/SYSTEM.c0 (100%) rename src/lib/system/{ => linux}/gnuc/armv6j/SYSTEM.h (100%) rename src/lib/system/{ => linux}/gnuc/armv6j/Unix.Mod (100%) rename src/lib/system/{ => linux}/gnuc/armv6j_hardfp/Args.Mod (100%) rename src/lib/system/{ => linux}/gnuc/armv6j_hardfp/SYSTEM.c0 (100%) rename src/lib/system/{ => linux}/gnuc/armv6j_hardfp/SYSTEM.h (100%) rename src/lib/system/{ => linux}/gnuc/armv6j_hardfp/Unix.Mod (100%) rename src/lib/system/{ => linux}/gnuc/armv7a_hardfp/Args.Mod (100%) rename src/lib/system/{ => linux}/gnuc/armv7a_hardfp/SYSTEM.c0 (100%) rename src/lib/system/{ => linux}/gnuc/armv7a_hardfp/SYSTEM.h (100%) rename src/lib/system/{ => linux}/gnuc/armv7a_hardfp/Unix.Mod (100%) rename src/lib/system/{ => linux}/gnuc/powerpc/Args.Mod (100%) rename src/lib/system/{ => linux}/gnuc/powerpc/SYSTEM.c0 (100%) rename src/lib/system/{ => linux}/gnuc/powerpc/SYSTEM.h (100%) rename src/lib/system/{ => linux}/gnuc/powerpc/Unix.Mod (100%) rename src/lib/system/{ => linux}/gnuc/x86/Args.Mod (100%) rename src/lib/system/{ => linux}/gnuc/x86/SYSTEM.c0 (100%) rename src/lib/system/{ => linux}/gnuc/x86/SYSTEM.h (100%) rename src/lib/system/{ => linux}/gnuc/x86/Unix.Mod (100%) create mode 100644 src/lib/system/linux/gnuc/x86_64/Args.Mod create mode 100644 src/lib/system/linux/gnuc/x86_64/SYSTEM.c0 rename src/lib/system/{ => linux}/gnuc/x86_64/SYSTEM.h (100%) create mode 100644 src/lib/system/linux/gnuc/x86_64/Unix.Mod create mode 100644 src/voc/darwin/clang/extTools.Mod rename src/voc/{gnuc => darwin/clang}/x86_64/architecture.Mod (100%) rename src/voc/{ => linux}/gnuc/armv6j/architecture.Mod (100%) rename src/voc/{ => linux}/gnuc/armv6j_hardfp/architecture.Mod (100%) rename src/voc/{ => linux}/gnuc/armv7a_hardfp/architecture.Mod (100%) rename src/voc/{ => linux}/gnuc/extTools.Mod (100%) rename src/voc/{ => linux}/gnuc/powerpc/architecture.Mod (100%) rename src/voc/{ => linux}/gnuc/x86/architecture.Mod (100%) create mode 100644 src/voc/linux/gnuc/x86_64/architecture.Mod diff --git a/makefile b/makefile index 443710ed..7ca60168 100644 --- a/makefile +++ b/makefile @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/makefile.darwin.clang.x86_64 b/makefile.darwin.clang.x86_64 new file mode 100644 index 00000000..f9822650 --- /dev/null +++ b/makefile.darwin.clang.x86_64 @@ -0,0 +1,300 @@ +#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.0 + + +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/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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 PREFIX +PREFIX = /opt/voc-$(RELEASE) +endif + +ifndef PREFIXLN +PREFIXLN = /opt/voc +endif + +CCOPT = -fPIC $(INCLUDEPATH) -g + +CC = cc $(CCOPT) -c +CL = cc $(CCOPT) +LD = cc -shared -o $(LIBRARY).so +# 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 -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 + +# this prepares modules necessary to build the compiler itself +stage3: + + $(VOCSTATIC0) -siapxPS SYSTEM.Mod + $(VOCSTATIC0) -sPS Args.Mod Console.Mod Unix.Mod + $(VOCSTATIC0) -sPS oocOakStrings.Mod architecture.Mod version.Mod Kernel.Mod Modules.Mod + $(VOCSTATIC0) -sxPS Files.Mod + $(VOCSTATIC0) -sxPS OakFiles.Mod + $(VOCSTATIC0) -sPS Reals.Mod CmdlnTexts.Mod errors.Mod + +# build the compiler +stage4: + $(VOCSTATIC0) -sPS extTools.Mod + $(VOCSTATIC0) -sPS OPM.cmdln.Mod + $(VOCSTATIC0) -sxPS OPS.Mod + $(VOCSTATIC0) -sPS 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 \ + oocOakStrings.c architecture.c version.c Kernel.c Files.c OakFiles.c Reals.c CmdlnTexts.c \ + version.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 \ + oocOakStrings.o architecture.o version.o Kernel.o Files.o Reals.o CmdlnTexts.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 oocOakStrings.o architecture.o version.o Kernel.o Files.o Reals.o CmdlnTexts.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 oocOakStrings.o architecture.o version.o Kernel.o Files.o Reals.o CmdlnTexts.o + +# build all library files +stage6: + + #ooc libs + $(VOCSTATIC) -sP oocAscii.Mod + $(VOCSTATIC) -sP oocStrings.Mod + $(VOCSTATIC) -sP oocStrings2.Mod + $(VOCSTATIC) -sP oocCharClass.Mod + $(VOCSTATIC) -sP oocConvTypes.Mod + $(VOCSTATIC) -sP oocIntConv.Mod + $(VOCSTATIC) -sP oocIntStr.Mod + $(VOCSTATIC) -sP oocSysClock.Mod + $(VOCSTATIC) -sP oocTime.Mod +# $(VOCSTATIC) -s oocLongStrings.Mod +# $(CC) oocLongStrings.c +# $(VOCSTATIC) -s oocMsg.Mod +# $(CC) oocMsg.c + + + #ooc2 libs + $(VOCSTATIC) -sP ooc2Strings.Mod + $(VOCSTATIC) -sP ooc2Ascii.Mod + $(VOCSTATIC) -sP ooc2CharClass.Mod + $(VOCSTATIC) -sP ooc2ConvTypes.Mod + $(VOCSTATIC) -sP ooc2IntConv.Mod + $(VOCSTATIC) -sP ooc2IntStr.Mod + $(VOCSTATIC) -sP ooc2Real0.Mod + #ooc libs + $(VOCSTATIC) -sP oocLowReal.Mod oocLowLReal.Mod + $(VOCSTATIC) -sP oocRealMath.Mod oocOakMath.Mod + $(VOCSTATIC) -sP oocLRealMath.Mod + $(VOCSTATIC) -sP oocLongInts.Mod + $(VOCSTATIC) -sP oocComplexMath.Mod oocLComplexMath.Mod + $(VOCSTATIC) -sP oocLRealConv.Mod oocLRealStr.Mod + $(VOCSTATIC) -sP oocRealConv.Mod oocRealStr.Mod + $(VOCSTATIC) -sP oocMsg.Mod oocChannel.Mod + $(VOCSTATIC) -sP oocStrings2.Mod oocRts.Mod oocFilenames.Mod + $(VOCSTATIC) -sP oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod + $(VOCSTATIC) -sP oocFilenames.Mod + $(VOCSTATIC) -sP oocwrapperlibc.Mod + $(VOCSTATIC) -sP oocC.Mod + $(VOCSTATIC) -sP oocX11.Mod + $(VOCSTATIC) -sP oocXutil.Mod + $(VOCSTATIC) -sP oocXYplane.Mod + + #Ulm's Oberon system libs + $(VOCSTATIC) -sP ulmSys.Mod + $(VOCSTATIC) -sP ulmSYSTEM.Mod + $(VOCSTATIC) -sP ulmASCII.Mod + $(VOCSTATIC) -sP ulmSets.Mod + $(VOCSTATIC) -sP ulmObjects.Mod + $(VOCSTATIC) -sP ulmDisciplines.Mod + $(VOCSTATIC) -sP ulmPriorities.Mod + $(VOCSTATIC) -sP ulmServices.Mod + $(VOCSTATIC) -sP ulmEvents.Mod + $(VOCSTATIC) -sP ulmResources.Mod + $(VOCSTATIC) -sP ulmForwarders.Mod + $(VOCSTATIC) -sP ulmRelatedEvents.Mod + $(VOCSTATIC) -sP ulmIO.Mod + $(VOCSTATIC) -sP ulmProcess.Mod + $(VOCSTATIC) -sP ulmTypes.Mod + $(VOCSTATIC) -sP ulmStreams.Mod + $(VOCSTATIC) -sP ulmAssertions.Mod + $(VOCSTATIC) -sP ulmIndirectDisciplines.Mod + $(VOCSTATIC) -sP ulmStreamDisciplines.Mod + $(VOCSTATIC) -sP ulmIEEE.Mod + $(VOCSTATIC) -sP ulmMC68881.Mod + $(VOCSTATIC) -sP ulmReals.Mod + $(VOCSTATIC) -sP ulmPrint.Mod + $(VOCSTATIC) -sP ulmWrite.Mod + $(VOCSTATIC) -sP ulmTexts.Mod + $(VOCSTATIC) -sP ulmStrings.Mod + $(VOCSTATIC) -sP ulmConstStrings.Mod + $(VOCSTATIC) -sP ulmPlotters.Mod + $(VOCSTATIC) -sP ulmSysTypes.Mod + $(VOCSTATIC) -sP ulmSysConversions.Mod + $(VOCSTATIC) -sP ulmErrors.Mod + $(VOCSTATIC) -sP ulmSysErrors.Mod + $(VOCSTATIC) -sP ulmSysIO.Mod + $(VOCSTATIC) -sP ulmLoader.Mod + $(VOCSTATIC) -sP ulmNetIO.Mod + $(VOCSTATIC) -sP ulmPersistentObjects.Mod + $(VOCSTATIC) -sP ulmPersistentDisciplines.Mod + $(VOCSTATIC) -sP ulmOperations.Mod + $(VOCSTATIC) -sP ulmScales.Mod + $(VOCSTATIC) -sP ulmTimes.Mod + $(VOCSTATIC) -sP ulmClocks.Mod + $(VOCSTATIC) -sP ulmTimers.Mod + $(VOCSTATIC) -sP ulmConditions.Mod + $(VOCSTATIC) -sP ulmStreamConditions.Mod + $(VOCSTATIC) -sP ulmTimeConditions.Mod + $(VOCSTATIC) -sP ulmSysConversions.Mod + $(VOCSTATIC) -sP ulmSysStat.Mod + $(VOCSTATIC) -sP ulmCiphers.Mod + $(VOCSTATIC) -sP ulmCipherOps.Mod + $(VOCSTATIC) -sP ulmBlockCiphers.Mod + $(VOCSTATIC) -sP ulmAsymmetricCiphers.Mod + $(VOCSTATIC) -sP ulmConclusions.Mod + $(VOCSTATIC) -sP ulmRandomGenerators.Mod + $(VOCSTATIC) -sP ulmTCrypt.Mod + + #more v4 libs + $(VOCSTATIC) -sP Printer.Mod + $(VOCSTATIC) -sP Strings.Mod + $(VOCSTATIC) -sP Sets.Mod + $(VOCSTATIC) -sP Sets0.Mod + $(VOCSTATIC) -sP compatIn.Mod + + #pow32 libs + $(VOCSTATIC) -sP powStrings.Mod + + #misc libs + $(VOCSTATIC) -sP MultiArrays.Mod + $(VOCSTATIC) -sP MultiArrayRiders.Mod + $(VOCSTATIC) -sP MersenneTwister.Mod + $(VOCSTATIC) -sP Listen.Mod + + #s3 libs + $(VOCSTATIC) -sP ethBTrees.Mod + $(VOCSTATIC) -sP ethMD5.Mod + $(VOCSTATIC) -sP ethSets.Mod + $(VOCSTATIC) -sP ethZlib.Mod + $(VOCSTATIC) -sP ethZlibBuffers.Mod + $(VOCSTATIC) -sP ethZlibInflate.Mod + $(VOCSTATIC) -sP ethZlibDeflate.Mod + $(VOCSTATIC) -sP ethZlibReaders.Mod + $(VOCSTATIC) -sP ethZlibWriters.Mod + $(VOCSTATIC) -sP ethZip.Mod + $(VOCSTATIC) -sP ethRandomNumbers.Mod + $(VOCSTATIC) -sP ethGZReaders.Mod + $(VOCSTATIC) -sP ethGZWriters.Mod + + +# build remaining tools +# $(VOCSTATIC0) -sPS compatIn.Mod +# $(VOCSTATIC0) -smPS vmake.Mod +# $(CC) compatIn.c +# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o CmdlnTexts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o oocOakStrings.o oocIntStr.o oocConvTypes.o oocIntConv.o version.o architecture.o + + + +stage7: + #objects := $(wildcard *.o) + #$(LD) objects + $(ARCHIVE) *.o + #$(ARCHIVE) objects + $(LD) *.o + echo "$(PREFIX)/lib" > 05vishap.conf + +clean: +# rm_objects := rm $(wildcard *.o) +# objects + rm *.o + rm *.so + rm *.h + rm *.c + rm *.a + rm *.sym + +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).so $(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) diff --git a/makefile.gnuc.armv6j b/makefile.linux.gnuc.armv6j similarity index 94% rename from makefile.gnuc.armv6j rename to makefile.linux.gnuc.armv6j index 6954f531..b942e479 100644 --- a/makefile.gnuc.armv6j +++ b/makefile.linux.gnuc.armv6j @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/makefile.gnuc.armv6j_hardfp b/makefile.linux.gnuc.armv6j_hardfp similarity index 94% rename from makefile.gnuc.armv6j_hardfp rename to makefile.linux.gnuc.armv6j_hardfp index b79b7062..a467c79d 100644 --- a/makefile.gnuc.armv6j_hardfp +++ b/makefile.linux.gnuc.armv6j_hardfp @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/makefile.gnuc.armv7a_hardfp b/makefile.linux.gnuc.armv7a_hardfp similarity index 94% rename from makefile.gnuc.armv7a_hardfp rename to makefile.linux.gnuc.armv7a_hardfp index 8d6c6277..e9b49138 100644 --- a/makefile.gnuc.armv7a_hardfp +++ b/makefile.linux.gnuc.armv7a_hardfp @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/makefile.gnuc.powerpc b/makefile.linux.gnuc.powerpc similarity index 94% rename from makefile.gnuc.powerpc rename to makefile.linux.gnuc.powerpc index 1396a93a..a1f8e270 100644 --- a/makefile.gnuc.powerpc +++ b/makefile.linux.gnuc.powerpc @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/makefile.gnuc.x86 b/makefile.linux.gnuc.x86 similarity index 94% rename from makefile.gnuc.x86 rename to makefile.linux.gnuc.x86 index 00ac1b7e..4efe3f2e 100644 --- a/makefile.gnuc.x86 +++ b/makefile.linux.gnuc.x86 @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/makefile.gnuc.x86_64 b/makefile.linux.gnuc.x86_64 similarity index 94% rename from makefile.gnuc.x86_64 rename to makefile.linux.gnuc.x86_64 index 443710ed..171b5342 100644 --- a/makefile.gnuc.x86_64 +++ b/makefile.linux.gnuc.x86_64 @@ -7,15 +7,15 @@ CCOMP = gnuc RELEASE = 1.0 -INCLUDEPATH = -Isrc/lib/system/$(CCOMP)/$(TARCH) +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/system:src/lib/system/$(CCOMP):src/lib/system/$(CCOMP)/$(TARCH):src/lib/ulm:src/lib/ulm/$(CCOMP):src/lib/ulm/$(TARCH):src/lib/ooc2:src/lib/ooc2/$(CCOMP):src/lib/ooc:src/lib/ooc/$(CCOMP)/$(TARCH):src/lib/pow:src/lib/misc:src/lib/s3:src/voc:src/voc/$(CCOMP):src/voc/$(CCOMP)/$(TARCH):src/tools/ocat:src/tools/browser:src/tools/vocparam:src/tools/vmake:src/tools/coco:src/test +SETPATH = CFLAGS=$(INCLUDEPATH) PATH=.:/bin:/usr/bin MODULES=.:src/lib:src/lib/v4:src/lib/v4/$(TARCH):src/lib/system/$(TOS)/$(CCOMP):src/lib/system/$(TOS)/$(CCOMP)/$(TARCH):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/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) -VERSION = GNU_Linux_$(TARCH) LIBNAME = VishapOberon LIBRARY = lib$(LIBNAME) diff --git a/ocat b/ocat index 802d3c22371eb2099f672240707b8efda51eb3f4..c5e15fe407bca81e5da6092968816c5c7c0328f2 100755 GIT binary patch delta 8140 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 delta 8060 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 Y=e*>jo$D!>+#cFVObj*$Xh%l<7aG;!s{jB1 diff --git a/showdef.REMOVED.git-id b/showdef.REMOVED.git-id index 591de599..c786a08b 100644 --- a/showdef.REMOVED.git-id +++ b/showdef.REMOVED.git-id @@ -1 +1 @@ -425e4c63d1a68da9f8a4a69d2e103393b6b4e8be \ No newline at end of file +8baf9d05f86b0d91b66c9869c39139a6b873ea38 \ No newline at end of file diff --git a/src/lib/ooc/gnuc/x86_64/oocC.Mod b/src/lib/ooc/darwin/clang/x86_64/oocC.Mod similarity index 100% rename from src/lib/ooc/gnuc/x86_64/oocC.Mod rename to src/lib/ooc/darwin/clang/x86_64/oocC.Mod diff --git a/src/lib/ooc/gnuc/armv6j/oocC.Mod b/src/lib/ooc/linux/gnuc/armv6j/oocC.Mod similarity index 100% rename from src/lib/ooc/gnuc/armv6j/oocC.Mod rename to src/lib/ooc/linux/gnuc/armv6j/oocC.Mod diff --git a/src/lib/ooc/gnuc/armv6j_hardfp/oocC.Mod b/src/lib/ooc/linux/gnuc/armv6j_hardfp/oocC.Mod similarity index 100% rename from src/lib/ooc/gnuc/armv6j_hardfp/oocC.Mod rename to src/lib/ooc/linux/gnuc/armv6j_hardfp/oocC.Mod diff --git a/src/lib/ooc/gnuc/powerpc/oocC.Mod b/src/lib/ooc/linux/gnuc/powerpc/oocC.Mod similarity index 100% rename from src/lib/ooc/gnuc/powerpc/oocC.Mod rename to src/lib/ooc/linux/gnuc/powerpc/oocC.Mod diff --git a/src/lib/ooc/gnuc/x86/oocC.Mod b/src/lib/ooc/linux/gnuc/x86/oocC.Mod similarity index 100% rename from src/lib/ooc/gnuc/x86/oocC.Mod rename to src/lib/ooc/linux/gnuc/x86/oocC.Mod diff --git a/src/lib/ooc/linux/gnuc/x86_64/oocC.Mod b/src/lib/ooc/linux/gnuc/x86_64/oocC.Mod new file mode 100644 index 00000000..14638e75 --- /dev/null +++ b/src/lib/ooc/linux/gnuc/x86_64/oocC.Mod @@ -0,0 +1,71 @@ +(* $Id: C.Mod,v 1.9 1999/10/03 11:46:01 ooc-devel Exp $ *) +MODULE oocC; +(* Basic data types for interfacing to C code. + Copyright (C) 1997-1998 Michael van Acken + + This module is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This module is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OOC. If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*) + +IMPORT + SYSTEM; + +(* +These types are intended to be equivalent to their C counterparts. +They may vary depending on your system, but as long as you stick to a 32 Bit +Unix they should be fairly safe. +*) + +TYPE + char* = CHAR; + signedchar* = SHORTINT; (* signed char *) + shortint* = RECORD a,b : SYSTEM.BYTE END; (* 2 bytes on x64_64 *) (* short int *) + int* = INTEGER; + set* = INTEGER;(*SET;*) (* unsigned int, used as set *) + longint* = LONGINT; (* long int *) + longset* = SET; (*SYSTEM.SET64; *) (* unsigned long, used as set *) + address* = LONGINT; (*SYSTEM.ADDRESS;*) + float* = REAL; + double* = LONGREAL; + + enum1* = int; + enum2* = int; + enum4* = int; + + (* if your C compiler uses short enumerations, you'll have to replace the + declarations above with + enum1* = SHORTINT; + enum2* = INTEGER; + enum4* = LONGINT; + *) + + FILE* = address; (* this is acually a replacement for `FILE*', i.e., for a pointer type *) + sizet* = longint; + uidt* = int; + gidt* = int; + + +TYPE (* some commonly used C array types *) + charPtr1d* = POINTER TO ARRAY OF char; + charPtr2d* = POINTER TO ARRAY OF charPtr1d; + intPtr1d* = POINTER TO ARRAY OF int; + +TYPE (* C string type, assignment compatible with character arrays and + string constants *) + string* = POINTER (*[CSTRING]*) TO ARRAY OF char; + +TYPE + Proc* = PROCEDURE; + +END oocC. diff --git a/src/lib/ooc2/gnuc/oocwrapperlibc.Mod b/src/lib/ooc2/darwin/clang/oocwrapperlibc.Mod similarity index 100% rename from src/lib/ooc2/gnuc/oocwrapperlibc.Mod rename to src/lib/ooc2/darwin/clang/oocwrapperlibc.Mod diff --git a/src/lib/ooc2/linux/gnuc/oocwrapperlibc.Mod b/src/lib/ooc2/linux/gnuc/oocwrapperlibc.Mod new file mode 100644 index 00000000..0d0cf9b6 --- /dev/null +++ b/src/lib/ooc2/linux/gnuc/oocwrapperlibc.Mod @@ -0,0 +1,34 @@ +MODULE oocwrapperlibc; +IMPORT SYSTEM; +PROCEDURE -includeStdio() + "#include "; + +PROCEDURE -sys(str: ARRAY OF CHAR): INTEGER + "system(str)"; + +PROCEDURE system*(cmd : ARRAY OF CHAR); +VAR r : INTEGER; +BEGIN +r := sys(cmd); +END system; +(* +PROCEDURE strtod* (string: C.address; + VAR tailptr: C.charPtr1d): C.double; +PROCEDURE strtof* (string: C.address; + VAR tailptr: C.charPtr1d): C.float; +PROCEDURE sscanf* (s: C.address; template: ARRAY OF CHAR; ...) : C.int; +*) + +PROCEDURE -sprntf(s, t0, t1, t2: ARRAY OF CHAR): INTEGER + "sprintf(s, t0, t1, t2)"; + +PROCEDURE sprintf* (VAR s: ARRAY OF CHAR; template0: ARRAY OF CHAR; template1: ARRAY OF CHAR; template2: ARRAY OF CHAR); +VAR r : INTEGER; +BEGIN + r := sprntf (s, template0, template1, template2); +END sprintf; + +BEGIN + + +END oocwrapperlibc. diff --git a/src/lib/system/gnuc/x86_64/Args.Mod b/src/lib/system/darwin/clang/x86_64/Args.Mod similarity index 100% rename from src/lib/system/gnuc/x86_64/Args.Mod rename to src/lib/system/darwin/clang/x86_64/Args.Mod diff --git a/src/lib/system/gnuc/x86_64/SYSTEM.c0 b/src/lib/system/darwin/clang/x86_64/SYSTEM.c0 similarity index 100% rename from src/lib/system/gnuc/x86_64/SYSTEM.c0 rename to src/lib/system/darwin/clang/x86_64/SYSTEM.c0 diff --git a/src/lib/system/darwin/clang/x86_64/SYSTEM.h b/src/lib/system/darwin/clang/x86_64/SYSTEM.h new file mode 100644 index 00000000..9fadaf48 --- /dev/null +++ b/src/lib/system/darwin/clang/x86_64/SYSTEM.h @@ -0,0 +1,234 @@ +#ifndef SYSTEM__h +#define SYSTEM__h + +/* + +voc (jet backend) runtime system interface and macros library +copyright (c) Josef Templ, 1995, 1996 + +clang for Darwin version +uses double # as concatenation operator + +*/ + +#include +#include + +extern void *memcpy(void *dest, const void *src, long n); +extern void *malloc(long size); +extern void exit(int status); + +#define export +#define import extern + +/* constants */ +#define __MAXEXT 16 +#define NIL 0L +#define POINTER__typ (long*)1L /* not NIL and not a valid type */ + +/* basic types */ +//typedef char BOOLEAN; +#define BOOLEAN char +//typedef unsigned char CHAR; +#define CHAR unsigned char +//exactly two bytes +#define LONGCHAR unsigned short int +//typedef signed char SHORTINT; +#define SHORTINT signed char +//for x86 GNU/Linux +//typedef short int INTEGER; +//for x86_64 GNU/Linux +//typedef int INTEGER; +#define INTEGER int +//typedef long LONGINT; +#define LONGINT long +//typedef float REAL; +#define REAL float +//typedef double LONGREAL; +#define LONGREAL double +//typedef unsigned long SET; +#define SET unsigned long +typedef void *SYSTEM_PTR; +//#define *SYSTEM_PTR void +//typedef unsigned char SYSTEM_BYTE; +#define SYSTEM_BYTE unsigned char + +/* runtime system routines */ +extern long SYSTEM_DIV(); +extern long SYSTEM_MOD(); +extern long SYSTEM_ENTIER(); +extern long SYSTEM_ASH(); +extern long SYSTEM_ABS(); +extern long SYSTEM_XCHK(); +extern long SYSTEM_RCHK(); +extern double SYSTEM_ABSD(); +extern SYSTEM_PTR SYSTEM_NEWREC(); +extern SYSTEM_PTR SYSTEM_NEWBLK(); +#ifdef __STDC__ +extern SYSTEM_PTR SYSTEM_NEWARR(long*, long, int, int, int, ...); +#else +extern SYSTEM_PTR SYSTEM_NEWARR(); +#endif +extern SYSTEM_PTR SYSTEM_REGMOD(); +extern void SYSTEM_INCREF(); +extern void SYSTEM_REGCMD(); +extern void SYSTEM_REGTYP(); +extern void SYSTEM_REGFIN(); +extern void SYSTEM_FINALL(); +extern void SYSTEM_INIT(); +extern void SYSTEM_FINI(); +extern void SYSTEM_HALT(); +extern void SYSTEM_INHERIT(); +extern void SYSTEM_ENUMP(); +extern void SYSTEM_ENUMR(); + +/* module registry */ +#define __DEFMOD static void *m; if(m!=0)return m +#define __REGMOD(name, enum) if(m==0)m=SYSTEM_REGMOD((CHAR*)name,enum); else return m +#define __ENDMOD return m +#define __INIT(argc, argv) static void *m; SYSTEM_INIT(argc, (long)&argv); +#define __REGMAIN(name, enum) m=SYSTEM_REGMOD(name,enum) +#define __FINI SYSTEM_FINI(); return 0 +#define __IMPORT(name) SYSTEM_INCREF(name##__init()) +#define __REGCMD(name, cmd) SYSTEM_REGCMD(m, name, cmd) + +/* SYSTEM ops */ +#define __SYSNEW(p, len) p=SYSTEM_NEWBLK((long)(len)) +#define __VAL(t, x) (*(t*)&(x)) +#define __GET(a, x, t) x= *(t*)(a) +#define __PUT(a, x, t) *(t*)(a)=x +#define __LSHL(x, n, t) ((t)((unsigned t)(x)<<(n))) +#define __LSHR(x, n, t) ((t)((unsigned t)(x)>>(n))) +#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) +#define __ROTL(x, n, t) ((t)((unsigned t)(x)<<(n)|(unsigned t)(x)>>(8*sizeof(t)-(n)))) +#define __ROTR(x, n, t) ((t)((unsigned t)(x)>>(n)|(unsigned t)(x)<<(8*sizeof(t)-(n)))) +#define __LSHR(x, n, t) ((t)((unsigned t)(x)>>(n))) +#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) +#define __ROTL(x, n, t) ((t)((unsigned t)(x)<<(n)|(unsigned t)(x)>>(8*sizeof(t)-(n)))) +#define __ROTR(x, n, t) ((t)((unsigned t)(x)>>(n)|(unsigned t)(x)<<(8*sizeof(t)-(n)))) +#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) +#define __BIT(x, n) (*(unsigned long*)(x)>>(n)&1) +#define __MOVE(s, d, n) memcpy((char*)(d),(char*)(s),n) + +/* std procs and operator mappings */ +#define __SHORT(x, y) ((int)((unsigned long)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) +#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) +#define __CHR(x) ((CHAR)__R(x, 256)) +#define __CHRF(x) ((CHAR)__RF(x, 256)) +#define __DIV(x, y) ((x)>=0?(x)/(y):-(((y)-1-(x))/(y))) +#define __DIVF(x, y) SYSTEM_DIV((long)(x),(long)(y)) +#define __MOD(x, y) ((x)>=0?(x)%(y):__MODF(x,y)) +#define __MODF(x, y) SYSTEM_MOD((long)(x),(long)(y)) +#define __NEW(p, t) p=SYSTEM_NEWREC((long)t##__typ) +#define __NEWARR SYSTEM_NEWARR +#define __HALT(x) SYSTEM_HALT(x) +#define __ASSERT(cond, x) if (!(cond)) {SYSTEM_assert = x; SYSTEM_HALT(-1);} +#define __ENTIER(x) SYSTEM_ENTIER(x) +#define __ABS(x) (((x)<0)?-(x):(x)) +#define __ABSF(x) SYSTEM_ABS((long)(x)) +#define __ABSFD(x) SYSTEM_ABSD((double)(x)) +#define __CAP(ch) ((CHAR)((ch)&0x5f)) +#define __ODD(x) ((x)&1) +#define __IN(x, s) (((s)>>(x))&1) +#define __SETOF(x) ((SET)1<<(x)) +#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) +#define __MASK(x, m) ((x)&~(m)) +#define __COPY(s, d, n) {char*_a=(void*)s,*_b=(void*)d;long _i=0,_t=n-1;while(_i<_t&&((_b[_i]=_a[_i])!=0)){_i++;};_b[_i]=0;} +static int __STRCMP(x, y) + CHAR *x, *y; +{long i = 0; CHAR ch1, ch2; + do {ch1 = x[i]; ch2 = y[i]; i++; + if (!ch1) return -(int)ch2; + } while (ch1==ch2); + return (int)ch1 - (int)ch2; +} +#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) +#define __ASHL(x, n) ((long)(x)<<(n)) +#define __ASHR(x, n) ((long)(x)>>(n)) +#define __ASHF(x, n) SYSTEM_ASH((long)(x), (long)(n)) +#define __DUP(x, l, t) x=(void*)memcpy(alloca(l*sizeof(t)),x,l*sizeof(t)) +#define __DUPARR(v, t) v=(void*)memcpy(v##__copy,v,sizeof(t)) +#define __DEL(x) /* DUP with alloca frees storage automatically */ +#define __IS(tag, typ, level) (*(tag-(__BASEOFF-level))==(long)typ##__typ) +#define __TYPEOF(p) (*(((long**)(p))-1)) +#define __ISP(p, typ, level) __IS(__TYPEOF(p),typ,level) + +/* runtime checks */ +#define __X(i, ub) (((unsigned)(long)(i)<(unsigned long)(ub))?i:(__HALT(-2),0)) +#define __XF(i, ub) SYSTEM_XCHK((long)(i), (long)(ub)) +#define __RETCHK __retchk: __HALT(-3) +#define __CASECHK __HALT(-4) +#define __GUARDP(p, typ, level) ((typ*)(__ISP(p,typ,level)?p:(__HALT(-5),p))) +#define __GUARDR(r, typ, level) (*((typ*)(__IS(r##__typ,typ,level)?r:(__HALT(-5),r)))) +#define __GUARDA(p, typ, level) ((struct typ*)(__IS(__TYPEOF(p),typ,level)?p:(__HALT(-5),p))) +#define __GUARDEQR(p, dyntyp, typ) if(dyntyp!=typ##__typ) __HALT(-6);*(p) +#define __GUARDEQP(p, typ) if(__TYPEOF(p)!=typ##__typ)__HALT(-6);*(p) +#define __WITHCHK __HALT(-7) +#define __R(i, ub) (((unsigned)(long)(i)<(unsigned long)(ub))?i:(__HALT(-8),0)) +#define __RF(i, ub) SYSTEM_RCHK((long)(i),(long)(ub)) + +/* record type descriptors */ +#define __TDESC(t, m, n) \ + static struct t##__desc {\ + long tproc[m]; \ + long tag, next, level, module; \ + char name[24]; \ + long *base[__MAXEXT]; \ + char *rsrvd; \ + long blksz, ptr[n+1]; \ + } t##__desc + +#define __BASEOFF (__MAXEXT+1) +#define __TPROC0OFF (__BASEOFF+24/sizeof(long)+5) +#define __EOM 1 +#define __TDFLDS(name, size) {__EOM}, 1, 0, 0, 0, name, {0}, 0, size +#define __ENUMP(adr, n, P) SYSTEM_ENUMP(adr, (long)(n), P) +#define __ENUMR(adr, typ, size, n, P) SYSTEM_ENUMR(adr, typ, (long)(size), (long)(n), P) + +#define __INITYP(t, t0, level) \ + t##__typ= &t##__desc.blksz; \ + memcpy(t##__desc.base, t0##__typ - __BASEOFF, level*sizeof(long)); \ + t##__desc.base[level]=t##__typ; \ + t##__desc.module=(long)m; \ + if(t##__desc.blksz!=sizeof(struct t)) __HALT(-15); \ + t##__desc.blksz=(t##__desc.blksz+5*sizeof(long)-1)/(4*sizeof(long))*(4*sizeof(long)); \ + SYSTEM_REGTYP(m, (long)&t##__desc.next); \ + SYSTEM_INHERIT(t##__typ, t0##__typ) + +/* Oberon-2 type bound procedures support */ +#define __INITBP(t, proc, num) *(t##__typ-(__TPROC0OFF+num))=(long)proc +#define __SEND(typ, num, funtyp, parlist) ((funtyp)(*(typ-(__TPROC0OFF+num))))parlist + +/* runtime system variables */ +extern LONGINT SYSTEM_argc; +extern LONGINT SYSTEM_argv; +extern void (*SYSTEM_Halt)(); +extern LONGINT SYSTEM_halt; +extern LONGINT SYSTEM_assert; +extern SYSTEM_PTR SYSTEM_modules; +extern LONGINT SYSTEM_heapsize; +extern LONGINT SYSTEM_allocated; +extern LONGINT SYSTEM_lock; +extern SHORTINT SYSTEM_gclock; +extern BOOLEAN SYSTEM_interrupted; + +/* ANSI prototypes; not used so far +static int __STRCMP(CHAR *x, CHAR *y); +void SYSTEM_INIT(int argc, long argvadr); +void SYSTEM_FINI(void); +long SYSTEM_XCHK(long i, long ub); +long SYSTEM_RCHK(long i, long ub); +long SYSTEM_ASH(long i, long n); +long SYSTEM_ABS(long i); +double SYSTEM_ABSD(double i); +void SYSTEM_INHERIT(long *t, long *t0); +void SYSTEM_ENUMP(long *adr, long n, void (*P)(void*)); +void SYSTEM_ENUMR(char *adr, long *typ, long size, long n, void (*P)(void*)); +long SYSTEM_DIV(unsigned long x, unsigned long y); +long SYSTEM_MOD(unsigned long x, unsigned long y); +long SYSTEM_ENTIER(double x); +void SYSTEM_HALT(int n); +*/ + +#endif + diff --git a/src/lib/system/gnuc/x86_64/Unix.Mod b/src/lib/system/darwin/clang/x86_64/Unix.Mod similarity index 100% rename from src/lib/system/gnuc/x86_64/Unix.Mod rename to src/lib/system/darwin/clang/x86_64/Unix.Mod diff --git a/src/lib/system/gnuc/Console.Mod b/src/lib/system/linux/gnuc/Console.Mod similarity index 100% rename from src/lib/system/gnuc/Console.Mod rename to src/lib/system/linux/gnuc/Console.Mod diff --git a/src/lib/system/gnuc/SYSTEM.Mod b/src/lib/system/linux/gnuc/SYSTEM.Mod similarity index 100% rename from src/lib/system/gnuc/SYSTEM.Mod rename to src/lib/system/linux/gnuc/SYSTEM.Mod diff --git a/src/lib/system/gnuc/armv6j/Args.Mod b/src/lib/system/linux/gnuc/armv6j/Args.Mod similarity index 100% rename from src/lib/system/gnuc/armv6j/Args.Mod rename to src/lib/system/linux/gnuc/armv6j/Args.Mod diff --git a/src/lib/system/gnuc/armv6j/SYSTEM.c0 b/src/lib/system/linux/gnuc/armv6j/SYSTEM.c0 similarity index 100% rename from src/lib/system/gnuc/armv6j/SYSTEM.c0 rename to src/lib/system/linux/gnuc/armv6j/SYSTEM.c0 diff --git a/src/lib/system/gnuc/armv6j/SYSTEM.h b/src/lib/system/linux/gnuc/armv6j/SYSTEM.h similarity index 100% rename from src/lib/system/gnuc/armv6j/SYSTEM.h rename to src/lib/system/linux/gnuc/armv6j/SYSTEM.h diff --git a/src/lib/system/gnuc/armv6j/Unix.Mod b/src/lib/system/linux/gnuc/armv6j/Unix.Mod similarity index 100% rename from src/lib/system/gnuc/armv6j/Unix.Mod rename to src/lib/system/linux/gnuc/armv6j/Unix.Mod diff --git a/src/lib/system/gnuc/armv6j_hardfp/Args.Mod b/src/lib/system/linux/gnuc/armv6j_hardfp/Args.Mod similarity index 100% rename from src/lib/system/gnuc/armv6j_hardfp/Args.Mod rename to src/lib/system/linux/gnuc/armv6j_hardfp/Args.Mod diff --git a/src/lib/system/gnuc/armv6j_hardfp/SYSTEM.c0 b/src/lib/system/linux/gnuc/armv6j_hardfp/SYSTEM.c0 similarity index 100% rename from src/lib/system/gnuc/armv6j_hardfp/SYSTEM.c0 rename to src/lib/system/linux/gnuc/armv6j_hardfp/SYSTEM.c0 diff --git a/src/lib/system/gnuc/armv6j_hardfp/SYSTEM.h b/src/lib/system/linux/gnuc/armv6j_hardfp/SYSTEM.h similarity index 100% rename from src/lib/system/gnuc/armv6j_hardfp/SYSTEM.h rename to src/lib/system/linux/gnuc/armv6j_hardfp/SYSTEM.h diff --git a/src/lib/system/gnuc/armv6j_hardfp/Unix.Mod b/src/lib/system/linux/gnuc/armv6j_hardfp/Unix.Mod similarity index 100% rename from src/lib/system/gnuc/armv6j_hardfp/Unix.Mod rename to src/lib/system/linux/gnuc/armv6j_hardfp/Unix.Mod diff --git a/src/lib/system/gnuc/armv7a_hardfp/Args.Mod b/src/lib/system/linux/gnuc/armv7a_hardfp/Args.Mod similarity index 100% rename from src/lib/system/gnuc/armv7a_hardfp/Args.Mod rename to src/lib/system/linux/gnuc/armv7a_hardfp/Args.Mod diff --git a/src/lib/system/gnuc/armv7a_hardfp/SYSTEM.c0 b/src/lib/system/linux/gnuc/armv7a_hardfp/SYSTEM.c0 similarity index 100% rename from src/lib/system/gnuc/armv7a_hardfp/SYSTEM.c0 rename to src/lib/system/linux/gnuc/armv7a_hardfp/SYSTEM.c0 diff --git a/src/lib/system/gnuc/armv7a_hardfp/SYSTEM.h b/src/lib/system/linux/gnuc/armv7a_hardfp/SYSTEM.h similarity index 100% rename from src/lib/system/gnuc/armv7a_hardfp/SYSTEM.h rename to src/lib/system/linux/gnuc/armv7a_hardfp/SYSTEM.h diff --git a/src/lib/system/gnuc/armv7a_hardfp/Unix.Mod b/src/lib/system/linux/gnuc/armv7a_hardfp/Unix.Mod similarity index 100% rename from src/lib/system/gnuc/armv7a_hardfp/Unix.Mod rename to src/lib/system/linux/gnuc/armv7a_hardfp/Unix.Mod diff --git a/src/lib/system/gnuc/powerpc/Args.Mod b/src/lib/system/linux/gnuc/powerpc/Args.Mod similarity index 100% rename from src/lib/system/gnuc/powerpc/Args.Mod rename to src/lib/system/linux/gnuc/powerpc/Args.Mod diff --git a/src/lib/system/gnuc/powerpc/SYSTEM.c0 b/src/lib/system/linux/gnuc/powerpc/SYSTEM.c0 similarity index 100% rename from src/lib/system/gnuc/powerpc/SYSTEM.c0 rename to src/lib/system/linux/gnuc/powerpc/SYSTEM.c0 diff --git a/src/lib/system/gnuc/powerpc/SYSTEM.h b/src/lib/system/linux/gnuc/powerpc/SYSTEM.h similarity index 100% rename from src/lib/system/gnuc/powerpc/SYSTEM.h rename to src/lib/system/linux/gnuc/powerpc/SYSTEM.h diff --git a/src/lib/system/gnuc/powerpc/Unix.Mod b/src/lib/system/linux/gnuc/powerpc/Unix.Mod similarity index 100% rename from src/lib/system/gnuc/powerpc/Unix.Mod rename to src/lib/system/linux/gnuc/powerpc/Unix.Mod diff --git a/src/lib/system/gnuc/x86/Args.Mod b/src/lib/system/linux/gnuc/x86/Args.Mod similarity index 100% rename from src/lib/system/gnuc/x86/Args.Mod rename to src/lib/system/linux/gnuc/x86/Args.Mod diff --git a/src/lib/system/gnuc/x86/SYSTEM.c0 b/src/lib/system/linux/gnuc/x86/SYSTEM.c0 similarity index 100% rename from src/lib/system/gnuc/x86/SYSTEM.c0 rename to src/lib/system/linux/gnuc/x86/SYSTEM.c0 diff --git a/src/lib/system/gnuc/x86/SYSTEM.h b/src/lib/system/linux/gnuc/x86/SYSTEM.h similarity index 100% rename from src/lib/system/gnuc/x86/SYSTEM.h rename to src/lib/system/linux/gnuc/x86/SYSTEM.h diff --git a/src/lib/system/gnuc/x86/Unix.Mod b/src/lib/system/linux/gnuc/x86/Unix.Mod similarity index 100% rename from src/lib/system/gnuc/x86/Unix.Mod rename to src/lib/system/linux/gnuc/x86/Unix.Mod diff --git a/src/lib/system/linux/gnuc/x86_64/Args.Mod b/src/lib/system/linux/gnuc/x86_64/Args.Mod new file mode 100644 index 00000000..c6b7b56e --- /dev/null +++ b/src/lib/system/linux/gnuc/x86_64/Args.Mod @@ -0,0 +1,65 @@ +MODULE Args; (* jt, 8.12.94 *) + + (* command line argument handling for voc (jet backend) *) + + + IMPORT SYSTEM; + + TYPE + ArgPtr = POINTER TO ARRAY 1024 OF CHAR; + ArgVec = POINTER TO ARRAY 1024 OF ArgPtr; + + VAR argc-, argv-: LONGINT; + (*PROCEDURE -includestdlib() "#include ";*) + PROCEDURE -externgetenv() "extern char *getenv(const char *name);"; (* took this from stdlib.h*) + PROCEDURE -Argc(): INTEGER "SYSTEM_argc"; + PROCEDURE -Argv(): LONGINT "(long)SYSTEM_argv"; + PROCEDURE -getenv(var: ARRAY OF CHAR): ArgPtr + "(Args_ArgPtr)getenv(var)"; + + PROCEDURE Get*(n: INTEGER; VAR val: ARRAY OF CHAR); + VAR av: ArgVec; + BEGIN + IF n < argc THEN av := SYSTEM.VAL(ArgVec, argv); COPY(av[n]^, val) END + END Get; + + PROCEDURE GetInt*(n: INTEGER; VAR val: LONGINT); + VAR s: ARRAY 64 OF CHAR; k, d, i: LONGINT; + BEGIN + s := ""; Get(n, s); i := 0; + IF s[0] = "-" THEN i := 1 END ; + k := 0; d := ORD(s[i]) - ORD("0"); + WHILE (d >= 0 ) & (d <= 9) DO k := k*10 + d; INC(i); d := ORD(s[i]) - ORD("0") END ; + IF s[0] = "-" THEN d := -d; DEC(i) END ; + IF i > 0 THEN val := k END + END GetInt; + + PROCEDURE Pos*(s: ARRAY OF CHAR): INTEGER; + VAR i: INTEGER; arg: ARRAY 256 OF CHAR; + BEGIN + i := 0; Get(i, arg); + WHILE (i < argc) & (s # arg) DO INC(i); Get(i, arg) END ; + RETURN i + END Pos; + + PROCEDURE GetEnv*(var: ARRAY OF CHAR; VAR val: ARRAY OF CHAR); + VAR p: ArgPtr; + BEGIN + p := getenv(var); + IF p # NIL THEN COPY(p^, val) END + END GetEnv; + + PROCEDURE getEnv*(var: ARRAY OF CHAR; VAR val: ARRAY OF CHAR): BOOLEAN; + VAR p: ArgPtr; + BEGIN + p := getenv(var); + IF p # NIL THEN + COPY(p^, val); + RETURN TRUE + ELSE + RETURN FALSE + END + END getEnv; + +BEGIN argc := Argc(); argv := Argv() +END Args. diff --git a/src/lib/system/linux/gnuc/x86_64/SYSTEM.c0 b/src/lib/system/linux/gnuc/x86_64/SYSTEM.c0 new file mode 100644 index 00000000..bb8ee442 --- /dev/null +++ b/src/lib/system/linux/gnuc/x86_64/SYSTEM.c0 @@ -0,0 +1,205 @@ +/* +* The body prefix file of the voc(jet backend) runtime system, Version 1.0 +* +* Copyright (c) Software Templ, 1994, 1995 +* +* Module SYSTEM is subject to change any time without prior notification. +* Software Templ disclaims all warranties with regard to module SYSTEM, +* in particular shall Software Templ not be liable for any damage resulting +* from inappropriate use or modification of module SYSTEM. +* +* Version 1.1 jt, 24.11.95 fixes for correct pointer arithmetic on Cray computers +* jt 31.1.2007 ANSI prototypes for malloc and exit in order to avoid cc warnings +* +*/ + +#include "SYSTEM.h" +#ifdef __STDC__ +#include "stdarg.h" +#else +#include "varargs.h" +#endif + +extern void *malloc(long size); +extern void exit(int status); + +void (*SYSTEM_Halt)(); +LONGINT SYSTEM_halt; /* x in HALT(x) */ +LONGINT SYSTEM_assert; /* x in ASSERT(cond, x) */ +LONGINT SYSTEM_argc; +LONGINT SYSTEM_argv; +LONGINT SYSTEM_lock; +BOOLEAN SYSTEM_interrupted; +static LONGINT SYSTEM_mainfrm; /* adr of main proc stack frame, used for stack collection */ + +#define Lock SYSTEM_lock++ +#define Unlock SYSTEM_lock--; if (SYSTEM_interrupted && (SYSTEM_lock == 0)) __HALT(-9) + + +static void SYSTEM_InitHeap(); +void *SYSTEM__init(); + +void SYSTEM_INIT(argc, argvadr) + int argc; long argvadr; +{ + SYSTEM_mainfrm = argvadr; + SYSTEM_argc = argc; + SYSTEM_argv = *(long*)argvadr; + SYSTEM_InitHeap(); + SYSTEM_halt = -128; + SYSTEM__init(); +} + +void SYSTEM_FINI() +{ + SYSTEM_FINALL(); +} + +long SYSTEM_XCHK(i, ub) long i, ub; {return __X(i, ub);} +long SYSTEM_RCHK(i, ub) long i, ub; {return __R(i, ub);} +long SYSTEM_ASH(i, n) long i, n; {return __ASH(i, n);} +long SYSTEM_ABS(i) long i; {return __ABS(i);} +double SYSTEM_ABSD(i) double i; {return __ABS(i);} + +void SYSTEM_INHERIT(t, t0) + long *t, *t0; +{ + t -= __TPROC0OFF; + t0 -= __TPROC0OFF; + while (*t0 != __EOM) {*t = *t0; t--; t0--;} +} + +void SYSTEM_ENUMP(adr, n, P) + long *adr; + long n; + void (*P)(); +{ + while (n > 0) {P(*adr); adr++; n--;} +} + +void SYSTEM_ENUMR(adr, typ, size, n, P) + char *adr; + long *typ, size, n; + void (*P)(); +{ + long *t, off; + typ++; + while (n > 0) { + t = typ; + off = *t; + while (off >= 0) {P(*(long*)(adr+off)); t++; off = *t;} + adr += size; n--; + } +} + +long SYSTEM_DIV(x, y) + unsigned long x, y; +{ if ((long) x >= 0) return (x / y); + else return -((y - 1 - x) / y); +} + +long SYSTEM_MOD(x, y) + unsigned long x, y; +{ unsigned long m; + if ((long) x >= 0) return (x % y); + else { m = (-x) % y; + if (m != 0) return (y - m); else return 0; + } +} + +long SYSTEM_ENTIER(x) + double x; +{ + long y; + if (x >= 0) + return (long)x; + else { + y = (long)x; + if (y <= x) return y; else return y - 1; + } +} + +void SYSTEM_HALT(n) + int n; +{ + SYSTEM_halt = n; + if (SYSTEM_Halt!=0) SYSTEM_Halt(n); + exit(n); +} + +#ifdef __STDC__ +SYSTEM_PTR SYSTEM_NEWARR(long *typ, long elemsz, int elemalgn, int nofdim, int nofdyn, ...) +#else +SYSTEM_PTR SYSTEM_NEWARR(typ, elemsz, elemalgn, nofdim, nofdyn, va_alist) + long *typ, elemsz; + int elemalgn, nofdim, nofdyn; + va_dcl +#endif +{ + long nofelems, size, dataoff, n, nptr, *x, *p, nofptrs, i, *ptab, off; + va_list ap; +#ifdef __STDC__ + va_start(ap, nofdyn); +#else + va_start(ap); +#endif + nofelems = 1; + while (nofdim > 0) { + nofelems = nofelems * va_arg(ap, long); nofdim--; + if (nofelems <= 0) __HALT(-20); + } + va_end(ap); + dataoff = nofdyn * sizeof(long); + if (elemalgn > sizeof(long)) { + n = dataoff % elemalgn; + if (n != 0) dataoff += elemalgn - n; + } + size = dataoff + nofelems * elemsz; + Lock; + if (typ == NIL) { + /* element typ does not contain pointers */ + x = SYSTEM_NEWBLK(size); + } + else if (typ == POINTER__typ) { + /* element type is a pointer */ + x = SYSTEM_NEWBLK(size + nofelems * sizeof(long)); + p = (long*)x[-1]; + p[-nofelems] = *p; /* build new type desc in situ: 1. copy block size; 2. setup ptr tab; 3. set sentinel; 4. patch tag */ + p -= nofelems - 1; n = 1; /* n =1 for skipping the size field */ + while (n <= nofelems) {*p = n*sizeof(long); p++; n++;} + *p = - (nofelems + 1) * sizeof(long); /* sentinel */ + x[-1] -= nofelems * sizeof(long); + } + else { + /* element type is a record that contains pointers */ + ptab = typ + 1; nofptrs = 0; + while (ptab[nofptrs] >= 0) {nofptrs++;} /* number of pointers per element */ + nptr = nofelems * nofptrs; /* total number of pointers */ + x = SYSTEM_NEWBLK(size + nptr * sizeof(long)); + p = (long*)x[- 1]; + p[-nptr] = *p; /* build new type desc in situ; 1. copy block size; 2. setup ptr tab; 3. set sentinel; 4. patch tag */ + p -= nptr - 1; n = 0; off = dataoff; + while (n < nofelems) {i = 0; + while (i < nofptrs) {*p = off + ptab[i]; p++; i++;} + off += elemsz; n++; + } + *p = - (nptr + 1) * sizeof(long); /* sentinel */ + x[-1] -= nptr * sizeof(long); + } + if (nofdyn != 0) { + /* setup len vector for index checks */ +#ifdef __STDC__ + va_start(ap, nofdyn); +#else + va_start(ap); +#endif + p = x; + while (nofdyn > 0) {*p = va_arg(ap, long); p++, nofdyn--;} + va_end(ap); + } + Unlock; + return x; +} + +/* ----------- end of SYSTEM.co ------------- */ + diff --git a/src/lib/system/gnuc/x86_64/SYSTEM.h b/src/lib/system/linux/gnuc/x86_64/SYSTEM.h similarity index 100% rename from src/lib/system/gnuc/x86_64/SYSTEM.h rename to src/lib/system/linux/gnuc/x86_64/SYSTEM.h diff --git a/src/lib/system/linux/gnuc/x86_64/Unix.Mod b/src/lib/system/linux/gnuc/x86_64/Unix.Mod new file mode 100644 index 00000000..7dfde70d --- /dev/null +++ b/src/lib/system/linux/gnuc/x86_64/Unix.Mod @@ -0,0 +1,501 @@ +MODULE Unix; (* Josef Templ, 5.3.90 Linux system calls *) +(* ported to gnu x86_64 and added system function, noch *) +(* Module Unix provides a system call interface to Linux. + Naming conventions: + Procedure and Type-names always start with a capital letter. + error numbers as defined in Unix + other constants start with lower case letters *) + +IMPORT SYSTEM; + +CONST + +(* various important constants *) + + stdin* = 0; stdout* =1; stderr* = 2; + + LOCKEX* = 2; LOCKUN* = 8; (* /usr/include/file.h *) + AFINET* = 2; (* /usr/include/sys/socket.h *) + PFINET* = AFINET; (* /usr/include/linux/socket.h *) + SOCKSTREAM* = 1; (* /usr/include/linux/socket.h *) + FIONREAD* = 541BH; (* in /usr/include/asm/termios.h *) + SETFL* = 4; (* set file descriptor flags; in asm/fcntl.h *) + TCP* = 0; + +(* flag sets, cf. /usr/include/asm/fcntl.h *) + rdonly* = {}; wronly* = {0}; rdwr* = {1}; creat* = {6}; excl* = {7}; trunc* = {9}; append* = {10}; ndelay = {11}; + +(* error numbers *) + + EPERM* = 1; (* Not owner *) + ENOENT* = 2; (* No such file or directory *) + ESRCH* = 3; (* No such process *) + EINTR* = 4; (* Interrupted system call *) + EIO* = 5; (* I/O error *) + ENXIO* = 6; (* No such device or address *) + E2BIG* = 7; (* Arg list too long *) + ENOEXEC* = 8; (* Exec format error *) + EBADF* = 9; (* Bad file number *) + ECHILD* = 10; (* No children *) + EAGAIN* = 11; (* No more processes *) + ENOMEM* = 12; (* Not enough core *) + EACCES* = 13; (* Permission denied *) + EFAULT* = 14; (* Bad address *) + ENOTBLK* = 15; (* Block device required *) + EBUSY* = 16; (* Mount device busy *) + EEXIST* = 17; (* File exists *) + EXDEV* = 18; (* Cross-device link *) + ENODEV* = 19; (* No such device *) + ENOTDIR* = 20; (* Not a directory*) + EISDIR* = 21; (* Is a directory *) + EINVAL* = 22; (* Invalid argument *) + ENFILE* = 23; (* File table overflow *) + EMFILE* = 24; (* Too many open files *) + ENOTTY* = 25; (* Not a typewriter *) + ETXTBSY* = 26; (* Text file busy *) + EFBIG* = 27; (* File too large *) + ENOSPC* = 28; (* No space left on device *) + ESPIPE* = 29; (* Illegal seek *) + EROFS* = 30; (* Read-only file system *) + EMLINK* = 31; (* Too many links *) + EPIPE* = 32; (* Broken pipe *) + EDOM* = 33; (* Argument too large *) + ERANGE* = 34; (* Result too large *) + EDEADLK* = 35; (* Resource deadlock would occur *) + ENAMETOOLONG* = 36; (* File name too long *) + ENOLCK* = 37; (* No record locks available *) + ENOSYS* = 38; (* Function not implemented *) + ENOTEMPTY* = 39; (* Directory not empty *) + ELOOP* = 40; (* Too many symbolic links encountered *) + EWOULDBLOCK* = EAGAIN; (* Operation would block *) + ENOMSG* = 42; (* No message of desired type *) + EIDRM* = 43; (* Identifier removed *) + ECHRNG* = 44; (* Channel number out of range *) + EL2NSYNC* = 45; (* Level 2 not synchronized *) + EL3HLT* = 46; (* Level 3 halted *) + EL3RST* = 47; (* Level 3 reset *) + ELNRNG* = 48; (* Link number out of range *) + EUNATCH* = 49; (* Protocol driver not attached *) + ENOCSI* = 50; (* No CSI structure available *) + EL2HLT* = 51; (* Level 2 halted *) + EBADE* = 52; (* Invalid exchange *) + EBADR* = 53; (* Invalid request descriptor *) + EXFULL* = 54; (* Exchange full *) + ENOANO* = 55; (* No anode *) + EBADRQC* = 56; (* Invalid request code *) + EBADSLT* = 57; (* Invalid slot *) + EDEADLOCK* = 58; (* File locking deadlock error *) + EBFONT* = 59; (* Bad font file format *) + ENOSTR* = 60; (* Device not a stream *) + ENODATA* = 61; (* No data available *) + ETIME* = 62; (* Timer expired *) + ENOSR* = 63; (* Out of streams resources *) + ENONET* = 64; (* Machine is not on the network *) + ENOPKG* = 65; (* Package not installed *) + EREMOTE* = 66; (* Object is remote *) + ENOLINK* = 67; (* Link has been severed *) + EADV* = 68; (* Advertise error *) + ESRMNT* = 69; (* Srmount error *) + ECOMM* = 70; (* Communication error on send *) + EPROTO* = 71; (* Protocol error *) + EMULTIHOP* = 72; (* Multihop attempted *) + EDOTDOT* = 73; (* RFS specific error *) + EBADMSG* = 74; (* Not a data message *) + EOVERFLOW* = 75; (* Value too large for defined data type *) + ENOTUNIQ* = 76; (* Name not unique on network *) + EBADFD* = 77; (* File descriptor in bad state *) + EREMCHG* = 78; (* Remote address changed *) + ELIBACC* = 79; (* Can not access a needed shared library *) + ELIBBAD* = 80; (* Accessing a corrupted shared library *) + ELIBSCN* = 81; (* .lib section in a.out corrupted *) + ELIBMAX* = 82; (* Attempting to link in too many shared libraries *) + ELIBEXEC* = 83; (* Cannot exec a shared library directly *) + EILSEQ* = 84; (* Illegal byte sequence *) + ERESTART* = 85; (* Interrupted system call should be restarted *) + ESTRPIPE* = 86; (* Streams pipe error *) + EUSERS* = 87; (* Too many users *) + ENOTSOCK* = 88; (* Socket operation on non-socket *) + EDESTADDRREQ* = 89; (* Destination address required *) + EMSGSIZE* = 90; (* Message too long *) + EPROTOTYPE* = 91; (* Protocol wrong type for socket *) + ENOPROTOOPT* = 92; (* Protocol not available *) + EPROTONOSUPPORT* = 93; (* Protocol not supported *) + ESOCKTNOSUPPORT* = 94; (* Socket type not supported *) + EOPNOTSUPP* = 95; (* Operation not supported on transport endpoint *) + EPFNOSUPPORT* = 96; (* Protocol family not supported *) + EAFNOSUPPORT* = 97; (* Address family not supported by protocol *) + EADDRINUSE* = 98; (* Address already in use *) + EADDRNOTAVAIL* = 99; (* Cannot assign requested address *) + ENETDOWN* = 100; (* Network is down *) + ENETUNREACH* = 101; (* Network is unreachable *) + ENETRESET* = 102; (* Network dropped connection because of reset *) + ECONNABORTED* = 103; (* Software caused connection abort *) + ECONNRESET* = 104; (* Connection reset by peer *) + ENOBUFS* = 105; (* No buffer space available *) + EISCONN* = 106; (* Transport endpoint is already connected *) + ENOTCONN* = 107; (* Transport endpoint is not connected *) + ESHUTDOWN* = 108; (* Cannot send after transport endpoint shutdown *) + ETOOMANYREFS* = 109; (* Too many references: cannot splice *) + ETIMEDOUT* = 110; (* Connection timed out *) + ECONNREFUSED* = 111; (* Connection refused *) + EHOSTDOWN* = 112; (* Host is down *) + EHOSTUNREACH* = 113; (* No route to host *) + EALREADY* = 114; (* Operation already in progress *) + EINPROGRESS* = 115; (* Operation now in progress *) + ESTALE* = 116; (* Stale NFS file handle *) + EUCLEAN* = 117; (* Structure needs cleaning *) + ENOTNAM* = 118; (* Not a XENIX named type file *) + ENAVAIL* = 119; (* No XENIX semaphores available *) + EISNAM* = 120; (* Is a named type file *) + EREMOTEIO* = 121; (* Remote I/O error *) + EDQUOT* = 122; (* Quota exceeded *) + +CONST sigsetarrlength = 1024 / 8 * SIZE(LONGINT); + + +TYPE +(* bits/sigset.h + _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) + + 1024 / 8*8 = 16 + 1024 / 8*4 = 32 +*) + sigsett* = RECORD + val : ARRAY 16 OF LONGINT (* 32 for 32 bit *) + (*val : ARRAY sigsetarrlength OF LONGINT *) + END; + + JmpBuf* = RECORD + (*bx*, si*, di*, bp*, sp*, pc*: LONGINT;*) + (* bits/setjmp.h sets up longer array in GNU libc *) + (* + # if __WORDSIZE == 64 + typedef long int __jmp_buf[8]; + # else + typedef int __jmp_buf[6]; + # endif + *) + bx*, si*, di*, bp*, sp*, pc*, ki*, ku*: LONGINT; + (* setjmp.h +/* Calling environment, plus possibly a saved signal mask. */ +struct __jmp_buf_tag + { + /* NOTE: The machine-dependent definitions of `__sigsetjmp' + assume that a `jmp_buf' begins with a `__jmp_buf' and that + `__mask_was_saved' follows it. Do not move these members + or add others before it. */ + __jmp_buf __jmpbuf; /* Calling environment. */ + int __mask_was_saved; /* Saved the signal mask? */ + __sigset_t __saved_mask; /* Saved signal mask. */ + }; + + *) + (*maskWasSaved*, savedMask*: LONGINT;*) + maskWasSaved*: INTEGER; + (* + # define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) +typedef struct + { + unsigned long int __val[_SIGSET_NWORDS]; + } __sigset_t; + + *) + savedMask*: sigsett; + END ; + + Status* = RECORD (* struct stat *) + dev* : LONGINT; (* dev_t 8 *) + ino* : LONGINT; (* ino 8 *) + nlink* : LONGINT; + mode* : INTEGER; + uid*, gid*: INTEGER; + pad0* : INTEGER; + rdev* : LONGINT; + size* : LONGINT; + blksize* : LONGINT; + blocks* : LONGINT; + atime* : LONGINT; + atimences* : LONGINT; + mtime* : LONGINT; + mtimensec* : LONGINT; + ctime* : LONGINT; + ctimensec* : LONGINT; + unused0*, unused1*, unused2*: LONGINT; + END ; + +(* from /usr/include/bits/time.h + +struct timeval + { + __time_t tv_sec; /* Seconds. */ //__time_t 8 + __suseconds_t tv_usec; /* Microseconds. */ __suseconds_t 8 + }; + + +*) + + Timeval* = RECORD + sec*, usec*: LONGINT + END ; + + +(* +from man gettimeofday + + struct timezone { + int tz_minuteswest; /* minutes west of Greenwich */ int 4 + int tz_dsttime; /* type of DST correction */ int 4 + }; +*) + + + Timezone* = RECORD + (*minuteswest*, dsttime*: LONGINT*) + minuteswest*, dsttime*: INTEGER + END ; + + Itimerval* = RECORD + interval*, value*: Timeval + END ; + + FdSet* = ARRAY 8 OF SET; + + SigCtxPtr* = POINTER TO SigContext; + SigContext* = RECORD + END ; + + SignalHandler* = PROCEDURE (sig, code: LONGINT; scp: SigCtxPtr); + + Dirent* = RECORD + ino, off: LONGINT; + reclen: INTEGER; + name: ARRAY 256 OF CHAR; + END ; + + Rusage* = RECORD + utime*, stime*: Timeval; + maxrss*, ixrss*, idrss*, isrss*, + minflt*, majflt*, nswap*, inblock*, + oublock*, msgsnd*, msgrcv*, nsignals*, + nvcsw*, nivcsw*: LONGINT + END ; + + Iovec* = RECORD + base*, len*: LONGINT + END ; + + SocketPair* = ARRAY 2 OF LONGINT; + + Pollfd* = RECORD + fd*: LONGINT; + events*, revents*: INTEGER + END ; + + Sockaddr* = RECORD + family*: INTEGER; + port*: INTEGER; + internetAddr*: LONGINT; + pad*: ARRAY 8 OF CHAR; + END ; + + HostEntry* = POINTER [1] TO Hostent; + Hostent* = RECORD + name*, aliases*: LONGINT; + addrtype*, length*: LONGINT; + addrlist*: LONGINT; (*POINTER TO POINTER TO LONGINT, network byte order*) + END; + + Name* = ARRAY OF CHAR; + + PROCEDURE -includeStat() + "#include "; + + PROCEDURE -includeErrno() + "#include "; + + PROCEDURE -err(): LONGINT + "errno"; + + PROCEDURE errno*(): LONGINT; + BEGIN + RETURN err() + END errno; + + PROCEDURE -Exit*(n: LONGINT) + "exit(n)"; + + PROCEDURE -Fork*(): LONGINT + "fork()"; + + PROCEDURE -Wait*(VAR status: LONGINT): LONGINT + "wait(status)"; + + PROCEDURE -Select*(width: LONGINT; VAR readfds, writefds, exceptfds: FdSet; VAR timeout: Timeval): LONGINT + "select(width, readfds, writefds, exceptfds, timeout)"; + + PROCEDURE -Gettimeofday* (VAR tv: Timeval; VAR tz: Timezone) : LONGINT + "gettimeofday(tv, tz)"; + + PROCEDURE -Read* (fd, buf, nbyte: LONGINT): LONGINT + "read(fd, buf, nbyte)"; + + PROCEDURE -ReadBlk* (fd: LONGINT; VAR buf: ARRAY OF SYSTEM.BYTE): LONGINT + "read(fd, buf, buf__len)"; + + PROCEDURE -Write* (fd, buf, nbyte: LONGINT): LONGINT + "write(fd, buf, nbyte)"; + + PROCEDURE -WriteBlk* (fd: LONGINT; VAR buf: ARRAY OF SYSTEM.BYTE): LONGINT + "write(fd, buf, buf__len)"; + + PROCEDURE -Dup*(fd: LONGINT): LONGINT + "dup(fd)"; + + PROCEDURE -Dup2*(fd1, fd2: LONGINT): LONGINT + "dup(fd1, fd2)"; + + PROCEDURE -Pipe*(fds : LONGINT): LONGINT + "pipe(fds)"; + + PROCEDURE -Getpid*(): LONGINT + "getpid()"; + + PROCEDURE -Getuid*(): LONGINT + "getuid()"; + + PROCEDURE -Geteuid*(): LONGINT + "geteuid()"; + + PROCEDURE -Getgid*(): LONGINT + "getgid()"; + + PROCEDURE -Getegid*(): LONGINT + "getegid()"; + + PROCEDURE -Unlink*(name: Name): LONGINT + "unlink(name)"; + + PROCEDURE -Open*(name: Name; flag, mode: SET): LONGINT + "open(name, flag, mode)"; + + PROCEDURE -Close*(fd: LONGINT): LONGINT + "close(fd)"; + + PROCEDURE -stat(name: Name; VAR statbuf: Status): LONGINT + "stat((const char*)name, (struct stat*)statbuf)"; + + PROCEDURE Stat*(name: Name; VAR statbuf: Status): LONGINT; + VAR res: LONGINT; + BEGIN + res := stat(name, statbuf); + (* make the first 4 bytes as unique as possible (used in module Files for caching!) *) + (* don't understand this + INC(statbuf.dev, statbuf.devX); + INC(statbuf.rdev, statbuf.rdevX); *) + RETURN res; + END Stat; + + PROCEDURE -fstat(fd: LONGINT; VAR statbuf: Status): LONGINT + "fstat(fd, (struct stat*)statbuf)"; + + PROCEDURE Fstat*(fd: LONGINT; VAR statbuf: Status): LONGINT; + VAR res: LONGINT; + BEGIN + res := fstat(fd, statbuf); + (* make the first 4 bytes as unique as possible (used in module Files for caching!) *) + (*INC(statbuf.dev, statbuf.devX); + INC(statbuf.rdev, statbuf.rdevX); *) + RETURN res; + END Fstat; + + PROCEDURE -Fchmod*(fd, mode: LONGINT): LONGINT + "fchmod(fd, mode)"; + + PROCEDURE -Chmod*(path: Name; mode: LONGINT): LONGINT + "chmod(path, mode)"; + + PROCEDURE -Lseek*(fd, offset, origin: LONGINT): LONGINT + "lseek(fd, offset, origin)"; + + PROCEDURE -Fsync*(fd: LONGINT): LONGINT + "fsync(fd)"; + + PROCEDURE -Fcntl*(fd, cmd, arg: LONGINT ): LONGINT + "fcntl(fd, cmd, arg)"; + + PROCEDURE -Flock*(fd, operation: LONGINT): LONGINT + "flock(fd, operation)"; + + PROCEDURE -Ftruncate*(fd, length: LONGINT): LONGINT + "ftruncate(fd, length)"; + + PROCEDURE -Readblk*(fd: LONGINT; VAR buf: ARRAY OF SYSTEM.BYTE; len: LONGINT): LONGINT + "read(fd, buf, len)"; + + PROCEDURE -Rename*(old, new: Name): LONGINT + "rename(old, new)"; + + PROCEDURE -Chdir*(path: Name): LONGINT + "chdir(path)"; + + PROCEDURE -Ioctl*(fd, request, arg: LONGINT): LONGINT + "ioctl(fd, request, arg)"; + + PROCEDURE -Kill*(pid, sig: LONGINT): LONGINT + "kill(pid, sig)"; + + PROCEDURE -Sigsetmask*(mask: LONGINT): LONGINT + "sigsetmask(mask)"; + + + (* TCP/IP networking *) + + PROCEDURE -Gethostbyname*(name: Name): HostEntry + "(Unix_HostEntry)gethostbyname(name)"; + + PROCEDURE -Gethostname*(VAR name: Name): LONGINT + "gethostname(name, name__len)"; + + PROCEDURE -Socket*(af, type, protocol: LONGINT): LONGINT + "socket(af, type, protocol)"; + + PROCEDURE -Connect*(socket: LONGINT; name: Sockaddr; namelen: LONGINT): LONGINT + "connect(socket, &(name), namelen)"; + + PROCEDURE -Getsockname*(socket: LONGINT; VAR name: Sockaddr; VAR namelen: LONGINT): LONGINT + "getsockname(socket, name, namelen)"; + + PROCEDURE -Bind*(socket: LONGINT; name: Sockaddr; namelen: LONGINT): LONGINT + "bind(socket, &(name), namelen)"; + + PROCEDURE -Listen*(socket, backlog: LONGINT): LONGINT + "listen(socket, backlog)"; + + PROCEDURE -Accept*(socket: LONGINT; VAR addr: Sockaddr; VAR addrlen: LONGINT): LONGINT + "accept(socket, addr, addrlen)"; + + PROCEDURE -Recv*(socket, bufadr, buflen, flags: LONGINT): LONGINT + "recv(socket, bufadr, buflen, flags)"; + + PROCEDURE -Send*(socket, bufadr, buflen, flags: LONGINT): LONGINT + "send(socket, bufadr, buflen, flags)"; + + PROCEDURE -sys(str: ARRAY OF CHAR): INTEGER (* need this to call external tools like gcc or gas; noch *) + "system(str)"; + + PROCEDURE system*(cmd : ARRAY OF CHAR); + VAR r : INTEGER; + BEGIN + r := sys(cmd); + END system; + + PROCEDURE System*(cmd : ARRAY OF CHAR): INTEGER; + VAR r : INTEGER; + BEGIN + r := sys(cmd); + RETURN r + END System; + + + +END Unix. diff --git a/src/voc/darwin/clang/extTools.Mod b/src/voc/darwin/clang/extTools.Mod new file mode 100644 index 00000000..0dda5009 --- /dev/null +++ b/src/voc/darwin/clang/extTools.Mod @@ -0,0 +1,82 @@ +MODULE extTools; + IMPORT Args, Unix, Strings := oocOakStrings, Console, version; +(* +INCLUDEPATH = -Isrc/lib/system/linux/gnuc/x86_64 +CCOPT = -fPIC $(INCLUDEPATH) -g +CLOBERONOPTS = -fPIC $(INCLUDEPATH) -L. -L/usr/lib -lVishapOberon -static -g +CC = cc $(CCOPT) -c +*) + +VAR incPath0, incPath1, ccOpt, ccString, CFLAGS, tmp0, tmp1 : ARRAY 1023 OF CHAR; + +PROCEDURE Assemble*(m : ARRAY OF CHAR); +VAR cmd : ARRAY 1023 OF CHAR; +cc : ARRAY 1023 OF CHAR; +ext : ARRAY 5 OF CHAR; +BEGIN +COPY (ccString, cc); +Strings.Append (" -c ", cc); +COPY(cc, cmd); +Strings.Append (" ", cmd); +Strings.Append (ccOpt, cmd); +ext := ".c"; +Strings.Append (ext, m); +Strings.Append(m, cmd); +(*Console.Ln; Console.String (cmd); Console.Ln;*) +Unix.system(cmd); +END Assemble; + + +PROCEDURE LinkMain*(VAR m : ARRAY OF CHAR; statically : BOOLEAN; additionalopts : ARRAY OF CHAR); +VAR lpath : ARRAY 1023 OF CHAR; +cc : ARRAY 1023 OF CHAR; +ccopt : ARRAY 1023 OF CHAR; +cmd : ARRAY 1023 OF CHAR; +ext : ARRAY 5 OF CHAR; +BEGIN +(* +gcc -g -o hello hello.c -I $RPATH/src/lib/system/linux/gnuc/x86_64 -I. -I$RPATH -lOberon -L. -L$RPATH -static +*) +cmd := ""; +cc := ""; +ext := ".c"; +COPY(ccString, cc); +COPY (cc, cmd); +Strings.Append(" ", cmd); +Strings.Append(m, cmd); +Strings.Append(ext, cmd); +Strings.Append(additionalopts, cmd); +IF statically THEN Strings.Append(" -static ", cmd) END; +Strings.Append(" -o ", cmd); +Strings.Append(m, cmd); +Strings.Append(" ", cmd); +Strings.Append(ccOpt, cmd); +Console.Ln; Console.String(cmd); Console.Ln; (* may be it's feasible to add debug mode later *) +Unix.system(cmd); +END LinkMain; + +BEGIN + +incPath0 := "src/lib/system/darwin/clang"; +incPath1 := "lib/voc/obj "; +ccOpt := " -fPIC -g -I "; +COPY (version.prefix, tmp1); +Strings.Append("/", tmp1); +Strings.Append(incPath0, tmp1); +Strings.Append("/", tmp1); +Strings.Append(version.arch, tmp1); +Strings.Append(" -I ", tmp1); +Strings.Append(version.prefix, tmp1); +Strings.Append("/", tmp1); +Strings.Append(incPath1, tmp1); +Strings.Append(tmp1, ccOpt); +Strings.Append ("-lVishapOberon -L. -L", ccOpt); +Strings.Append (version.prefix, ccOpt); +Strings.Append ("/lib ", ccOpt); +Args.GetEnv("CFLAGS", CFLAGS); +Strings.Append (CFLAGS, ccOpt); +Strings.Append (" ", ccOpt); +ccString := "cc "; +(*Strings.Append (ccOpt, ccString);*) + +END extTools. diff --git a/src/voc/gnuc/x86_64/architecture.Mod b/src/voc/darwin/clang/x86_64/architecture.Mod similarity index 100% rename from src/voc/gnuc/x86_64/architecture.Mod rename to src/voc/darwin/clang/x86_64/architecture.Mod diff --git a/src/voc/gnuc/armv6j/architecture.Mod b/src/voc/linux/gnuc/armv6j/architecture.Mod similarity index 100% rename from src/voc/gnuc/armv6j/architecture.Mod rename to src/voc/linux/gnuc/armv6j/architecture.Mod diff --git a/src/voc/gnuc/armv6j_hardfp/architecture.Mod b/src/voc/linux/gnuc/armv6j_hardfp/architecture.Mod similarity index 100% rename from src/voc/gnuc/armv6j_hardfp/architecture.Mod rename to src/voc/linux/gnuc/armv6j_hardfp/architecture.Mod diff --git a/src/voc/gnuc/armv7a_hardfp/architecture.Mod b/src/voc/linux/gnuc/armv7a_hardfp/architecture.Mod similarity index 100% rename from src/voc/gnuc/armv7a_hardfp/architecture.Mod rename to src/voc/linux/gnuc/armv7a_hardfp/architecture.Mod diff --git a/src/voc/gnuc/extTools.Mod b/src/voc/linux/gnuc/extTools.Mod similarity index 100% rename from src/voc/gnuc/extTools.Mod rename to src/voc/linux/gnuc/extTools.Mod diff --git a/src/voc/gnuc/powerpc/architecture.Mod b/src/voc/linux/gnuc/powerpc/architecture.Mod similarity index 100% rename from src/voc/gnuc/powerpc/architecture.Mod rename to src/voc/linux/gnuc/powerpc/architecture.Mod diff --git a/src/voc/gnuc/x86/architecture.Mod b/src/voc/linux/gnuc/x86/architecture.Mod similarity index 100% rename from src/voc/gnuc/x86/architecture.Mod rename to src/voc/linux/gnuc/x86/architecture.Mod diff --git a/src/voc/linux/gnuc/x86_64/architecture.Mod b/src/voc/linux/gnuc/x86_64/architecture.Mod new file mode 100644 index 00000000..1f95d2fd --- /dev/null +++ b/src/voc/linux/gnuc/x86_64/architecture.Mod @@ -0,0 +1,4 @@ +MODULE architecture; +CONST arch* = "x86_64"; + +END architecture. diff --git a/voc.REMOVED.git-id b/voc.REMOVED.git-id index 352ab1c1..29861a23 100644 --- a/voc.REMOVED.git-id +++ b/voc.REMOVED.git-id @@ -1 +1 @@ -886580f27024cc2cb8bf3dfc36d84aad5dbd2001 \ No newline at end of file +0ecd26e0612983841edde8ff777be843fe676905 \ No newline at end of file diff --git a/vocparam b/vocparam index c6b6f164bc28fdcda8847ba4507709c5daef047b..441298eb681a34de18175ea48cb9a4cb340d43e3 100755 GIT binary patch literal 9724 zcmeHNZEPGz8J>${YPm`70;%MPueGsLJ59WHY9*$rORn}RYw#C$7d3#Y;cjowck21> zx_1{l0gH2*AYa@QmMBtw0JRW8se~&3fT|P}Vp@eL0uhmd3IfNK2sl+MjQHb50rR}O zv*-2NDStuQSDugOeV=(}=AGHO^UnR|?tA}!fH7YUW2J43u>jJ1Eo0}Igc@UekyIqk zM}o(dFDjv7(ry&rMz|#+KdtD1^N4aXvXNr8r;eQ>Fvi9(9QGk$Z1!oDddEv!z?wC)1b<=Y7FQ&_Tg|FsEqm6IV(5g#6lT z&3Pux^QXsR*)-1;jQjet-O$E&j*HgQ89UBLvyN@I$zK5NX?%4^B!u1m?6HxZ^K|rs z#@8VHp)iH8)1UoZ2s8X?*|D)~W*u*gUrG4;qfJ0bK5Q{#YXg+)&;3CE(C3uCe*2k~ zTEpSYQnkFK?cc+O&!W^!a|NoI2TY)qP&EXV%~ssvXLp7H3BEp@@@6GcXMi` z=Ue!^Q!o3(Ow>y4Z}AzUmKW5i1yZVQ3+hbm0O@9+R#w&W^?A1ZD7C8e#9fVde$#Ax zU7h-c)%bc@xdHlii{9s^KaMW|aOkA}3iRLM?1uLilWu?RsFj_ARqv!!+u;2g=s&RN zwI-d8ZxYb=Rq3QO>2H8OZqaX3aoItCaWnl2=&D6uFzJrLtfFp>y*ikmfxg$Gf7k8( zr7FETm{&o62XVqwzviZ2*i8Qs=s&gSUvkqwwV6H-`tugO8+3Dt)z@fQNXp6&VNYB3 zeXzeqTJ@L83Niebiz{X25*VK)#!uFSs6YP<(ICVWVuJ9wg?kh(?#JM)PK)7qB~Drf6Vy9#vNT=jkh@`rI42r(a*5Mm6F8WFKSZ zelJgAgvDiyd_)_L;*m(z!ANMh*QSM(-r-Q6jg+Cj{`GO_hLJTMlh8qE=y+?#0ckLJ zvK6SUO=|3s4tCZv!Qea`3H1(+v_=m|u{KE>PZg39{=?KWaXl_Y^I9q;Y00Re6?7wi zRLUo_#dKVX=~6M1PmN}Dgn$-9zv0WSjo>k-)9)DWUE z?moupDmJcfH?Txyq=tyc?cYra`#G`LzOqNy~4 zUV=V{i|axH2;$?o$FJvONv==mTCt$xjyy{49vh3MGVF;M>(!W=V1p?ZO0%bOEM>4v zp1t6s7acWh_90}YMr3Cxo2KkyBks~tj2jGZd*?_qPuUg9ZZ!IIjg7OK4tCzx$u9T~ zv2Wl<4sVfdiLz1?vTIGg6#EY8n`n%X*@sr}vX!yBi#w=%9Eo0oknDku%2p)O(JL1k z+=Gs*J3zRFkReVLAqP=9G2I0wYJ4oU_HdXe=AvaJ;Hb8mPg@5nDe{kVHyYSmC z{1+Ggn+w0^!vA#P_g(m&3)B4Kl-Yv%E+jiX^{D%O0nRC2*g>O9Io|aq`dbY8q8G zBCslOSm2WaKLu?4fecBx@K;^dI!viN52Een-}r&Xr`#i z6WxdT;VwD+g>Xa}Y)>*CV_aiA!8lHyG$s7FBu9r3H*~GT%sb8e5aW6Lfl}>&Z*l%@ b>ChbZe|NinV4KJ87Du>!25&mWu|EF+Rzd=f literal 11001 zcmeHNeQX@Zb)Vhikw=j{9={}7cH)&KrBo^&DTQWfsj~J+o_LIDk*26bPAo5v$0KLY1j39MCLBqdUu1aJ@pLQ)_I`T-#@j6yaPs&XXjN> zBqC13{@(1o<#KgI-9L){;~{t7d%yQFZ)Rs_XXo~r=)gW*(*ze?JSs@KP-aTVJ`2%u zpA;3=CDsX3Y!RD8IS@Y%Q)-CX9Mg8)Rxk}HJ0EBnj;zvWbrTZFCK2&~Jg-pBkSNu+ zQcT6#^p$nC$W#bJ0^~=zwg;sMIw~2aA z;-1k>NF@g0q1wk( ziQ+_4SyHro(AtFH`r4*bW1Sss)8nnvsr2lz)?;0rt(_g=d?vh8_E!iYsgAz=2W4>X zf7Km=E)QLQYB%w!d%@X-^CQX!>plqG2&4KEh7YcRe{2n$>NarPQ!Hz8CX=@Eg?O%D zSpwaWpw@Sa>}(+~vbj{cFd;09aAh1K(r?;Ss z&Al49%JG&T{&tlimbd;D&b1Gk;7Fb#^}7qpC|kclGNthD4Jm(xWUBhzdB{8dy}$VS z)3M^)vAKV}Jv7pPeLfs8MeO>OA6F2$KJPch;&mAQdg2`A5^Lu@-m%b#p^Pe#TS0RybSHPN^3uFYrkAtd)U^V zBrOe}%XD%g@3pl#($WonnNE&&ldVmZ*7|JiQ0d6;{Flu6(bB%xZEbsL?e}c$M@nl? z+uAD9-rH9*q`e+pkR5n7N*AQ|@@we5cY$0&>qPNKP6JJ4OfZ}l_YyrF#Wns18p*NZ zPl{J!Z~Pme#Y?0szOn6U@us7FgS59|KsMcu%`Gh#s$*yOd=>R9zWKZ5{zy~9;3nMb}>By%d2O}c~<)Dugf7f69 zO@Hwxi$gFOIJ@WJasv@t!yx_J{-giOvais*<6j1f|2a_nWpD9k%Oh{$7QU(tJo5hR z&+RcDc`9-^@^r+ydUfSq!Yy>$k3f`o*kq*gB5?b)tK4a3C7l&*FjD;P6QQ{t=eJM*E_U^}yi%K9}}D)G-{6Mh4i4 ztlaX@h!bFFc(8}fhNC@$!@Vp;_xJX%aj~r@&v~8QQ zX^+vmLmI8vS=ND(;hx8bTH@P{v2BKNG*y@~lE(_k^muaIi02cjl#!T<=MsfvF2CEz zPi1DO$BnV1F`Le(Cez7ril^Q0+uaUI&%0NDi)#n^+WX7P1<)<%&aZ-Y;Wl~&^edoc z7zd5usc4@Y7TU3pc7Jt6;2iKRz-UdCMH~}U1Vj6R&7Z8TIvO}3_HNw$@lR}dh+wkm z#W8?-o+2O;44u+@YRdIbBa$75l6wyNM%+V={^>cN?>$Z0kQ>D~gQI|9`WXVcgP||$ z-NEKB`MQI~*|P3n%Nc(p*nX-!66~6*=na}W7yyxA3k+Zghwfm2+Vf)^rw|9t_^^D~ z10VLl|6>o(gN+KOU`s19<9x63y0ls;%raAQHA)^2*m9YYFY31Zo8K>I2)e0ce&@^j zY(2m0EGhju*ixZ+hf0-AM6;qziZa1E)h=pXOH&z@m`$8{l-9>oHrPZgsrngTP%^E2 zsBnG!zQQu5XW5>4WsiQ7vSz!9+e&^>=@tBcPWV06ThS49olYtGbw#~)eLX$9jF!G+ zx{%2j9pTRKCyeZlaOZX-n@YB}haV2_+-AeVw%j-CSa#T&4zV3U?f$oWaolgpYO;J$ zJe59#!J_Q7S?DzClFuxlvSJ}qLueaP>!#%GCy9w zgdXt!v8~$=;@9=+bD-skDWO+)l47$cKj!cnS=4-=EoxjAHIvd>S_J7SCSwF$7Qx5Z zBB0maVT)RqMeUQ)qD=ThdZ-!0MaBrZEaV8*HwVa~ZWmkBxh(2hWeivZ^!lgRqTXd8 zQGIh6`lXCuglc$}4I5mB5~a%YK-u%QVdLMiVWZ2iv4iUj=}okIAoFf=Sv0)~ltNVy z6A+aFGV^Qt`d_j6dSy=eY-qwYmq9kTf^48HW#c1y^T){oS4J|pN@5*dfL%bVs0U0@ zP1A(-9Cay=6?%c>La#_Q$AnfSMn8Y3=D5QT1ye%%;wUWj^HagZ)DB28jq{U`b~@4o znn8H2)386R97=rU{h1E}> zQhohfHhO~5KP7Yn4G-9wDrS9_&}JGQKrbj;q197NuXnRqWW;tnV{7xtxp@JQ&#M-d7x7v1EaS2r+`FganZpCS?=ai7v*ya+HPyhAI}$(Gi{UU*+d)m+pNwGK`PAH)A_a|nM5|8 zi_Zvg;K>6c(Z|D6v>(K17()u7MWxR7i?66@m*xV$!c3u+Pn6G{f3r;Yop~nweBg(r z{^or3`c}=h*7wwxU!HqRdItWc{1v?d+2YkFS1@SW<##3_H@xo6&`A|ZO-yIv1u>mT zPfAyQYm)C&!Vc+R6g!tpw9{z^op#dhqR}ItOC5HQRmS6)*|F)QXq(E+B-_%N#1z#` z2la$3=pk8jaWud@uV8?Mn5WA^MHfdx%*(ebi5=xdgS4R&>kcb~;xj+Gf`ypR$ctmg zXP%#$Lw6c zpG)HWUgPz*wL!%r)N)HY^=^TH456BXT(rXjv z?CrnDprJK4=g;fx7nMIP45)DaY{&EvbhL(Nnb-02%HJSo6mR}EDg-S=s4v-n!DmX< zg7W8fa{b=+|Cz_1-$Ry^e@sTR^QU($um9(PQJ+wLRQNs2R2P`*x3#N(DH8zuR#?a~QAxiynXaO@oT5I_`h+e;Ky!`sv3FDnrWOTc1~+hb@gg&Y#~q z`FGU|6dZ-eC;M|=KZMR*KmV?^R4d)?=`Z$Y`Xi6O;Ag0+pxqARoY{}*n;!pm<=?LS zIZqD2ek{KQhA?iwsr*glXsGtHy}^v4Z-bJFH&6EO_1JSbrni*8$4vZ%s^1%z{n-Au zYxuvY{6FRy@LvCN0A7q@|FqGr;b%5+&R*NbHT)W3vz+j(-mZBO@? zyRbjgKUDs18{)%iV`$!^U_XZI!0@$ajOZ_wf2YU6Bg)))?s5CKJY-8^ZD^SWE< z6HWO3rIh`8=lg=y_88PWzq%AY?2huh>4GsD?h`y8uEsaIMThqZT20?ue9kI#wazC# zvKmm5PkeL@{J}MF;~t#ulQQw1vmfp@D23B~Sqg6eu4A11lV|*_Wl#5csW@R3hhNwE zjS_H4`#&Ous2AHk*Ea@KD{NP+3ePKF1aFiW546szCqqy9 zF626llTkIUcrN^&!g<$;=e@rM9zuNYxca`b&#E};@g-<|RA1tLyrk?;D0|NT2MWKS z@Caloui~IQZ+qfj1750KKUMZZZDw&kv|gyw8w7o!;x0djP%2I(5~KEd@2~a14R-*= zZv|ebH;XQnC!6dfT&&DL{8*0wugCc0eaz1&hbMrC=(?!J}l$kCwPC7 zucM`K-g@Ng7+1LA=^xrxq2!%Ta)AGfK&dwA1i;mMzTkhz3GYn=fDkajEkOA z_Pn9V*Xw!U^`)K*wC#ZnD_w!kcl9I$(liyyb}(SWdepWGjL zyuSy#WG;>TicDC21B2a>0c&vIK75g2jYPT!q85KcmdMXqa=V50NbE1lHef_ zOyq=>l-np-VcYYT*-kN`K1*Beg1uqO>Kz#zw(z+GzGS=So3+*EmgP#o^AQ|$`HVFc zPmg2U&FUXSn&YXoHJitG5GpJ+gBp%3sWoTa0Zx`MX#fBK diff --git a/vocstatic.REMOVED.git-id b/vocstatic.REMOVED.git-id index 2973060c..29861a23 100644 --- a/vocstatic.REMOVED.git-id +++ b/vocstatic.REMOVED.git-id @@ -1 +1 @@ -6f1a5b8457e70e043eab08632b20cf5a4f13f80b \ No newline at end of file +0ecd26e0612983841edde8ff777be843fe676905 \ No newline at end of file diff --git a/vocstatic.linux.gnuc.x86_64.REMOVED.git-id b/vocstatic.linux.gnuc.x86_64.REMOVED.git-id index 2973060c..29861a23 100644 --- a/vocstatic.linux.gnuc.x86_64.REMOVED.git-id +++ b/vocstatic.linux.gnuc.x86_64.REMOVED.git-id @@ -1 +1 @@ -6f1a5b8457e70e043eab08632b20cf5a4f13f80b \ No newline at end of file +0ecd26e0612983841edde8ff777be843fe676905 \ No newline at end of file