1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-05-17 08:28:42 +03:00

Migrated to new makescript format

This commit is contained in:
Graham Nelson 2022-04-22 00:09:24 +01:00
parent 913ae66789
commit bb1bb75578
14 changed files with 451 additions and 334 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6U86 'Krypton' (19 April 2022)
v10.1.0-alpha.1+6U87 'Krypton' (22 April 2022)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 19 April 2022
Build Number: 6U86
Build Date: 22 April 2022
Build Number: 6U87

73
inblorb/inblorb.mkscript Normal file
View file

@ -0,0 +1,73 @@
# This is "inblorb.mkscript", a script used to generate the makefile "inblorb.mk"
# used to build the tool "inblorb". Do not edit "inblorb.mk" directly. Instead,
# edit this script, and then rebuild "inblorb.mk" with the command:
# ../inweb/Tangled/inweb inblorb -makefile inblorb/inblorb.mk
# (Or simply type "make makers" to make all of the subsidiary makefiles inside the
# inform repository, including this one.)
# See the inweb manual for documentation on the *.mkscript file format, i.e.,
# the format in which this file is written. But it is essentially just a makefile
# with a number of special macro and loop features whose syntax involves braces
# { ... }, so anywhere that you see braces, you're looking at something special
# to *.mkscript; anything else is straightforward make syntax.
# -----------------------------------------------------------------------------
# Note that the resulting makefile expects to be used with the current working
# directory set to "inform", _not_ its subdirectory "inform/inblorb". So it
# should usually be invoked as e.g. "make -f inblorb/inblorb.mk".
# -----------------------------------------------------------------------------
{platform-settings}
{identity-settings}
BLORBLIB = $(ME)/Tests/Assistants/blorblib
# Making the program:
$(ME)/Tangled/$(MYNAME): $(BLORBLIB)/blorbscan {dependent-files}
$(call make-me)
.PHONY: force
force:
$(call make-me)
define make-me
$(INWEB) $(ME) -tangle
{compile from: $(ME)/Tangled/$(ME).c to: $(ME)/Tangled/$(ME).o}
{link from: $(ME)/Tangled/$(ME).o to: $(ME)/Tangled/$(ME)$(EXEEXTENSION)}
endef
# Testing the program:
.PHONY: test
test: $(BLORBLIB)/blorbscan
$(INTEST) -from $(ME) all
$(BLORBLIB)/blorbscan: $(BLORBLIB)/*.c $(BLORBLIB)/*.h
cd $(BLORBLIB); {compile-indulgently from: blorblib.c to: blorblib.o}
cd $(BLORBLIB); {compile-indulgently from: blorbscan.c to: blorbscan.o}
cd $(BLORBLIB); {link from: *.o to: blorbscan$(EXEEXTENSION)}
# Cleaning up:
.PHONY: clean
clean:
$(call clean-up)
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
rm -f $(BLORBLIB)/blorbscan
define clean-up
rm -f $(ME)/Tangled/*.o
rm -f $(ME)/Tangled/*.c
rm -f $(ME)/Tangled/*.h
rm -f $(BLORBLIB)/*.o
endef

View file

@ -1,52 +0,0 @@
# This is the script from which inweb -makefile will construct a makefile.
{platform-settings}
{identity-settings}
BLORBLIB = $(ME)/Tests/Assistants/blorblib
# Making the program:
$(ME)/Tangled/$(MYNAME): $(BLORBLIB)/blorbscan {dependent-files}
$(call make-me)
.PHONY: force
force:
$(call make-me)
define make-me
$(INWEB) $(ME) -tangle
$(CC) -o $(ME)/Tangled/$(ME).o $(ME)/Tangled/$(ME).c
$(LINK) -o $(ME)/Tangled/$(ME)$(EXEEXTENSION) $(ME)/Tangled/$(ME).o $(LINKEROPTS)
endef
# Testing the program:
.PHONY: test
test: $(BLORBLIB)/blorbscan
$(INTEST) -from $(ME) all
$(BLORBLIB)/blorbscan: $(BLORBLIB)/*.c $(BLORBLIB)/*.h
cd $(BLORBLIB); $(INDULGENTCC) blorblib.c
cd $(BLORBLIB); $(INDULGENTCC) blorbscan.c
cd $(BLORBLIB); $(LINK) -o blorbscan$(EXEEXTENSION) *.o $(LINKEROPTS)
# Cleaning up:
.PHONY: clean
clean:
$(call clean-up)
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
rm -f $(BLORBLIB)/blorbscan
define clean-up
rm -f $(ME)/Tangled/*.o
rm -f $(ME)/Tangled/*.c
rm -f $(ME)/Tangled/*.h
rm -f $(BLORBLIB)/*.o
endef

155
inform6/inform6.mkscript Normal file
View file

@ -0,0 +1,155 @@
# This is "inform6.mkscript", a script used to generate the makefile "inform6.mk"
# used to build the tool "inform6". Do not edit "inform6.mk" directly. Instead,
# edit this script, and then rebuild "inform6.mk" with the command:
# ../inweb/Tangled/inweb inform6 -makefile inform6/inform6.mk
# (Or simply type "make makers" to make all of the subsidiary makefiles inside the
# inform repository, including this one.)
# See the inweb manual for documentation on the *.mkscript file format, i.e.,
# the format in which this file is written. But it is essentially just a makefile
# with a number of special macro and loop features whose syntax involves braces
# { ... }, so anywhere that you see braces, you're looking at something special
# to *.mkscript; anything else is straightforward make syntax.
# -----------------------------------------------------------------------------
# Note that the resulting makefile expects to be used with the current working
# directory set to "inform", _not_ its subdirectory "inform/inform6". So it
# should usually be invoked as e.g. "make -f inform6/inform6.mk".
# -----------------------------------------------------------------------------
{platform-settings}
ME = inform6
INTEST = ../intest/Tangled/intest
SANDBOX = $(ME)/Inform6
INTERPRETERS = $(ME)/Tests/Assistants
# Making the program:
I6SOURCE = \
$(SANDBOX)/arrays.o $(SANDBOX)/asm.o $(SANDBOX)/bpatch.o $(SANDBOX)/chars.o \
$(SANDBOX)/directs.o $(SANDBOX)/errors.o $(SANDBOX)/expressc.o $(SANDBOX)/expressp.o \
$(SANDBOX)/files.o $(SANDBOX)/inform.o $(SANDBOX)/lexer.o $(SANDBOX)/linker.o \
$(SANDBOX)/memory.o $(SANDBOX)/objects.o $(SANDBOX)/states.o $(SANDBOX)/symbols.o \
$(SANDBOX)/syntax.o $(SANDBOX)/tables.o $(SANDBOX)/text.o $(SANDBOX)/veneer.o \
$(SANDBOX)/verbs.o
$(ME)/Tangled/$(ME): $(SANDBOX)/*.c $(SANDBOX)/*.h
$(call make-me)
.PHONY: force
force:
$(call make-me)
define make-me
cd $(SANDBOX); {compile-indulgently from: arrays.c to: arrays.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: asm.c to: asm.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: bpatch.c to: bpatch.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: chars.c to: chars.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: directs.c to: directs.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: errors.c to: errors.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: expressc.c to: expressc.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: expressp.c to: expressp.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: files.c to: files.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: inform.c to: inform.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: lexer.c to: lexer.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: linker.c to: linker.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: memory.c to: memory.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: objects.c to: objects.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: states.c to: states.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: symbols.c to: symbols.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: syntax.c to: syntax.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: tables.c to: tables.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: text.c to: text.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: veneer.c to: veneer.o options: -D$(INFORM6OS)}
cd $(SANDBOX); {compile-indulgently from: verbs.c to: verbs.o options: -D$(INFORM6OS)}
{link from: $(I6SOURCE) to: $(ME)/Tangled/$(ME)$(EXEEXTENSION)}
endef
# Testing the program:
.PHONY: test
test: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
$(INTEST) -from $(ME) all
.PHONY: interpreters
interpreters: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
# "dumb-frotz" is a Z-machine interpreter and is used in development to test
# that story files in Z format perform as intended. It's written in old C,
# and is dumb in the sense that it uses a dumb terminal.
GLKLIB = libcheapglk.a
GLKINCLUDEDIR = ../cheapglk
GLKLIBDIR = ../cheapglk
GLKMAKEFILE = Make.cheapglk
CHEAPGLK_OBJS = \
cgfref.o cggestal.o cgmisc.o cgstream.o cgstyle.o cgwindow.o cgschan.o \
cgunicod.o main.o gi_dispa.o gi_blorb.o cgblorb.o
GLULXE_OBJS = main.o files.o vm.o exec.o float.o funcs.o operand.o string.o glkop.o \
heap.o serial.o search.o gestalt.o osdepend.o unixstrt.o accel.o profile.o
CHEAPGLK_HEADERS = cheapglk.h gi_dispa.h
$(INTERPRETERS)/dumb-frotz/dumb-frotz: \
$(INTERPRETERS)/dumb-frotz/*.c \
$(INTERPRETERS)/dumb-frotz/*.h
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: buffer.c to: buffer.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: dumb-init.c to: dumb-init.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: dumb-input.c to: dumb-input.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: dumb-output.c to: dumb-output.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: dumb-pic.c to: dumb-pic.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: fastmem.c to: fastmem.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: files.c to: files.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: hotkey.c to: hotkey.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: input.c to: input.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: math.c to: math.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: object.c to: object.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: process.c to: process.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: random.c to: random.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: redirect.c to: redirect.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: screen.c to: screen.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: sound.c to: sound.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: stream.c to: stream.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: table.c to: table.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: text.c to: text.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: variable.c to: variable.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: profiling.c to: profiling.o}
cd $(INTERPRETERS)/dumb-frotz; {compile-indulgently from: main.c to: main.o}
cd $(INTERPRETERS)/dumb-frotz; {link from: *.o to: dumb-frotz$(EXEEXTENSION)}
# "dumb-glulxe" is the analogous thing for Glulx-format story files.
$(INTERPRETERS)/dumb-glulx/glulxe/glulxe: \
$(INTERPRETERS)/dumb-glulx/cheapglk/*.c \
$(INTERPRETERS)/dumb-glulx/cheapglk/*.h \
$(INTERPRETERS)/dumb-glulx/glulxe/*.c \
$(INTERPRETERS)/dumb-glulx/glulxe/*.h
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make
cd $(INTERPRETERS)/dumb-glulx/glulxe; make
# Cleaning up:
.PHONY: clean
clean:
$(call clean-up)
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
define clean-up
rm -f $(SANDBOX)/*.o
rm -f $(INTERPRETERS)/dumb-frotz/*.o
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/*.o
rm -f $(INTERPRETERS)/dumb-glulx/cheapglk/*.o
endef

View file

@ -1,115 +0,0 @@
# This is the script from which inweb -makefile will construct a makefile
# for inform6, which is (uniquely for the Inform tools) not a web.
{platform-settings}
ME = inform6
INTEST = ../intest/Tangled/intest
SANDBOX = $(ME)/Inform6
INTERPRETERS = $(ME)/Tests/Assistants
# Making the program:
I6SOURCE = \
$(SANDBOX)/arrays.o $(SANDBOX)/asm.o $(SANDBOX)/bpatch.o $(SANDBOX)/chars.o \
$(SANDBOX)/directs.o $(SANDBOX)/errors.o $(SANDBOX)/expressc.o $(SANDBOX)/expressp.o \
$(SANDBOX)/files.o $(SANDBOX)/inform.o $(SANDBOX)/lexer.o $(SANDBOX)/linker.o \
$(SANDBOX)/memory.o $(SANDBOX)/objects.o $(SANDBOX)/states.o $(SANDBOX)/symbols.o \
$(SANDBOX)/syntax.o $(SANDBOX)/tables.o $(SANDBOX)/text.o $(SANDBOX)/veneer.o \
$(SANDBOX)/verbs.o
$(ME)/Tangled/$(ME): $(SANDBOX)/*.c $(SANDBOX)/*.h
$(call make-me)
.PHONY: force
force:
$(call make-me)
define make-me
cd $(SANDBOX); $(INDULGENTCC) -std=c99 *.c -D$(INFORM6OS)
$(LINK) -o $(ME)/Tangled/$(ME)$(EXEEXTENSION) $(I6SOURCE) $(LINKEROPTS)
endef
# Testing the program:
.PHONY: test
test: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
$(INTEST) -from $(ME) all
.PHONY: interpreters
interpreters: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
# "dumb-frotz" is a Z-machine interpreter and is used in development to test
# that story files in Z format perform as intended. It's written in old C,
# and is dumb in the sense that it uses a dumb terminal.
GLKLIB = libcheapglk.a
GLKINCLUDEDIR = ../cheapglk
GLKLIBDIR = ../cheapglk
GLKMAKEFILE = Make.cheapglk
CHEAPGLK_OBJS = \
cgfref.o cggestal.o cgmisc.o cgstream.o cgstyle.o cgwindow.o cgschan.o \
cgunicod.o main.o gi_dispa.o gi_blorb.o cgblorb.o
GLULXE_OBJS = main.o files.o vm.o exec.o float.o funcs.o operand.o string.o glkop.o \
heap.o serial.o search.o gestalt.o osdepend.o unixstrt.o accel.o profile.o
CHEAPGLK_HEADERS = cheapglk.h gi_dispa.h
$(INTERPRETERS)/dumb-frotz/dumb-frotz: \
$(INTERPRETERS)/dumb-frotz/*.c \
$(INTERPRETERS)/dumb-frotz/*.h
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) buffer.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) dumb-init.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) dumb-input.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) dumb-output.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) dumb-pic.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) fastmem.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) files.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) hotkey.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) input.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) math.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) object.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) process.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) random.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) redirect.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) screen.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) sound.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) stream.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) table.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) text.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) variable.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) profiling.c
cd $(INTERPRETERS)/dumb-frotz; $(INDULGENTCC) main.c
cd $(INTERPRETERS)/dumb-frotz; $(LINK) -o dumb-frotz$(EXEEXTENSION) *.o $(LINKEROPTS)
# "dumb-glulxe" is the analogous thing for Glulx-format story files.
$(INTERPRETERS)/dumb-glulx/glulxe/glulxe: \
$(INTERPRETERS)/dumb-glulx/cheapglk/*.c \
$(INTERPRETERS)/dumb-glulx/cheapglk/*.h \
$(INTERPRETERS)/dumb-glulx/glulxe/*.c \
$(INTERPRETERS)/dumb-glulx/glulxe/*.h
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make
cd $(INTERPRETERS)/dumb-glulx/glulxe; make
# Cleaning up:
.PHONY: clean
clean:
$(call clean-up)
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
define clean-up
rm -f $(SANDBOX)/*.o
rm -f $(INTERPRETERS)/dumb-frotz/*.o
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/*.o
rm -f $(INTERPRETERS)/dumb-glulx/cheapglk/*.o
endef

View file

@ -1,47 +1,47 @@
Total memory consumption was 129371K = 126 MB
Total memory consumption was 123288K = 120 MB
---- was used for 2043757 objects, in 362472 frames in 0 x 800K = 0K = 0 MB:
31.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
19.5% text_stream_array 4600 x 100 = 460000 objects, 25907200 bytes
18.3% linked_list 43442 objects, 24327520 bytes
10.6% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
9.9% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
7.8% parse_node 129584 objects, 10366720 bytes
5.6% verb_conjugation 160 objects, 7425280 bytes
4.1% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes
2.5% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
2.4% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
1.9% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
1.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
33.1% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
20.5% text_stream_array 4600 x 100 = 460000 objects, 25907200 bytes
19.2% linked_list 43442 objects, 24327520 bytes
11.1% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
10.4% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
8.2% parse_node 129584 objects, 10366720 bytes
5.8% verb_conjugation 160 objects, 7425280 bytes
4.3% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes
2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
2.5% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
2.0% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
1.6% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
1.5% inter_schema_token 13964 objects, 2010816 bytes
1.4% package_request 21151 objects, 1861288 bytes
1.3% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
1.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
1.1% dict_entry_array 467 x 100 = 46700 objects, 1509344 bytes
1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.1% inter_symbols_table 26588 objects, 1488928 bytes
1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
0.9% inter_package 26588 objects, 1276224 bytes
1.0% inter_package 26588 objects, 1276224 bytes
0.8% map_data 670 objects, 1125600 bytes
0.8% id_body 942 objects, 1077648 bytes
0.7% adjective_meaning 202 objects, 1000304 bytes
0.7% excerpt_meaning 3101 objects, 967512 bytes
0.6% production 3877 objects, 899464 bytes
0.7% production 3877 objects, 899464 bytes
0.6% ptoken 8394 objects, 872976 bytes
0.6% grammatical_usage 3612 objects, 866880 bytes
0.6% individual_form 2562 objects, 860832 bytes
0.6% inter_schema_node 8917 objects, 856032 bytes
0.4% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.5% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.3% scan_directory 112 objects, 462336 bytes
0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
0.2% verb_usage 1128 objects, 388032 bytes
0.3% verb_usage 1128 objects, 388032 bytes
0.2% rule 470 objects, 368480 bytes
0.2% dictionary 7517 objects, 360816 bytes
0.2% verb_form 386 objects, 348944 bytes
0.2% noun 2381 objects, 285720 bytes
0.2% compilation_subtask 3349 objects, 267920 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% inference_subject 665 objects, 260680 bytes
0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.2% inference_subject 665 objects, 260680 bytes
0.1% vanilla_function 3682 objects, 235648 bytes
0.1% binary_predicate 321 objects, 169488 bytes
0.1% hierarchy_location 1122 objects, 161568 bytes
@ -237,23 +237,23 @@ Total memory consumption was 129371K = 126 MB
100.0% was used for memory not allocated for objects:
59.6% text stream storage 79084436 bytes in 477957 claims
3.9% dictionary storage 5227008 bytes in 7517 claims
57.7% text stream storage 72855396 bytes in 477507 claims
4.1% dictionary storage 5227008 bytes in 7517 claims
---- sorting 1448 bytes in 145 claims
5.4% source text 7200000 bytes in 3 claims
8.1% source text details 10800000 bytes in 2 claims
0.1% documentation fragments 262144 bytes in 1 claim
5.7% source text 7200000 bytes in 3 claims
8.5% source text details 10800000 bytes in 2 claims
0.2% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.4% inter symbols storage 4518768 bytes in 27943 claims
12.6% inter bytecode storage 16766048 bytes in 14 claims
4.6% inter links storage 6222976 bytes in 11 claims
3.5% inter symbols storage 4518768 bytes in 27943 claims
13.2% inter bytecode storage 16766048 bytes in 14 claims
4.9% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims
1.2% instance-of-kind counting 1695204 bytes in 1 claim
1.3% instance-of-kind counting 1695204 bytes in 1 claim
---- compilation workspace for objects 21856 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim
---- code generation workspace for objects 1336 bytes in 4 claims
0.2% emitter array storage 280032 bytes in 1997 claims
-138.-6% was overhead - -183740600 bytes = -179434K = -175 MB
-145.-5% was overhead - -183740600 bytes = -179434K = -175 MB

View file

@ -1,33 +1,37 @@
100.0% in inform7 run
71.1% in compilation to Inter
49.4% in //Sequence::undertake_queued_tasks//
70.5% in compilation to Inter
50.1% in //Sequence::undertake_queued_tasks//
4.7% in //MajorNodes::pre_pass//
3.5% in //MajorNodes::pass_1//
2.5% in //RTPhrasebook::compile_entries//
1.7% in //ImperativeDefinitions::assess_all//
3.4% in //MajorNodes::pass_1//
1.9% in //ImperativeDefinitions::assess_all//
1.7% in //RTPhrasebook::compile_entries//
1.5% in //RTKindConstructors::compile//
0.9% in //Sequence::lint_inter//
0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
1.1% in //Sequence::lint_inter//
0.6% in //MajorNodes::pass_2//
0.6% in //World::stage_V//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //Sequence::undertake_queued_tasks//
0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //Understand::traverse//
0.1% in //World::stages_II_and_III//
3.0% not specifically accounted for
26.0% in running Inter pipeline
10.4% in step 14/15: generate inform6 -> auto.inf
5.7% in step 5/15: load-binary-kits
5.5% in step 6/15: make-synoptic-module
1.3% in step 9/15: make-identifiers-unique
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats
0.3% in step 7/15: shorten-wiring
2.0% not specifically accounted for
26.7% in running Inter pipeline
10.3% in step 14/15: generate inform6 -> auto.inf
5.8% in step 5/15: load-binary-kits
5.7% in step 6/15: make-synoptic-module
1.5% in step 9/15: make-identifiers-unique
0.4% in step 12/15: eliminate-redundant-operations
0.4% in step 4/15: compile-splats
0.4% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
0.1% in step 11/15: eliminate-redundant-labels
1.1% not specifically accounted for
0.2% in step 11/15: eliminate-redundant-labels
0.1% in step 10/15: reconcile-verbs
0.1% in step 2/15: parse-insertions
0.1% in step 3/15: resolve-conditional-compilation
0.7% not specifically accounted for
2.3% in supervisor
0.4% not specifically accounted for

85
inform7/inform7.mkscript Normal file
View file

@ -0,0 +1,85 @@
# This is "inform7.mkscript", a script used to generate the makefile "inform7.mk"
# used to build the tool "inform7". Do not edit "inform7.mk" directly. Instead,
# edit this script, and then rebuild "inform7.mk" with the command:
# ../inweb/Tangled/inweb inform7 -makefile inform7/inform7.mk
# (Or simply type "make makers" to make all of the subsidiary makefiles inside the
# inform repository, including this one.)
# See the inweb manual for documentation on the *.mkscript file format, i.e.,
# the format in which this file is written. But it is essentially just a makefile
# with a number of special macro and loop features whose syntax involves braces
# { ... }, so anywhere that you see braces, you're looking at something special
# to *.mkscript; anything else is straightforward make syntax.
# -----------------------------------------------------------------------------
# Note that the resulting makefile expects to be used with the current working
# directory set to "inform", _not_ its subdirectory "inform/inform7". So it
# should usually be invoked as e.g. "make -f inform7/inform7.mk".
# -----------------------------------------------------------------------------
{platform-settings}
{identity-settings}
BLORBLIB = $(ME)/Tests/Assistants/blorblib
INTER = inter/Tangled/inter
.PHONY: all
all: executable preform
.PHONY: executable
executable: $(ME)/Tangled/$(MYNAME)
.PHONY: preform
preform: $(ME)/Tangled/Syntax.preform
# Making the program:
$(ME)/Tangled/$(MYNAME): {dependent-files}
$(call make-me)
$(ME)/TangledSyntax.preform:
$(call make-me)
.PHONY: force
force:
$(call make-me)
define make-me
$(INWEB) $(ME) -import-from modules -tangle
{compile from: $(ME)/Tangled/$(ME).c to: $(ME)/Tangled/$(ME).o}
{link from: $(ME)/Tangled/$(ME).o to: $(ME)/Tangled/$(ME)$(EXEEXTENSION)}
endef
# Testing the program:
.PHONY: test
test:
$(INTEST) -from $(ME) all
# Cleaning up:
.PHONY: clean
clean:
$(call clean-up)
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
define clean-up
rm -f $(ME)/Tangled/*.o
rm -f $(ME)/Tangled/*.c
rm -f $(ME)/Tangled/*.h
rm -f $(ME)/Tests/Test\ Cases/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Extensions/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Index/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Maps/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Problems/_Results_Actual/*.txt
rm -f Documentation/Examples/_Results_Actual/*.txt
endef

View file

@ -1,64 +0,0 @@
# This is the script from which inweb -makefile will construct a makefile.
{platform-settings}
{identity-settings}
BLORBLIB = $(ME)/Tests/Assistants/blorblib
INTER = inter/Tangled/inter
.PHONY: all
all: executable preform
.PHONY: executable
executable: $(ME)/Tangled/$(MYNAME)
.PHONY: preform
preform: $(ME)/Tangled/Syntax.preform
# Making the program:
$(ME)/Tangled/$(MYNAME): {dependent-files}
$(call make-me)
$(ME)/TangledSyntax.preform:
$(call make-me)
.PHONY: force
force:
$(call make-me)
define make-me
$(INWEB) $(ME) -import-from modules -tangle
$(CC) -o $(ME)/Tangled/$(ME).o $(ME)/Tangled/$(ME).c
$(LINK) -o $(ME)/Tangled/$(ME)$(EXEEXTENSION) $(ME)/Tangled/$(ME).o $(LINKEROPTS)
endef
# Testing the program:
.PHONY: test
test:
$(INTEST) -from $(ME) all
# Cleaning up:
.PHONY: clean
clean:
$(call clean-up)
.PHONY: purge
purge:
$(call clean-up)
rm -f $(ME)/Tangled/$(ME)
define clean-up
rm -f $(ME)/Tangled/*.o
rm -f $(ME)/Tangled/*.c
rm -f $(ME)/Tangled/*.h
rm -f $(ME)/Tests/Test\ Cases/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Extensions/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Index/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Maps/_Results_Actual/*.txt
rm -f $(ME)/Tests/Test\ Problems/_Results_Actual/*.txt
rm -f Documentation/Examples/_Results_Actual/*.txt
endef

View file

@ -1,29 +0,0 @@
{platform-settings}
.PHONY: all
all: retrospective/6L02/cBlorb retrospective/6L02/ni retrospective/6L38/cBlorb retrospective/6L38/ni retrospective/6M62/cBlorb retrospective/6M62/ni
retrospective/6L02/cBlorb:
$(INDULGENTCC) -o retrospective/6L02/cBlorb.o retrospective/6L02/cBlorb.c
$(LINK) -o retrospective/6L02/cBlorb retrospective/6L02/cBlorb.o $(LINKEROPTS)
retrospective/6L38/cBlorb:
$(INDULGENTCC) -o retrospective/6L38/cBlorb.o retrospective/6L38/cBlorb.c
$(LINK) -o retrospective/6L38/cBlorb retrospective/6L38/cBlorb.o $(LINKEROPTS)
retrospective/6M62/cBlorb:
$(INDULGENTCC) -o retrospective/6M62/cBlorb.o retrospective/6M62/cBlorb.c
$(LINK) -o retrospective/6M62/cBlorb retrospective/6M62/cBlorb.o $(LINKEROPTS)
retrospective/6L02/ni:
$(INDULGENTCC) -o retrospective/6L02/ni.o retrospective/6L02/ni.c
$(LINK) -o retrospective/6L02/ni retrospective/6L02/ni.o $(LINKEROPTS)
retrospective/6L38/ni:
$(INDULGENTCC) -o retrospective/6L38/ni.o retrospective/6L38/ni.c
$(LINK) -o retrospective/6L38/ni retrospective/6L38/ni.o $(LINKEROPTS)
retrospective/6M62/ni:
$(INDULGENTCC) -o retrospective/6M62/ni.o retrospective/6M62/ni.c
$(LINK) -o retrospective/6M62/ni retrospective/6M62/ni.o $(LINKEROPTS)

View file

@ -0,0 +1,48 @@
# This is "retrospective.mkscript", a script used to generate "retrospective.mk"
# which is used to build the old-time versions of the Inform tools stored in the
# "inform/retrospective" directory. Do not edit "retrospective.mk" directly.
# Instead, edit this script, and then rebuild "retrospective.mk" with the command:
# ../inweb/Tangled/inweb -prototype retrospective/retrospective.mkscript -makefile retrospective/retrospective.mk
# (Or simply type "make makers" to make all of the subsidiary makefiles inside the
# inform repository, including this one.)
# See the inweb manual for documentation on the *.mkscript file format, i.e.,
# the format in which this file is written. But it is essentially just a makefile
# with a number of special macro and loop features whose syntax involves braces
# { ... }, so anywhere that you see braces, you're looking at something special
# to *.mkscript; anything else is straightforward make syntax.
# -----------------------------------------------------------------------------
# Note that the resulting makefile expects to be used with the current working
# directory set to "inform/retrospective". So it can then be invoked just as "make".
# -----------------------------------------------------------------------------
{platform-settings}
{define: retro-targets build: BUILD}
retrospective/{BUILD}/cBlorb:
{compile-indulgently from: retrospective/{BUILD}/cBlorb.c to: retrospective/{BUILD}/cBlorb.o }
{link from: retrospective/{BUILD}/cBlorb.o to: retrospective/{BUILD}/cBlorb$(EXEEXTENSION) }
retrospective/{BUILD}/ni:
{compile-indulgently from: retrospective/{BUILD}/ni.c to: retrospective/{BUILD}/ni.o }
{link from: retrospective/{BUILD}/ni.o to: retrospective/{BUILD}/ni$(EXEEXTENSION) }
{end-define}
# -----------------------------------------------------------------------------
.PHONY: all
all: \
retrospective/6L02/cBlorb retrospective/6L02/ni \
retrospective/6L38/cBlorb retrospective/6L38/ni \
retrospective/6M62/cBlorb retrospective/6M62/ni
{retro-targets build: 6L02}
{retro-targets build: 6L38}
{retro-targets build: 6M62}

View file

@ -1,6 +1,6 @@
echo "(A script to make a first build of the core Inform tools)"
echo "(Step 1 of 4: making the overall makefile)"
if ! ( ../inweb/Tangled/inweb -prototype scripts/makescript.txt -makefile makefile; ) then
if ! ( ../inweb/Tangled/inweb -prototype scripts/inform.mkscript -makefile makefile; ) then
echo "(Okay, so that failed. Have you installed and built Inweb?)"
exit 1
fi

View file

@ -1,18 +1,30 @@
# This is "inform.mkscript", a script used to generate the makefile "makefile"
# at the root of the "inform" repository. This isn't for making any single
# executable, but for orchestrating build-like operations across the whole
# suite of tools included in that repository, so a lot of what it does is to
# run make recursively on subsidiary makefiles belonging to the individual tools.
# Do not edit "inform/makefile" directly. Instead, edit this script, and then
# rebuild "inform/makefile" with the command:
# ../inweb/Tangled/inweb -prototype scripts/inform.mkscript -makefile makefile
# (Note that typing "make makers" will remake all of the subsidiary makefiles
# inside the repository from their scripts, but _not_ this one: we don't want
# to have a makefile editing itself.)
# See the inweb manual for documentation on the *.mkscript file format, i.e.,
# the format in which this file is written. But it is essentially just a makefile
# with a number of special macro and loop features whose syntax involves braces
# { ... }, so anywhere that you see braces, you're looking at something special
# to *.mkscript; anything else is straightforward make syntax.
# -----------------------------------------------------------------------------
# Core Inform makescript - to be turned into a makefile by inweb
# Note that the resulting makefile expects to be used with the current working
# directory set to "inform". It should then usually be invoked with just "make".
# -----------------------------------------------------------------------------
# Inform is a suite of software with many components and a full makefile for
# it would be highly repetitive, and hard to maintain. Instead we use this
# script for making that makefile; it's human-readable and editable.
# To perform the translation, run this as a shell command:
#
# $ ../inweb/Tangled/inweb -prototype scripts/makescript.txt -makefile makefile
#
# In the syntax of this file, only curly braces {thus} represent special
# features: everything else is raw makefile syntax, copied directly across.
# -----------------------------------------------------------------------------
# The following ensures that basic tools such as CC and LINK have suitable
# definitions.
{platform-settings}
@ -164,8 +176,8 @@ makers:
{repeat-tools-block:all}
$(INWEBX) $(@WEB) -makefile $(@MAKER)
{end-block}
$(INWEBX) -prototype inform6/makescript.txt -makefile inform6/inform6.mk
$(INWEBX) -prototype retrospective/makescript.txt -makefile retrospective/makefile
$(INWEBX) -prototype inform6/inform6.mkscript -makefile inform6/inform6.mk
$(INWEBX) -prototype retrospective/retrospective.mkscript -makefile retrospective/makefile
# -----------------------------------------------------------------------------
# Target "gitignores"