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" ]; }; }