Added Apple Silicon support
This commit is contained in:
parent
9f4ca7c845
commit
07ec28d140
15 changed files with 101 additions and 87 deletions
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
24
README.md
24
README.md
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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"><dirent.h></span>
|
||||
|
|
|
@ -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>§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">-></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">-></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">-></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">-></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">-></span><span class="element-syntax">end_time</span><span class="plain-syntax"> - </span><span class="identifier-syntax">st</span><span class="plain-syntax">-></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">-></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">-></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">-></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">-></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"> > </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">-></span><span class="element-syntax">time_taken</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -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.
|
@ -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"> >= </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"><</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"><</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"><=</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"><</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>
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue