tinyscheme: fix the build on macOS

This commit is contained in:
Rahul Butani 2022-07-18 15:13:20 -05:00
parent 17fb7518ff
commit 8f0ec82696
No known key found for this signature in database
GPG key ID: 1C7CE491479FA273
3 changed files with 47 additions and 2 deletions

View file

@ -0,0 +1,24 @@
diff --git a/scheme.c b/scheme.c
index 6186ef0..5a43592 100644
--- a/scheme.c
+++ b/scheme.c
@@ -4949,19 +4949,7 @@ pointer scheme_eval(scheme *sc, pointer obj)
#if STANDALONE
-#if defined(__APPLE__) && !defined (OSX)
-int main()
-{
- extern MacTS_main(int argc, char **argv);
- char** argv;
- int argc = ccommand(&argv);
- MacTS_main(argc,argv);
- return 0;
-}
-int MacTS_main(int argc, char **argv) {
-#else
int main(int argc, char **argv) {
-#endif
scheme sc;
FILE *fin;
char *file_name=InitFile;

View file

@ -0,0 +1,13 @@
diff --git a/makefile b/makefile
index 4c111a1..8d9e02e 100644
--- a/makefile
+++ b/makefile
@@ -21,7 +21,7 @@
CC := $(CC) -fpic -pedantic
DEBUG=-g -Wall -Wno-char-subscripts -O
Osuf=o
-SOsuf=so
+SOsuf=dylib
LIBsuf=a
EXE_EXT=
LIBPREFIX=lib

View file

@ -13,9 +13,19 @@ stdenv.mkDerivation rec {
prePatch = "dos2unix makefile";
patches = [
# The alternate macOS main makes use of `ccommand` which seems to be
# `MetroWerks CodeWarrier` specific:
# https://ptgmedia.pearsoncmg.com/imprint_downloads/informit/downloads/9780201703535/macfix.html
#
# In any case, this is not needed to build on macOS.
./01-remove-macOS-main.patch
# We want to have the makefile pick up $CC, etc. so that we don't have
# to unnecessarily tie this package to the GCC stdenv.
./02-use-toolchain-env-vars.patch
] ++ lib.optionals stdenv.targetPlatform.isDarwin [
# On macOS the library suffix is .dylib:
./03-macOS-SOsuf.patch
];
postPatch = ''
substituteInPlace scheme.c --replace "init.scm" "$out/lib/init.scm"
@ -29,7 +39,6 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
broken = stdenv.isDarwin;
description = "Lightweight Scheme implementation";
longDescription = ''
TinyScheme is a lightweight Scheme interpreter that implements as large a
@ -40,6 +49,5 @@ stdenv.mkDerivation rec {
license = licenses.bsdOriginal;
maintainers = [ maintainers.ebzzry ];
platforms = platforms.unix;
badPlatforms = [ "aarch64-darwin" ];
};
}