Subversion Repositories Kolibri OS

Rev

Rev 7983 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7983 Rev 8097
Line 22... Line 22...
22
    Linux32*      =  9;
22
    Linux32*      =  9;
23
    Linux32SO*    = 10;
23
    Linux32SO*    = 10;
24
    Linux64*      = 11;
24
    Linux64*      = 11;
25
    Linux64SO*    = 12;
25
    Linux64SO*    = 12;
26
    STM32CM3*     = 13;
26
    STM32CM3*     = 13;
-
 
27
    RVM32I*       = 14;
Line 27... Line 28...
27
 
28
 
-
 
29
    cpuX86* = 0; cpuAMD64* = 1; cpuMSP430* = 2; cpuTHUMB* = 3;
Line 28... Line 30...
28
    cpuX86* = 0; cpuAMD64* = 1; cpuMSP430* = 2; cpuTHUMB* = 3;
30
    cpuRVM32I* = 4;
29
 
31
 
Line -... Line 32...
-
 
32
    osNONE*    = 0;  osWIN32*   = 1;  osWIN64* = 2;
-
 
33
    osLINUX32* = 3;  osLINUX64* = 4;  osKOS*   = 5;
-
 
34
 
-
 
35
    noDISPOSE = {MSP430, STM32CM3, RVM32I};
Line 30... Line 36...
30
    osNONE*    = 0;  osWIN32*   = 1;  osWIN64* = 2;
36
 
Line 31... Line 37...
31
    osLINUX32* = 3;  osLINUX64* = 4;  osKOS*   = 5;
37
    noRTL = {MSP430};
Line 32... Line 38...
32
 
38
 
Line 33... Line 39...
33
 
39
 
34
TYPE
40
TYPE
Line 35... Line 41...
35
 
41
 
Line 36... Line 42...
36
    STRING = ARRAY 32 OF CHAR;
42
    STRING = ARRAY 32 OF CHAR;
Line 37... Line 43...
37
 
43
 
-
 
44
    TARGET = RECORD
-
 
45
 
-
 
46
        target, CPU, OS, RealSize: INTEGER;
-
 
47
        ComLinePar*, LibDir, FileExt: STRING
-
 
48
 
-
 
49
    END;
Line 38... Line 50...
38
    TARGET = RECORD
50
 
39
 
51
 
40
        target, CPU, BitDepth, OS, RealSize: INTEGER;
52
VAR
Line 41... Line 53...
41
        ComLinePar*, LibDir, FileExt: STRING
53
 
42
 
54
    Targets*: ARRAY 15 OF TARGET;
43
    END;
55
 
44
 
56
    CPUs: ARRAY 5 OF
45
 
-
 
46
VAR
57
        RECORD
47
 
58
            BitDepth, InstrSize: INTEGER;
48
    Targets*: ARRAY 14 OF TARGET;
59
            LittleEndian: BOOLEAN
49
 
60
        END;
50
    target*, CPU*, BitDepth*, OS*, RealSize*, WordSize*, AdrSize*: INTEGER;
61
 
Line 78... Line 89...
78
 
89
 
79
    res := i < LEN(Targets);
90
    res := i < LEN(Targets);
80
    IF res THEN
91
    IF res THEN
81
        target := Targets[i].target;
92
        target := Targets[i].target;
82
        CPU := Targets[i].CPU;
93
        CPU := Targets[i].CPU;
-
 
94
        BitDepth := CPUs[CPU].BitDepth;
-
 
95
        InstrSize := CPUs[CPU].InstrSize;
83
        BitDepth := Targets[i].BitDepth;
96
        LittleEndian := CPUs[CPU].LittleEndian;
84
        RealSize := Targets[i].RealSize;
97
        RealSize := Targets[i].RealSize;
85
        OS := Targets[i].OS;
98
        OS := Targets[i].OS;
86
        ComLinePar := Targets[i].ComLinePar;
99
        ComLinePar := Targets[i].ComLinePar;
87
        LibDir := Targets[i].LibDir;
100
        LibDir := Targets[i].LibDir;
Line 88... Line 101...
88
        FileExt := Targets[i].FileExt;
101
        FileExt := Targets[i].FileExt;
89
 
102
 
-
 
103
        Import := OS IN {osWIN32, osWIN64, osKOS};
90
        Import := OS IN {osWIN32, osWIN64, osKOS};
104
        Dispose := ~(target IN noDISPOSE);
91
        Dispose := ~(target IN {MSP430, STM32CM3});
105
        RTL := ~(target IN noRTL);
92
        Dll := target IN {Linux32SO, Linux64SO, Win32DLL, Win64DLL, KolibriOSDLL};
106
        Dll := target IN {Linux32SO, Linux64SO, Win32DLL, Win64DLL, KolibriOSDLL};
93
        WordSize := BitDepth DIV 8;
107
        WordSize := BitDepth DIV 8;
Line 94... Line 108...
94
        AdrSize  := WordSize
108
        AdrSize  := WordSize
95
    END
109
    END
Line -... Line 110...
-
 
110
 
-
 
111
    RETURN res
-
 
112
END Select;
-
 
113
 
-
 
114
 
-
 
115
PROCEDURE EnterCPU (cpu, BitDepth, InstrSize: INTEGER; LittleEndian: BOOLEAN);
-
 
116
BEGIN
-
 
117
    CPUs[cpu].BitDepth := BitDepth;
96
 
118
    CPUs[cpu].InstrSize := InstrSize;
-
 
119
    CPUs[cpu].LittleEndian := LittleEndian
-
 
120
END EnterCPU;
-
 
121
 
-
 
122
 
-
 
123
BEGIN
-
 
124
    EnterCPU(cpuX86,    32, 1, TRUE);
97
    RETURN res
125
    EnterCPU(cpuAMD64,  64, 1, TRUE);
98
END Select;
126
    EnterCPU(cpuMSP430, 16, 2, TRUE);
99
 
127
    EnterCPU(cpuTHUMB,  32, 2, TRUE);
100
 
128
    EnterCPU(cpuRVM32I, 32, 4, TRUE);
101
BEGIN
129
 
102
    Enter( MSP430,        cpuMSP430,  16,  0,  osNONE,     "msp430",      "MSP430",     ".hex");
130
    Enter( MSP430,        cpuMSP430,  0,  osNONE,     "msp430",      "MSP430",     ".hex");
103
    Enter( Win32C,        cpuX86,     32,  8,  osWIN32,    "win32con",    "Windows32",  ".exe");
131
    Enter( Win32C,        cpuX86,     8,  osWIN32,    "win32con",    "Windows32",  ".exe");
104
    Enter( Win32GUI,      cpuX86,     32,  8,  osWIN32,    "win32gui",    "Windows32",  ".exe");
132
    Enter( Win32GUI,      cpuX86,     8,  osWIN32,    "win32gui",    "Windows32",  ".exe");
105
    Enter( Win32DLL,      cpuX86,     32,  8,  osWIN32,    "win32dll",    "Windows32",  ".dll");
133
    Enter( Win32DLL,      cpuX86,     8,  osWIN32,    "win32dll",    "Windows32",  ".dll");
106
    Enter( KolibriOS,     cpuX86,     32,  8,  osKOS,      "kosexe",      "KolibriOS",  "");
134
    Enter( KolibriOS,     cpuX86,     8,  osKOS,      "kosexe",      "KolibriOS",  "");
107
    Enter( KolibriOSDLL,  cpuX86,     32,  8,  osKOS,      "kosdll",      "KolibriOS",  ".obj");
135
    Enter( KolibriOSDLL,  cpuX86,     8,  osKOS,      "kosdll",      "KolibriOS",  ".obj");
108
    Enter( Win64C,        cpuAMD64,   64,  8,  osWIN64,    "win64con",    "Windows64",  ".exe");
136
    Enter( Win64C,        cpuAMD64,   8,  osWIN64,    "win64con",    "Windows64",  ".exe");
109
    Enter( Win64GUI,      cpuAMD64,   64,  8,  osWIN64,    "win64gui",    "Windows64",  ".exe");
137
    Enter( Win64GUI,      cpuAMD64,   8,  osWIN64,    "win64gui",    "Windows64",  ".exe");
110
    Enter( Win64DLL,      cpuAMD64,   64,  8,  osWIN64,    "win64dll",    "Windows64",  ".dll");
138
    Enter( Win64DLL,      cpuAMD64,   8,  osWIN64,    "win64dll",    "Windows64",  ".dll");
-
 
139
    Enter( Linux32,       cpuX86,     8,  osLINUX32,  "linux32exe",  "Linux32",    "");
111
    Enter( Linux32,       cpuX86,     32,  8,  osLINUX32,  "linux32exe",  "Linux32",    "");
140
    Enter( Linux32SO,     cpuX86,     8,  osLINUX32,  "linux32so",   "Linux32",    ".so");
112
    Enter( Linux32SO,     cpuX86,     32,  8,  osLINUX32,  "linux32so",   "Linux32",    ".so");
141
    Enter( Linux64,       cpuAMD64,   8,  osLINUX64,  "linux64exe",  "Linux64",    "");