Added Pascal

This commit is contained in:
Omar Brikaa 2022-02-25 14:51:26 +02:00
parent 45ee625338
commit 88f2b5bed4
8 changed files with 45 additions and 45 deletions

View File

@ -1,25 +0,0 @@
#!/bin/bash
PREFIX=$(realpath $(dirname $0))
mkdir -p build
cd build
curl -L "https://sourceforge.net/projects/freepascal/files/Linux/3.2.0/fpc-3.2.0-x86_64-linux.tar/download" -o pascal.tar
tar xf pascal.tar --strip-components=1
# FreePascal uses an interactive installer
./install.sh << ANSWERS
$PREFIX
n
n
n
ANSWERS
cd ..
rm -rf build
# A sample config (needed for each "project") is written to /etc
# We'll copy that into the local lib dir (fpc searches there too on compile)
mkdir lib/fpc/etc
cp -r /etc/fp* lib/fpc/etc/

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
# Compile pascal files
fpc -oout -v0 "$@"
chmod +x out

View File

@ -1 +0,0 @@
export PATH=$PWD/bin:$PATH

View File

@ -1,5 +0,0 @@
{
"language": "pascal",
"version": "3.2.0",
"aliases": ["pascal", "freepascal", "pp", "pas"]
}

View File

@ -1,4 +0,0 @@
#!/bin/bash
shift # Filename is only used to compile
./out "$@"

View File

@ -1,5 +0,0 @@
program test;
begin
writeln('OK');
end.

View File

@ -57,4 +57,5 @@ args: {
"dotnet-sdk-fsharp" = import ./dotnet-sdk-fsharp.nix args; "dotnet-sdk-fsharp" = import ./dotnet-sdk-fsharp.nix args;
"dotnet-sdk-fsharp-interactive" = import ./dotnet-sdk-fsharp-interactive.nix args; "dotnet-sdk-fsharp-interactive" = import ./dotnet-sdk-fsharp-interactive.nix args;
"dotnet-sdk-visual-basic" = import ./dotnet-sdk-visual-basic.nix args; "dotnet-sdk-visual-basic" = import ./dotnet-sdk-visual-basic.nix args;
"fpc-pascal" = import ./fpc-pascal.nix args;
} }

44
runtimes/fpc-pascal.nix Normal file
View File

@ -0,0 +1,44 @@
{pkgs, piston, ...}:
let
binutilsPkg = pkgs.binutils;
pkg = pkgs.fpc;
in piston.mkRuntime {
language = "pascal";
version = pkg.version;
runtime = "fpc";
aliases = [
"freepascal"
"pp"
"pas"
];
compile = ''
export PATH="${binutilsPkg}/bin:$PATH"
${pkg}/bin/fpc -oout -v0 "$@"
chmod +x out
'';
run = ''
shift
./out "$@"
'';
tests = [
(piston.mkTest {
files = {
"test.pp" = ''
program test;
begin
writeln(paramStr(1));
end.
'';
};
args = ["OK"];
stdin = "";
packages = [];
main = "test.pp";
})
];
}