tinyscheme: fix the build on macOS
This commit is contained in:
parent
17fb7518ff
commit
8f0ec82696
|
@ -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;
|
|
@ -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
|
|
@ -13,9 +13,19 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
prePatch = "dos2unix makefile";
|
prePatch = "dos2unix makefile";
|
||||||
patches = [
|
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
|
# 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.
|
# to unnecessarily tie this package to the GCC stdenv.
|
||||||
./02-use-toolchain-env-vars.patch
|
./02-use-toolchain-env-vars.patch
|
||||||
|
] ++ lib.optionals stdenv.targetPlatform.isDarwin [
|
||||||
|
# On macOS the library suffix is .dylib:
|
||||||
|
./03-macOS-SOsuf.patch
|
||||||
];
|
];
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace scheme.c --replace "init.scm" "$out/lib/init.scm"
|
substituteInPlace scheme.c --replace "init.scm" "$out/lib/init.scm"
|
||||||
|
@ -29,7 +39,6 @@ stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
broken = stdenv.isDarwin;
|
|
||||||
description = "Lightweight Scheme implementation";
|
description = "Lightweight Scheme implementation";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
TinyScheme is a lightweight Scheme interpreter that implements as large a
|
TinyScheme is a lightweight Scheme interpreter that implements as large a
|
||||||
|
@ -40,6 +49,5 @@ stdenv.mkDerivation rec {
|
||||||
license = licenses.bsdOriginal;
|
license = licenses.bsdOriginal;
|
||||||
maintainers = [ maintainers.ebzzry ];
|
maintainers = [ maintainers.ebzzry ];
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
badPlatforms = [ "aarch64-darwin" ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue