Added Apple Silicon support

This commit is contained in:
Graham Nelson 2022-04-30 17:12:14 +01:00
parent 9f4ca7c845
commit 07ec28d140
15 changed files with 101 additions and 87 deletions

View file

@ -167,10 +167,9 @@ void Makefiles::modify_filenames_expander(preprocessor_macro *mm, preprocessor_s
if (Str::get_at(captured, i) == '/')
last_slash = i;
int last_dot = Str::len(captured);
if (last_slash >= 0)
for (int i=last_slash; i<Str::len(captured); i++)
if (Str::get_at(captured, i) == '.')
last_dot = i;
for (int i=last_slash+1; i<Str::len(captured); i++)
if (Str::get_at(captured, i) == '.')
last_dot = i;
for (int i=0; i<=last_slash; i++) PUT(Str::get_at(captured, i));
WRITE("%S", prefix);
for (int i=last_slash+1; i<last_dot; i++) PUT(Str::get_at(captured, i));

View file

@ -14,9 +14,9 @@ INWEB = inweb/Tangled/inweb
CCOPTS = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -ferror-limit=1000
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -ferror-limit=1000
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable
ME = inweb
FTEST = $(ME)/foundation-test

View file

@ -15,9 +15,9 @@ INWEB = inweb/Tangled/inweb
CCOPTSX = -DPLATFORM_MACOS=1 -target x86_64-apple-macos10.12 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
CCOPTSA = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -ferror-limit=1000
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -ferror-limit=1000
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable
ME = inweb
FTEST = $(ME)/foundation-test
@ -70,7 +70,12 @@ safe:
$(call make-me-using-safety-copy)
define make-me-once-tangled
clang -std=c11 -c $(MANYWARNINGS) $(CCOPTSX) -g -o$(ME)/Tangled/$(ME)_x86.o$(ME)/Tangled/$(ME)_x86.c clang -std=c11 -c $(MANYWARNINGS) $(CCOPTSA) -g -o$(ME)/Tangled/$(ME)_arm.o$(ME)/Tangled/$(ME)_arm.c clang $(CCOPTSX) -g -o$(ME)/Tangled/$(ME)$(EXEEXTENSION)_x86$(ME)/Tangled/$(ME)_x86.o clang $(CCOPTSA) -g -o$(ME)/Tangled/$(ME)$(EXEEXTENSION)_arm$(ME)/Tangled/$(ME)_arm.o lipo -create -output $(ME)/Tangled/$(ME)$(EXEEXTENSION)$(ME)/Tangled/$(ME)$(EXEEXTENSION)_x86$(ME)/Tangled/$(ME)$(EXEEXTENSION)_armendef
clang -std=c11 -c $(MANYWARNINGS) $(CCOPTSX) -g -o $(ME)/Tangled/$(ME)_x86.o $(ME)/Tangled/$(ME).c
clang -std=c11 -c $(MANYWARNINGS) $(CCOPTSA) -g -o $(ME)/Tangled/$(ME)_arm.o $(ME)/Tangled/$(ME).c
clang $(CCOPTSX) -g -o $(ME)/Tangled/$(ME)$(EXEEXTENSION)_x86 $(ME)/Tangled/$(ME)_x86.o
clang $(CCOPTSA) -g -o $(ME)/Tangled/$(ME)$(EXEEXTENSION)_arm $(ME)/Tangled/$(ME)_arm.o
lipo -create -output $(ME)/Tangled/$(ME)$(EXEEXTENSION) $(ME)/Tangled/$(ME)$(EXEEXTENSION)_x86 $(ME)/Tangled/$(ME)$(EXEEXTENSION)_arm
endef
define make-me
$(ME)/Tangled/$(ME) $(ME) -tangle

View file

@ -14,7 +14,7 @@ INWEB = inweb/Tangled/inweb
CCOPTS = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -ferror-limit=1000
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -ferror-limit=1000
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable

View file

@ -79,7 +79,7 @@ INWEB = inweb/Tangled/inweb
CCOPTS = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -ferror-limit=1000
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -ferror-limit=1000
# To explain those:
@ -105,5 +105,6 @@ MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -W
# which is a little tiresome: though it's off by default (on MacOS with -Weverything), we explicitly disable it
# -Wno-c11-extensions: we want to allow ourselves use of _Noreturn, a C11 annotation...
# -Wno-unreachable-code-return: ...which means some compilers can prove some of our return statements unnecessary
# -Wno-unused-but-set-variable: this is harmless, and done deliberately to avoid warnings on other compilers
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable

View file

@ -15,7 +15,7 @@ INWEB = inweb/Tangled/inweb
CCOPTSX = -DPLATFORM_MACOS=1 -target x86_64-apple-macos10.12 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
CCOPTSA = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -ferror-limit=1000
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -ferror-limit=1000
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable

View file

@ -69,8 +69,8 @@ INWEB = inweb/Tangled/inweb
{end-define}
{define: compile-indulgently to: TO from: FROM ?options: OPTS}
clang -std=c99 -c $(FEWERWARNINGS) $(CCOPTSX) -g {OPTS} -o {modify-filenames original: {TO} suffix: _x86} {modify-filenames original: {FROM} suffix: _x86}
clang -std=c99 -c $(FEWERWARNINGS) $(CCOPTSA) -g {OPTS} -o {modify-filenames original: {TO} suffix: _arm} {modify-filenames original: {FROM} suffix: _arm}
clang -std=c99 -c $(FEWERWARNINGS) $(CCOPTSX) -g {OPTS} -o {modify-filenames original: {TO} suffix: _x86} {FROM}
clang -std=c99 -c $(FEWERWARNINGS) $(CCOPTSA) -g {OPTS} -o {modify-filenames original: {TO} suffix: _arm} {FROM}
{end-define}
{define: link to: TO from: FROM ?options: OPTS}
@ -84,7 +84,7 @@ INWEB = inweb/Tangled/inweb
CCOPTSX = -DPLATFORM_MACOS=1 -target x86_64-apple-macos10.12 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
CCOPTSA = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -ferror-limit=1000
MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -ferror-limit=1000
# To explain those:
@ -110,5 +110,6 @@ MANYWARNINGS = -Weverything -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -W
# which is a little tiresome: though it's off by default (on MacOS with -Weverything), we explicitly disable it
# -Wno-c11-extensions: we want to allow ourselves use of _Noreturn, a C11 annotation...
# -Wno-unreachable-code-return: ...which means some compilers can prove some of our return statements unnecessary
# -Wno-unused-but-set-variable: this is harmless, and done deliberately to avoid warnings on other compilers
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return
FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable

View file

@ -45,21 +45,29 @@ Make a directory in which to work: let's call this "work". Then:
* Change the current directory to this: "cd work"
* Clone Inweb: "git clone https://github.com/ganelson/inweb.git"
* Run **one of the following commands**. Unix is for any generic version of Unix,
non-Linux, non-MacOS: Solaris, for example. Android support is currently disabled,
though only because its build settings are currently missing from the inweb
distribution. The older macos32 platform won't build with the MacOS SDK from
10.14 onwards, and in any case 32-bit executables won't run from 10.15 onwards:
so use the default macos unless you need to build for an old version of MacOS.
(Settings for making Apple Silicon and universal binaries on MacOS will follow,
but are not yet ready.)
* Run **one of the following commands**.
* "bash inweb/scripts/first.sh linux"
* "bash inweb/scripts/first.sh macos"
* "bash inweb/scripts/first.sh macos32"
* "bash inweb/scripts/first.sh macosarm"
* "bash inweb/scripts/first.sh macosuniv"
* "bash inweb/scripts/first.sh unix"
* "bash inweb/scripts/first.sh windows"
* Test that all is well: "inweb/Tangled/inweb -help"
Some notes on which platform to choose:
* For Intel Macs running MacOS 10.13 ("High Sierra") or earlier, use macos32.
This will produce 32-bit x86 executables; we are no longer really supporting this.
* For Intel Macs running MacOS 10.14 ("Mojave"), use macos. This will produce
64-bit x86 executables.
* For Apple Silicon Macs, use macosarm. This will produce 64-bit ARM executables.
* To produce universal binaries (64-bit x86 and ARM combined) on Apple Silicon
Macs, use macosuniv, but expect your compilation times to double, of course.
* For a generic version of Unix where the Linux settings do not work, try using
unix. (For Solaris, for example.)
* Android support has existed in the past, but the Android Inform community
has not yet an opportunity to contribute build settings.
You should now have a working copy of Inweb, with its own makefile tailored
to your platform now in place (at inweb/inweb.mk). To build inweb again, e.g.
after editing inweb's source code, do not run the shell script first.sh again.

View file

@ -4568,15 +4568,15 @@ void Makefiles__platform_settings_expander(preprocessor_macro *mm, preprocessor
void Makefiles__seek_INWEBPLATFORM(text_stream *line, text_file_position *tfp, void *X) ;
#line 129 "inweb/Chapter 6/Makefiles.w"
void Makefiles__modify_filenames_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ;
#line 186 "inweb/Chapter 6/Makefiles.w"
#line 185 "inweb/Chapter 6/Makefiles.w"
void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ;
#line 236 "inweb/Chapter 6/Makefiles.w"
#line 235 "inweb/Chapter 6/Makefiles.w"
void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ;
#line 269 "inweb/Chapter 6/Makefiles.w"
#line 268 "inweb/Chapter 6/Makefiles.w"
void Makefiles__dependent_files_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ;
#line 325 "inweb/Chapter 6/Makefiles.w"
#line 324 "inweb/Chapter 6/Makefiles.w"
void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) ;
#line 366 "inweb/Chapter 6/Makefiles.w"
#line 365 "inweb/Chapter 6/Makefiles.w"
void Makefiles__pathname_slashed(OUTPUT_STREAM, pathname *P) ;
#line 8 "inweb/Chapter 6/Git Support.w"
void Git__write_gitignore(web *W, filename *prototype, filename *F) ;
@ -31353,10 +31353,9 @@ void Makefiles__modify_filenames_expander(preprocessor_macro *mm, preprocessor_s
if (Str__get_at(captured, i) == '/')
last_slash = i;
int last_dot = Str__len(captured);
if (last_slash >= 0)
for (int i=last_slash; i<Str__len(captured); i++)
if (Str__get_at(captured, i) == '.')
last_dot = i;
for (int i=last_slash+1; i<Str__len(captured); i++)
if (Str__get_at(captured, i) == '.')
last_dot = i;
for (int i=0; i<=last_slash; i++) PUT(Str__get_at(captured, i));
WRITE("%S", prefix);
for (int i=last_slash+1; i<last_dot; i++) PUT(Str__get_at(captured, i));
@ -31391,10 +31390,9 @@ void Makefiles__modify_filenames_expander(preprocessor_macro *mm, preprocessor_s
if (Str__get_at(captured, i) == '/')
last_slash = i;
int last_dot = Str__len(captured);
if (last_slash >= 0)
for (int i=last_slash; i<Str__len(captured); i++)
if (Str__get_at(captured, i) == '.')
last_dot = i;
for (int i=last_slash+1; i<Str__len(captured); i++)
if (Str__get_at(captured, i) == '.')
last_dot = i;
for (int i=0; i<=last_slash; i++) PUT(Str__get_at(captured, i));
WRITE("%S", prefix);
for (int i=last_slash+1; i<last_dot; i++) PUT(Str__get_at(captured, i));
@ -31410,7 +31408,7 @@ void Makefiles__modify_filenames_expander(preprocessor_macro *mm, preprocessor_s
DISCARD_TEXT(captured)
}
#line 186 "inweb/Chapter 6/Makefiles.w"
#line 185 "inweb/Chapter 6/Makefiles.w"
void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *PPS,
text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) {
makefile_specifics *specifics = RETRIEVE_POINTER_makefile_specifics(PPS->specifics);
@ -31427,7 +31425,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P
dictionary *D = specifics->tools_dictionary;
{
#line 219 "inweb/Chapter 6/Makefiles.w"
#line 218 "inweb/Chapter 6/Makefiles.w"
web_md *Wm = Reader__load_web_md(Pathnames__from_text(path), NULL,
specifics->search_path, TRUE);
Wm->as_module->module_name = Str__duplicate(symbol);
@ -31437,25 +31435,25 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P
Dictionaries__write_value(D, symbol, Wm);
}
#line 200 "inweb/Chapter 6/Makefiles.w"
#line 199 "inweb/Chapter 6/Makefiles.w"
;
{
#line 228 "inweb/Chapter 6/Makefiles.w"
#line 227 "inweb/Chapter 6/Makefiles.w"
WRITE("%SLEAF = %S\n", symbol, webname);
WRITE("%SWEB = %S\n", symbol, path);
WRITE("%SMAKER = $(%SWEB)/%S.mk\n", symbol, symbol, webname);
WRITE("%SX = $(%SWEB)/Tangled/%S\n", symbol, symbol, webname);
}
#line 201 "inweb/Chapter 6/Makefiles.w"
#line 200 "inweb/Chapter 6/Makefiles.w"
;
} else if (Str__eq(category, TL_IS_651)) {
int marker = MAKEFILE_WEB_MOM;
dictionary *D = specifics->webs_dictionary;
{
#line 219 "inweb/Chapter 6/Makefiles.w"
#line 218 "inweb/Chapter 6/Makefiles.w"
web_md *Wm = Reader__load_web_md(Pathnames__from_text(path), NULL,
specifics->search_path, TRUE);
Wm->as_module->module_name = Str__duplicate(symbol);
@ -31465,25 +31463,25 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P
Dictionaries__write_value(D, symbol, Wm);
}
#line 205 "inweb/Chapter 6/Makefiles.w"
#line 204 "inweb/Chapter 6/Makefiles.w"
;
{
#line 228 "inweb/Chapter 6/Makefiles.w"
#line 227 "inweb/Chapter 6/Makefiles.w"
WRITE("%SLEAF = %S\n", symbol, webname);
WRITE("%SWEB = %S\n", symbol, path);
WRITE("%SMAKER = $(%SWEB)/%S.mk\n", symbol, symbol, webname);
WRITE("%SX = $(%SWEB)/Tangled/%S\n", symbol, symbol, webname);
}
#line 206 "inweb/Chapter 6/Makefiles.w"
#line 205 "inweb/Chapter 6/Makefiles.w"
;
} else if (Str__eq(category, TL_IS_652)) {
int marker = MAKEFILE_MODULE_MOM;
dictionary *D = specifics->modules_dictionary;
{
#line 219 "inweb/Chapter 6/Makefiles.w"
#line 218 "inweb/Chapter 6/Makefiles.w"
web_md *Wm = Reader__load_web_md(Pathnames__from_text(path), NULL,
specifics->search_path, TRUE);
Wm->as_module->module_name = Str__duplicate(symbol);
@ -31493,18 +31491,18 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P
Dictionaries__write_value(D, symbol, Wm);
}
#line 210 "inweb/Chapter 6/Makefiles.w"
#line 209 "inweb/Chapter 6/Makefiles.w"
;
{
#line 228 "inweb/Chapter 6/Makefiles.w"
#line 227 "inweb/Chapter 6/Makefiles.w"
WRITE("%SLEAF = %S\n", symbol, webname);
WRITE("%SWEB = %S\n", symbol, path);
WRITE("%SMAKER = $(%SWEB)/%S.mk\n", symbol, symbol, webname);
WRITE("%SX = $(%SWEB)/Tangled/%S\n", symbol, symbol, webname);
}
#line 211 "inweb/Chapter 6/Makefiles.w"
#line 210 "inweb/Chapter 6/Makefiles.w"
;
} else {
Errors__in_text_file("category should be 'tool', 'module' or 'web'", tfp);
@ -31512,7 +31510,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P
PPS->last_line_was_blank = FALSE;
}
#line 236 "inweb/Chapter 6/Makefiles.w"
#line 235 "inweb/Chapter 6/Makefiles.w"
void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *PPS,
text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) {
Preprocessor__set_loop_var_name(loop, TL_IS_653);
@ -31523,7 +31521,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *
int marker = MAKEFILE_TOOL_MOM;
{
#line 257 "inweb/Chapter 6/Makefiles.w"
#line 256 "inweb/Chapter 6/Makefiles.w"
module *M;
LOOP_OVER(M, module) {
if ((M->origin_marker == marker) &&
@ -31534,13 +31532,13 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *
}
}
#line 244 "inweb/Chapter 6/Makefiles.w"
#line 243 "inweb/Chapter 6/Makefiles.w"
;
} else if (Str__eq(category, TL_IS_656)) {
int marker = MAKEFILE_WEB_MOM;
{
#line 257 "inweb/Chapter 6/Makefiles.w"
#line 256 "inweb/Chapter 6/Makefiles.w"
module *M;
LOOP_OVER(M, module) {
if ((M->origin_marker == marker) &&
@ -31551,13 +31549,13 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *
}
}
#line 247 "inweb/Chapter 6/Makefiles.w"
#line 246 "inweb/Chapter 6/Makefiles.w"
;
} else if (Str__eq(category, TL_IS_657)) {
int marker = MAKEFILE_MODULE_MOM;
{
#line 257 "inweb/Chapter 6/Makefiles.w"
#line 256 "inweb/Chapter 6/Makefiles.w"
module *M;
LOOP_OVER(M, module) {
if ((M->origin_marker == marker) &&
@ -31568,14 +31566,14 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *
}
}
#line 250 "inweb/Chapter 6/Makefiles.w"
#line 249 "inweb/Chapter 6/Makefiles.w"
;
} else {
Errors__in_text_file("category should be 'tool', 'module' or 'web'", tfp);
}
}
#line 269 "inweb/Chapter 6/Makefiles.w"
#line 268 "inweb/Chapter 6/Makefiles.w"
void Makefiles__dependent_files_expander(preprocessor_macro *mm, preprocessor_state *PPS,
text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) {
makefile_specifics *specifics = RETRIEVE_POINTER_makefile_specifics(PPS->specifics);
@ -31628,12 +31626,12 @@ void Makefiles__dependent_files_expander(preprocessor_macro *mm, preprocessor_st
PPS->last_line_was_blank = FALSE;
}
#line 325 "inweb/Chapter 6/Makefiles.w"
#line 324 "inweb/Chapter 6/Makefiles.w"
void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) {
dictionary *patterns_done = Dictionaries__new(16, TRUE);
if (F)
{
#line 336 "inweb/Chapter 6/Makefiles.w"
#line 335 "inweb/Chapter 6/Makefiles.w"
pathname *P = Filenames__up(F);
TEMPORARY_TEXT(leaf_pattern)
WRITE_TO(leaf_pattern, "%S", Pathnames__directory_name(P));
@ -31660,14 +31658,14 @@ void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) {
DISCARD_TEXT(tester)
}
#line 327 "inweb/Chapter 6/Makefiles.w"
#line 326 "inweb/Chapter 6/Makefiles.w"
;
section_md *Sm;
LOOP_OVER_LINKED_LIST(Sm, section_md, L) {
filename *F = Sm->source_file_for_section;
{
#line 336 "inweb/Chapter 6/Makefiles.w"
#line 335 "inweb/Chapter 6/Makefiles.w"
pathname *P = Filenames__up(F);
TEMPORARY_TEXT(leaf_pattern)
WRITE_TO(leaf_pattern, "%S", Pathnames__directory_name(P));
@ -31694,12 +31692,12 @@ void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) {
DISCARD_TEXT(tester)
}
#line 331 "inweb/Chapter 6/Makefiles.w"
#line 330 "inweb/Chapter 6/Makefiles.w"
;
}
}
#line 366 "inweb/Chapter 6/Makefiles.w"
#line 365 "inweb/Chapter 6/Makefiles.w"
void Makefiles__pathname_slashed(OUTPUT_STREAM, pathname *P) {
TEMPORARY_TEXT(PT)
WRITE_TO(PT, "%p", P);

View file

@ -66,7 +66,6 @@ on a POSIX operating system.
<span class="definition-keyword">define</span> <span class="constant-syntax">SHELL_QUOTE_CHARACTER</span><span class="plain-syntax"> </span><span class="character-syntax">'\"'</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">WINDOWS_JAVASCRIPT</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">INFORM_FOLDER_RELATIVE_TO_HOME</span><span class="plain-syntax"> </span><span class="string-syntax">""</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">HTML_MAP_FONT_SIZE</span><span class="plain-syntax"> </span><span class="constant-syntax">11</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">#</span><span class="identifier-syntax">include</span><span class="plain-syntax"> </span><span class="function-syntax">&lt;dirent.h&gt;</span>

View file

@ -217,7 +217,7 @@ the idea is that the new stopwatch is to time a sub-task of the main task which
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>Every started stopwatch must be stopped in order to register time having
been used. Once this is done
been used. Once this is done, we sort:
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -225,7 +225,8 @@ been used. Once this is done
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">running</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"already stopped"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">running</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">end_time</span><span class="plain-syntax"> = </span><span class="identifier-syntax">clock</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">time_taken</span><span class="plain-syntax"> += ((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">end_time</span><span class="plain-syntax"> - </span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">start_time</span><span class="plain-syntax">)) / (</span><span class="identifier-syntax">CLOCKS_PER_SEC</span><span class="plain-syntax">/100);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">time_taken</span><span class="plain-syntax"> +=</span>
<span class="plain-syntax"> (((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">end_time</span><span class="plain-syntax">)) - ((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">start_time</span><span class="plain-syntax">))) / ((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">CLOCKS_PER_SEC</span><span class="plain-syntax">/100));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><a href="2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">stages_chronological</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Sort the subtasks in descreasing order of how much time they took</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">st</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">time_taken</span><span class="plain-syntax">;</span>

View file

@ -313,12 +313,7 @@ of which are variadic and have to be written out the old-fashioned way:
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"script"</span><span class="plain-syntax">, </span><span class="string-syntax">"type=\"text/javascript\""</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">define_project</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"function project() {\n"</span><span class="plain-syntax">); </span><span class="constant-syntax">INDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="constant-syntax">WINDOWS_JAVASCRIPT</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"return external.Project;\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="constant-syntax">WINDOWS_JAVASCRIPT</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"return window.Project;\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="constant-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>

Binary file not shown.

View file

@ -227,10 +227,9 @@ for that platform.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'/'</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_slash</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">last_dot</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_slash</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">last_slash</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'.'</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_dot</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">last_slash</span><span class="plain-syntax">+1; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'.'</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_dot</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;=</span><span class="identifier-syntax">last_slash</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">prefix</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">last_slash</span><span class="plain-syntax">+1; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">last_dot</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">captured</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">));</span>

View file

@ -49,21 +49,29 @@ Make a directory in which to work: let's call this "work". Then:
* Change the current directory to this: "cd work"
* Clone Inweb: "git clone https://github.com/ganelson/inweb.git"
* Run **one of the following commands**. Unix is for any generic version of Unix,
non-Linux, non-MacOS: Solaris, for example. Android support is currently disabled,
though only because its build settings are currently missing from the inweb
distribution. The older macos32 platform won't build with the MacOS SDK from
10.14 onwards, and in any case 32-bit executables won't run from 10.15 onwards:
so use the default macos unless you need to build for an old version of MacOS.
(Settings for making Apple Silicon and universal binaries on MacOS will follow,
but are not yet ready.)
* Run **one of the following commands**.
* "bash inweb/scripts/first.sh linux"
* "bash inweb/scripts/first.sh macos"
* "bash inweb/scripts/first.sh macos32"
* "bash inweb/scripts/first.sh macosarm"
* "bash inweb/scripts/first.sh macosuniv"
* "bash inweb/scripts/first.sh unix"
* "bash inweb/scripts/first.sh windows"
* Test that all is well: "inweb/Tangled/inweb -help"
Some notes on which platform to choose:
* For Intel Macs running MacOS 10.13 ("High Sierra") or earlier, use macos32.
This will produce 32-bit x86 executables; we are no longer really supporting this.
* For Intel Macs running MacOS 10.14 ("Mojave"), use macos. This will produce
64-bit x86 executables.
* For Apple Silicon Macs, use macosarm. This will produce 64-bit ARM executables.
* To produce universal binaries (64-bit x86 and ARM combined) on Apple Silicon
Macs, use macosuniv, but expect your compilation times to double, of course.
* For a generic version of Unix where the Linux settings do not work, try using
unix. (For Solaris, for example.)
* Android support has existed in the past, but the Android Inform community
has not yet an opportunity to contribute build settings.
You should now have a working copy of Inweb, with its own makefile tailored
to your platform now in place (at inweb/inweb.mk). To build inweb again, e.g.
after editing inweb's source code, do not run the shell script first.sh again.