summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/interpreters/tinyscheme/01-remove-macOS-main.patch24
-rw-r--r--pkgs/development/interpreters/tinyscheme/03-macOS-SOsuf.patch13
-rw-r--r--pkgs/development/interpreters/tinyscheme/default.nix12
3 files changed, 47 insertions, 2 deletions
diff --git a/pkgs/development/interpreters/tinyscheme/01-remove-macOS-main.patch b/pkgs/development/interpreters/tinyscheme/01-remove-macOS-main.patch
new file mode 100644
index 00000000000..3fedec98f38
--- /dev/null
+++ b/pkgs/development/interpreters/tinyscheme/01-remove-macOS-main.patch
@@ -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;
diff --git a/pkgs/development/interpreters/tinyscheme/03-macOS-SOsuf.patch b/pkgs/development/interpreters/tinyscheme/03-macOS-SOsuf.patch
new file mode 100644
index 00000000000..479ff369b80
--- /dev/null
+++ b/pkgs/development/interpreters/tinyscheme/03-macOS-SOsuf.patch
@@ -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
diff --git a/pkgs/development/interpreters/tinyscheme/default.nix b/pkgs/development/interpreters/tinyscheme/default.nix
index 38b4cbe1ba8..7d064432a73 100644
--- a/pkgs/development/interpreters/tinyscheme/default.nix
+++ b/pkgs/development/interpreters/tinyscheme/default.nix
@@ -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" ];
   };
 }