Skip to content

Commit 4060f62

Browse files
committed
Add a Kompjuta exporter
1 parent af3a21e commit 4060f62

10 files changed

Lines changed: 74 additions & 5 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { Exporter } from 'kmake/Exporters/Exporter';
2+
import { Project } from 'kmake/Project';
3+
import { NinjaExporter } from 'kmake/Exporters/NinjaExporter';
4+
import { MakeExporter } from 'kmake/Exporters/MakeExporter';
5+
import { CLionExporter } from 'kmake/Exporters/CLionExporter';
6+
import { CompilerCommandsExporter } from 'kmake/Exporters/CompileCommandsExporter';
7+
8+
export class KompjutaExporter extends Exporter {
9+
ninja: NinjaExporter;
10+
make: MakeExporter;
11+
clion: CLionExporter;
12+
compileCommands: CompilerCommandsExporter;
13+
14+
constructor(options: any) {
15+
super(options);
16+
17+
let flags = '--target=riscv64-unknown-elf -march=rv64im -mabi=lp64 -Os -ffreestanding -fno-builtin -nostdlib -nostartfiles -mno-relax "-Wl,--no-relax"';
18+
19+
let outputExtension = '.elf';
20+
21+
this.ninja = new NinjaExporter(options, 'clang', 'clang++', flags, flags, flags, outputExtension);
22+
this.make = new MakeExporter(options, 'clang', 'clang++', flags, flags, flags, outputExtension);
23+
this.clion = new CLionExporter(options);
24+
this.compileCommands = new CompilerCommandsExporter(options);
25+
}
26+
27+
async exportSolution(project: Project, from: string, to: string, platform: string, vrApi: any, options: any) {
28+
this.ninja.exportSolution(project, from, to, platform, vrApi, options);
29+
this.make.exportSolution(project, from, to, platform, vrApi, options);
30+
this.clion.exportSolution(project, from, to, platform, vrApi, options);
31+
this.compileCommands.exportSolution(project, from, to, platform, vrApi, options);
32+
}
33+
}

kmake/src/Platform.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export interface PlatformType {
1616
PS5: string;
1717
FreeBSD: string;
1818
Wasm: string;
19+
Kompjuta: string;
1920
}
2021

2122
export let Platform: PlatformType = {
@@ -35,5 +36,6 @@ export let Platform: PlatformType = {
3536
XboxSeries: 'xboxseries',
3637
PS5: 'ps5',
3738
FreeBSD: 'freebsd',
38-
Wasm: 'wasm'
39+
Wasm: 'wasm',
40+
Kompjuta: 'kompjuta',
3941
};

kmake/src/main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { JsonExporter } from 'kmake/Exporters/JsonExporter';
2121
import { MesonExporter } from 'kmake/Exporters/MesonExporter';
2222
import { Compiler } from 'kmake/Compiler';
2323
import { Architecture } from 'kmake/Architecture';
24+
import { KompjutaExporter } from './Exporters/KompjutaExporter';
2425

2526
let _global: any = global;
2627
_global.__base = __dirname + '/';
@@ -631,6 +632,7 @@ async function exportKoremakeProject(from: string, to: string, platform: string,
631632
else if (platform === Platform.Wasm) exporter = new WasmExporter(options);
632633
else if (platform === Platform.Linux || platform === Platform.Pi) exporter = new LinuxExporter(options);
633634
else if (platform === Platform.FreeBSD) exporter = new FreeBSDExporter(options);
635+
else if (platform === Platform.Kompjuta) exporter = new KompjutaExporter(options);
634636
else if (platform === Platform.PS4 || platform === Platform.XboxOne || platform === Platform.Switch || platform === Platform.XboxSeries || platform === Platform.PS5 || platform === Platform.Switch2) {
635637
let libsdir = path.join(from.toString(), 'backends');
636638
if (!fs.existsSync(libsdir)) {

lib/kmake/Exporters/KompjutaExporter.js

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/kmake/Exporters/KompjutaExporter.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/kmake/Platform.js

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/kmake/Platform.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/kmake/Project.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/kmake/main.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/kmake/main.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)