mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2026-10-24 08:02:27 +00:00
getPreloadFSName() now internally tries the exact platform id, then the root-base id (fix for atari8 headers)
This commit is contained in:
1 parent
07ef5e5cae
commit
2f39beeb38
4 files changed
+20
-7
No files matched your search
@@ -284,7 +284,7 @@ export const TOOL_META: { [id: string]: ToolMeta } = {
|
||||
|
||||
ca65: {
|
||||
id: 'ca65', name: 'ca65', kind: 'assembler', arch: '6502',
|
||||
extensions: ['.s', '.ca65'],
|
||||
extensions: ['.s', '.ca65', '.inc'],
|
||||
includeDirs: ['/include', '/asminc'],
|
||||
editorStyle: '6502',
|
||||
helpURL: 'https://cc65.github.io/doc/ca65.html',
|
||||
@@ -698,8 +698,16 @@ export function getPreloadFSName(tool: string, platform?: string): string | unde
|
||||
if (!meta) return undefined;
|
||||
if (meta.platforms) {
|
||||
if (platform) {
|
||||
// Try the exact id, then the root base id so suffixed platform ids
|
||||
// (e.g. 'atari8-800', 'atari8-5200.xlmame') resolve to the shared
|
||||
// filesystem registered under the root ('atari8' -> '65-atari8').
|
||||
let p = meta.platforms[platform];
|
||||
if (p && p.preloadFS) return p.preloadFS;
|
||||
let base = getRootBasePlatform(platform);
|
||||
if (base && base !== platform) {
|
||||
let b = meta.platforms[base];
|
||||
if (b && b.preloadFS) return b.preloadFS;
|
||||
}
|
||||
}
|
||||
let d = meta.platforms['default'];
|
||||
if (d && d.preloadFS) return d.preloadFS;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import type { WorkerResult, WorkerMessage } from "../common/workertypes";
|
||||
import { getBasePlatform, getRootBasePlatform } from "../common/util";
|
||||
import { getPreloadFSName } from "../common/toolmeta";
|
||||
import { store, builder } from "./builder";
|
||||
import { emglobal, fsMeta, loadFilesystem, listSharedFiles, readSharedFile, ensureFilesystem, readWasiSharedFile, listWasiSharedFiles, ensureWasiFilesystem } from "./wasmutils";
|
||||
@@ -136,8 +135,7 @@ export function setupNodeEnvironment() {
|
||||
export async function handleMessage(data: WorkerMessage): Promise<WorkerResult> {
|
||||
// preload file system
|
||||
if (data.preload) {
|
||||
var fsName = getPreloadFSName(data.preload, data.platform && getBasePlatform(data.platform))
|
||||
|| getPreloadFSName(data.preload, data.platform && getRootBasePlatform(data.platform));
|
||||
var fsName = getPreloadFSName(data.preload, data.platform);
|
||||
if (fsName && !fsMeta[fsName])
|
||||
loadFilesystem(fsName);
|
||||
return;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
|
||||
import type { WorkerResult, WorkerMessage, WorkerError, SourceLine } from "../common/workertypes";
|
||||
import { getBasePlatform, getRootBasePlatform } from "../common/util";
|
||||
import { getPreloadFSName } from "../common/toolmeta";
|
||||
import { store, builder, errorResult, getWorkFileAsString } from "./builder";
|
||||
import { emglobal, fsMeta, loadFilesystem, listSharedFiles, readSharedFile, ensureFilesystem, readWasiSharedFile, listWasiSharedFiles, ensureWasiFilesystem } from "./wasmutils";
|
||||
@@ -37,8 +36,7 @@ export function setupRequireFunction() {
|
||||
async function handleMessage(data: WorkerMessage): Promise<WorkerResult> {
|
||||
// preload file system
|
||||
if (data.preload) {
|
||||
var fs = getPreloadFSName(data.preload, data.platform && getBasePlatform(data.platform))
|
||||
|| getPreloadFSName(data.preload, data.platform && getRootBasePlatform(data.platform));
|
||||
var fs = getPreloadFSName(data.preload, data.platform);
|
||||
if (fs && !fsMeta[fs])
|
||||
loadFilesystem(fs);
|
||||
return;
|
||||
|
||||
@@ -53,6 +53,15 @@ describe('Tool metadata registry', function () {
|
||||
assert.strictEqual(getPreloadFSName('dasm'), undefined);
|
||||
});
|
||||
|
||||
it('getPreloadFSName resolves suffixed platform ids to their root base', function () {
|
||||
// atari8 runs as 'atari8-800' / 'atari8-5200' / *.xlmame variants
|
||||
assert.strictEqual(getPreloadFSName('cc65', 'atari8'), '65-atari8');
|
||||
assert.strictEqual(getPreloadFSName('cc65', 'atari8-800'), '65-atari8');
|
||||
assert.strictEqual(getPreloadFSName('cc65', 'atari8-800.xlmame'), '65-atari8');
|
||||
assert.strictEqual(getPreloadFSName('cc65', 'atari8-5200'), '65-atari8');
|
||||
assert.strictEqual(getSharedFileSystemName('cc65', 'atari8-800'), '65-atari8');
|
||||
});
|
||||
|
||||
it('getSkeletonName defaults to the tool id', function () {
|
||||
assert.strictEqual(getSkeletonName('dasm'), 'dasm');
|
||||
assert.strictEqual(getSkeletonName('remote:llvm-mos'), 'llvm-mos');
|
||||
|
||||
Reference in new issue
Block a user