| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- MODULE TARGETS;
- IMPORT UTILS IN "./utils/UTILS.ob07";
- CONST
- MSP430* = 0;
- Win32C* = 1;
- Win32GUI* = 2;
- Win32DLL* = 3;
- KolibriOS* = 4;
- KolibriOSDLL* = 5;
- Win64C* = 6;
- Win64GUI* = 7;
- Win64DLL* = 8;
- Linux32* = 9;
- Linux32SO* = 10;
- Linux64* = 11;
- Linux64SO* = 12;
- STM32CM3* = 13;
- RVM32I* = 14;
- RVM64I* = 15;
- KolibriOSKer* = 16;
- KolibriOSDrv* = 17;
- cpuX86* = 0; cpuAMD64* = 1; cpuMSP430* = 2; cpuTHUMB* = 3;
- cpuRVM32I* = 4; cpuRVM64I* = 5;
- osNONE* = 0; osWIN32* = 1; osWIN64* = 2;
- osLINUX32* = 3; osLINUX64* = 4; osKOS* = 5;
- noDISPOSE = {MSP430, STM32CM3, RVM32I, RVM64I};
- noRTL = {MSP430};
- libRVM32I = "RVMxI" + UTILS.slash + "32";
- libRVM64I = "RVMxI" + UTILS.slash + "64";
- TYPE
- STRING = ARRAY 32 OF CHAR;
- TARGET = RECORD
- target, CPU, OS, RealSize: INTEGER;
- ComLinePar*, LibDir, FileExt: STRING
- END;
- VAR
- Targets*: ARRAY 18 OF TARGET;
- CPUs: ARRAY 6 OF
- RECORD
- BitDepth, InstrSize: INTEGER;
- LittleEndian: BOOLEAN
- END;
- target*, CPU*, BitDepth*, OS*, RealSize*, WordSize*, AdrSize*, InstrSize*: INTEGER;
- ComLinePar*, LibDir*, FileExt*: STRING;
- Import*, Dispose*, RTL*, Dll*, LittleEndian*, WinLin*: BOOLEAN;
- PROCEDURE Enter (idx, CPU, RealSize, OS: INTEGER; ComLinePar, LibDir, FileExt: STRING);
- BEGIN
- Targets[idx].target := idx;
- Targets[idx].CPU := CPU;
- Targets[idx].RealSize := RealSize;
- Targets[idx].OS := OS;
- Targets[idx].ComLinePar := ComLinePar;
- Targets[idx].LibDir := LibDir;
- Targets[idx].FileExt := FileExt;
- END Enter;
- PROCEDURE Select* (ComLineParam: ARRAY OF CHAR): BOOLEAN;
- VAR
- i: INTEGER;
- res: BOOLEAN;
- BEGIN
- i := 0;
- WHILE (i < LEN(Targets)) & (Targets[i].ComLinePar # ComLineParam) DO
- INC(i)
- END;
- res := i < LEN(Targets);
- IF res THEN
- target := Targets[i].target;
- CPU := Targets[i].CPU;
- BitDepth := CPUs[CPU].BitDepth;
- InstrSize := CPUs[CPU].InstrSize;
- LittleEndian := CPUs[CPU].LittleEndian;
- RealSize := Targets[i].RealSize;
- OS := Targets[i].OS;
- ComLinePar := Targets[i].ComLinePar;
- LibDir := Targets[i].LibDir;
- FileExt := Targets[i].FileExt;
- Import := (OS IN {osWIN32, osWIN64, osKOS}) & (target # KolibriOSKer);
- Dispose := ~(target IN noDISPOSE);
- RTL := ~(target IN noRTL);
- Dll := target IN {Linux32SO, Linux64SO, Win32DLL, Win64DLL, KolibriOSDLL, KolibriOSDrv};
- WinLin := OS IN {osWIN32, osLINUX32, osWIN64, osLINUX64};
- WordSize := BitDepth DIV 8;
- AdrSize := WordSize
- END
- RETURN res
- END Select;
- PROCEDURE EnterCPU (cpu, BitDepth, InstrSize: INTEGER; LittleEndian: BOOLEAN);
- BEGIN
- CPUs[cpu].BitDepth := BitDepth;
- CPUs[cpu].InstrSize := InstrSize;
- CPUs[cpu].LittleEndian := LittleEndian
- END EnterCPU;
- BEGIN
- EnterCPU(cpuX86, 32, 1, TRUE);
- EnterCPU(cpuAMD64, 64, 1, TRUE);
- EnterCPU(cpuMSP430, 16, 2, TRUE);
- EnterCPU(cpuTHUMB, 32, 2, TRUE);
- EnterCPU(cpuRVM32I, 32, 4, TRUE);
- EnterCPU(cpuRVM64I, 64, 8, TRUE);
- Enter( MSP430, cpuMSP430, 0, osNONE, "msp430", "MSP430", ".hex");
- Enter( Win32C, cpuX86, 8, osWIN32, "win32con", "Windows", ".exe");
- Enter( Win32GUI, cpuX86, 8, osWIN32, "win32gui", "Windows", ".exe");
- Enter( Win32DLL, cpuX86, 8, osWIN32, "win32dll", "Windows", ".dll");
- Enter( KolibriOS, cpuX86, 8, osKOS, "kosexe", "KolibriOS", "");
- Enter( KolibriOSDLL, cpuX86, 8, osKOS, "kosdll", "KolibriOS", ".obj");
- Enter( Win64C, cpuAMD64, 8, osWIN64, "win64con", "Windows", ".exe");
- Enter( Win64GUI, cpuAMD64, 8, osWIN64, "win64gui", "Windows", ".exe");
- Enter( Win64DLL, cpuAMD64, 8, osWIN64, "win64dll", "Windows", ".dll");
- Enter( Linux32, cpuX86, 8, osLINUX32, "linux32exe", "Linux", "");
- Enter( Linux32SO, cpuX86, 8, osLINUX32, "linux32so", "Linux", ".so");
- Enter( Linux64, cpuAMD64, 8, osLINUX64, "linux64exe", "Linux", "");
- Enter( Linux64SO, cpuAMD64, 8, osLINUX64, "linux64so", "Linux", ".so");
- Enter( STM32CM3, cpuTHUMB, 4, osNONE, "stm32cm3", "STM32CM3", ".hex");
- Enter( RVM32I, cpuRVM32I, 4, osNONE, "rvm32i", libRVM32I, ".bin");
- Enter( RVM64I, cpuRVM64I, 8, osNONE, "rvm64i", libRVM64I, ".bin");
- Enter( KolibriOSKer, cpuX86, 8, osKOS, "kosker", "KOSKER", ".bin");
- Enter( KolibriOSDrv, cpuX86, 8, osKOS, "kosdrv", "KOSDRV", ".dll");
- END TARGETS.
|