# ----------------------------------------------------------------------------- # Core Inform makescript - to be turned into a makefile by inweb # ----------------------------------------------------------------------------- # 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} # The colony file for this collection of webs contains information about their # paths, where they are woven to, and so on COLONY = colony.txt INTEST = ../intest/Tangled/intest INTESTX = ../intest/Tangled/intest INTESTWEB = ../intest INWEB = ../inweb/Tangled/inweb INWEBX = ../inweb/Tangled/inweb INTERX = inter/Tangled/inter INBUILDX = inbuild/Tangled/inbuild # The "-" at the front here tells make to load this file if it exists, and # continue otherwise. If it does exist, it will define the symbol INTEGRATION. # That signals that the user wants to integrate the intools into the UI app; # if it's not defined, the user is just playing with the intools in isolation. # (Different versions of this file are needed on different operating systems.) -include ../make-integration-settings.mk # ----------------------------------------------------------------------------- # Most components of Inform are C programs written as literate-programming # webs, making use of shared libraries of code called modules. We list them. # Each module in turn is defined by a symbol name such as NAME, a tool name # (usually the same but in lower case), and lastly a location relative to the # root of the core Inform distribution. # In the eventual makefile, the symbol NAMEWEB is defined as its location. {module} WORDS words services/words-module modules {module} SYNTAX syntax services/syntax-module modules {module} HTML html services/html-module modules {module} ARCH arch services/arch-module modules {module} INFLECTIONS inflections services/inflections-module modules {module} LINGUISTICS linguistics services/linguistics-module modules {module} PROBLEMS problems services/problems-module modules {module} KINDS kinds inform7/kinds-module modules {module} CORE core inform7/core-module modules {module} IF if inform7/if-module modules {module} INDEX index inform7/index-module modules {module} MULTIMEDIA multimedia inform7/multimedia-module modules {module} BYTECODE bytecode inter/bytecode-module modules {module} BUILDING building inter/building-module modules {module} CODEGEN codegen inter/codegen-module modules {module} SUPERVISOR supervisor inbuild/supervisor-module modules # First, the tools we need to make, using the same declaration notation. # In the eventual makefile, the symbol NAMEWEB is the location of NAME; # the symbol NAMEMAKER is the individual make file for the tool; and # the symbol NAMEX is the actual executable which the tool compiles into. # After its declaration, we list all modules needed to compile the tool. {tool} INBLORB inblorb inblorb otools {tool} INDOC indoc indoc otools {tool} INFORM7 inform7 inform7 ctools {tool} INPOLICY inpolicy inpolicy otools {tool} INRTPS inrtps inrtps otools {tool} INBUILDTOOL inbuild inbuild ctools {tool} INTERTOOL inter inter ctools # Inform 6 is not a web, so we have to give it special treatment: INFORM6X = inform6/Tangled/inform6 # While these are also executables, they only provide unit tests for modules: {tool} SYNTAXTEST syntax-test services/syntax-test utools {tool} WORDSTEST words-test services/words-test utools {tool} ARCHTEST arch-test services/arch-test utools {tool} INFLECTIONSTEST inflections-test services/inflections-test utools {tool} LINGUISTICSTEST linguistics-test services/linguistics-test utools {tool} PROBLEMSTEST problems-test services/problems-test utools {tool} BUILDINGTEST building-test inter/building-test utools # And here are other webs: {web} BASICINFORMKIT BasicInformKit inform7/Internal/Inter/BasicInformKit kits {web} WORLDMODELKIT WorldModelKit inform7/Internal/Inter/WorldModelKit kits {web} COMMANDPARSERKIT CommandParserKit inform7/Internal/Inter/CommandParserKit kits {web} BASICINFORMEXTRASKIT BasicInformExtrasKit inform7/Internal/Inter/BasicInformExtrasKit kits {web} ENGLISHLANGUAGEKIT EnglishLanguageKit inform7/Internal/Inter/EnglishLanguageKit kits {web} STANDARDRULES standard_rules inform7/extensions/standard_rules extensions {web} BASICINFORM basic_inform inform7/extensions/basic_inform extensions # ----------------------------------------------------------------------------- # Targets "all" and "force" # ----------------------------------------------------------------------------- # "make all", the default target, incrementally makes the tools; "make force" # makes everything, disregarding all timestamps on files. .PHONY: all all: tools kits srules localintegration .PHONY: force force: forcetools forcekits forcesrules localintegration .PHONY: localintegration localintegration: inform7/Internal/Languages/English/Syntax.preform inform7/Internal/Languages/English/Syntax.preform: inform7/Tangled/Syntax.preform cp -f 'inform7/Tangled/Syntax.preform' "inform7/Internal/Languages/English/Syntax.preform" # (Of course those other four phony targets are yet to be defined.) # ----------------------------------------------------------------------------- # Target "makers" # ----------------------------------------------------------------------------- # Each individual tool has its own makefile, stored inside its individual web. # "make makers" runs through each tool in turn and creates this makefile. # Note the repeat-tools-block feature: the line in the block is repeated once for each # defined tool. Inside the block, an asterisk expands to the tool's symbol # name: so for example, for inblorb, *WEB would become INBLORBWEB. .PHONY: makers 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 # ----------------------------------------------------------------------------- # Target "gitignores" # ----------------------------------------------------------------------------- # Each individual web needs its own .gitignore file, and this makes them. .PHONY: gitignores gitignores: $(INWEBX) -prototype scripts/gitignorescript.txt -gitignore .gitignore {repeat-tools-block:all} $(INWEBX) $(@WEB) -gitignore $(@WEB)/.gitignore {end-block} $(INWEBX) -prototype inform6/gitignorescript.txt -gitignore inform6/.gitignore # ----------------------------------------------------------------------------- # Target "versions" # ----------------------------------------------------------------------------- # Asks the tools their current version numbers. .PHONY: versions versions: {repeat-tools-block:all} $(@X) -version {end-block} $(INFORM6X) -V # ----------------------------------------------------------------------------- # Targets "srules" and "forcesrules" # ----------------------------------------------------------------------------- # The Standard Rules extension is generated from a web (though it is not a # C program), and needs its own individual handling. "make srules" updates # this if need be; "make forcesrules" updates it regardless. SRULES = inform7/Internal/Extensions/Graham\ Nelson/Standard\ Rules.i7x BINFORM = inform7/Internal/Extensions/Graham\ Nelson/Basic\ Inform.i7x .PHONY: srules srules: $(SRULES) $(SRULES): inform7/extensions/standard_rules/Contents.w inform7/extensions/standard_rules/Sections/*.w inform7/extensions/basic_inform/Contents.w inform7/extensions/basic_inform/Sections/*.w $(INWEBX) inform7/extensions/standard_rules -tangle-to $(SRULES) $(INWEBX) inform7/extensions/basic_inform -tangle-to $(BINFORM) .PHONY: forcesrules forcesrules: $(INWEBX) inform7/extensions/standard_rules -tangle-to $(SRULES) $(INWEBX) inform7/extensions/basic_inform -tangle-to $(BINFORM) # ----------------------------------------------------------------------------- # Targets "kits" and "forcekits" # ----------------------------------------------------------------------------- # These are easy because Inbuild performs a make-like service on them; that # saves a great deal of messy make code here. .PHONY: kits kits: $(INBUILDX) -build -contents-of inform7/Internal/Inter .PHONY: forcekits forcekits: $(INBUILDX) -rebuild -contents-of inform7/Internal/Inter # ----------------------------------------------------------------------------- # Target "tools" # ----------------------------------------------------------------------------- # "make tools" builds all of the tools incrementally, i.e., only as necessary. # Note the use of repeat to make a list: $(INBLORBX) $(INDOCX) ..., etc. .PHONY: tools tools: {repeat-tools-span}$(@X){end-span} $(INFORM6X) {repeat-tools-block:all} $(@X): {dependent-files-for-tool-and-modules}@ $(MAKE) -f $(@MAKER) {end-block} # As ever, Inform 6 needs special handling: $(INFORM6X): inform6/Inform6/*.c $(MAKE) -f inform6/inform6.mk # ----------------------------------------------------------------------------- # Target "retrospective" # ----------------------------------------------------------------------------- # "make retrospective" builds the back catalogue of old releases of ni and # cBlorb, in the retrospective/BBBB directories (where BBBB is the release # build code) .PHONY: retrospective retrospective: $(MAKE) -f retrospective/makefile # ----------------------------------------------------------------------------- # Target "forcetools" # ----------------------------------------------------------------------------- # Similarly, but with a single target, since nothing is incremental here. .PHONY: forcetools forcetools: {repeat-tools-block:all} $(MAKE) -f $(@MAKER) force $(MAKE) -f inform6/inform6.mk force {end-block} # ----------------------------------------------------------------------------- # Target "check" # ----------------------------------------------------------------------------- # "make check" invites the make file for every tool to run its own tests. # I6 must come first, because that guarantees the Z and Glulx interpreters # are safely built before we need them. # ----------------------------------------------------------------------------- .PHONY: check check: $(MAKE) -f inform6/inform6.mk test $(INPOLICYX) -silence -check-problems {repeat-tools-block:all} $(MAKE) -f $(@MAKER) test {end-block} # ----------------------------------------------------------------------------- # Target "tangle" # ----------------------------------------------------------------------------- # "make tangle", probably not very useful, tangles each web in turn. # ----------------------------------------------------------------------------- .PHONY: tangle tangle: $(call tangle-webs) define tangle-webs {repeat-tools-block:all} $(INWEBX) $(@WEB) -tangle {end-block} endef # ----------------------------------------------------------------------------- # Target "weave" # ----------------------------------------------------------------------------- # "make weave" weaves each web in turn. # ----------------------------------------------------------------------------- WEAVEOPTS = -weave sections .PHONY: weave weave: $(call weave-webs) define weave-webs {repeat-tools-block:all} $(INWEBX) $(@WEB) $(WEAVEOPTS) {end-block} endef # ----------------------------------------------------------------------------- # Target "commit" # ----------------------------------------------------------------------------- # "make commit" should be used only by the Benevolent Overlord of Inform. # It updates the build code and commits to the repository. # ----------------------------------------------------------------------------- .PHONY: commit commit: $(INWEBX) -advance-build-file build.txt $(INWEBX) -prototype scripts/READMEscript.txt -write-me README.md git commit -a # ----------------------------------------------------------------------------- # Target "pages" # ----------------------------------------------------------------------------- # "make pages" refreshes the GitHub Pages content in the docs folder. # ----------------------------------------------------------------------------- .PHONY: pages pages: icon readmepage prepages {repeat-tools-span}@PAGES{end-span} \ {repeat-modules-span}@MPAGES{end-span} morepages .PHONY: icon icon: mkdir -p docs mkdir -p docs/docs-assets cp -f docs-src/Inform.png docs/docs-assets .PHONY: forcepages forcepages: readmepage forceprepages {repeat-tools-span}@FORCEPAGES{end-span} \ {repeat-modules-span}@FORCEMPAGES{end-span} forcemorepages .PHONY: readmepage readmepage: $(INWEBX) -prototype scripts/READMEscript.txt -write-me README.md {repeat-tools-block:ctools} .PHONY: @PAGES @PAGES: docs/$(@LEAF)/index.html docs/$(@LEAF)/index.html: {dependent-files-for-tool-alone}@ rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave .PHONY: @FORCEPAGES @FORCEPAGES: rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} {repeat-tools-block:otools} .PHONY: @PAGES @PAGES: docs/$(@LEAF)/index.html docs/$(@LEAF)/index.html: {dependent-files-for-tool-alone}@ rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave .PHONY: @FORCEPAGES @FORCEPAGES: rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} {repeat-tools-block:utools} .PHONY: @PAGES @PAGES: docs/$(@LEAF)/index.html docs/$(@LEAF)/index.html: {dependent-files-for-tool-and-modules}@ rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave .PHONY: @FORCEPAGES @FORCEPAGES: rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} {repeat-modules-block:all} .PHONY: @MPAGES @MPAGES: docs/$(@LEAF)-module/index.html docs/$(@LEAF)-module/index.html: {dependent-files-for-module}@ rm -f docs/$(@LEAF)-module/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave .PHONY: @FORCEMPAGES @FORCEMPAGES: rm -f docs/$(@LEAF)-module/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} .PHONY: prepages prepages: docs/index.html docs/compiler.html docs/extensions.html docs/other.html docs/units.html docs/index.html: docs-src/index.inweb docs-src/nav.html $(INWEBX) -colony $(COLONY) -member overview -weave docs/compiler.html: docs-src/compiler.inweb docs-src/navc.html $(INWEBX) -colony $(COLONY) -member compiler -weave docs/extensions.html: docs-src/extensions.inweb docs-src/navk.html $(INWEBX) -colony $(COLONY) -member extensions -weave docs/other.html: docs-src/other.inweb docs-src/navo.html $(INWEBX) -colony $(COLONY) -member other -weave docs/units.html: docs-src/units.inweb docs-src/navu.html $(INWEBX) -colony $(COLONY) -member units -weave .PHONY: forceprepages forceprepages: rm -f docs/*.html $(INTESTX) inform7 GenerateDiagnostics-G cp -f inform7/Figures/syntax-diagnostics.txt inform7/Downloads/syntax-diagnostics.txt rm -f inform7/Figures/syntax-diagnostics.txt cp -f inform7/Figures/preform-diagnostics.txt inform7/Downloads/preform-diagnostics.txt rm -f inform7/Figures/preform-diagnostics.txt $(INWEBX) -colony $(COLONY) -member overview -weave $(INWEBX) -colony $(COLONY) -member compiler -weave $(INWEBX) -colony $(COLONY) -member extensions -weave $(INWEBX) -colony $(COLONY) -member other -weave $(INWEBX) -colony $(COLONY) -member units -weave .PHONY: morepages morepages: {repeat-webs-span}docs/$(@LEAF)/index.html{end-span} {repeat-webs-block:kits} docs/$(@LEAF)/index.html: {dependent-files-for-tool-alone}@ rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} {repeat-webs-block:extensions} docs/$(@LEAF)/index.html: {dependent-files-for-tool-alone}@ rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} .PHONY: forcemorepages forcemorepages: {repeat-webs-block:kits} rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} {repeat-webs-block:extensions} rm -f docs/$(@LEAF)/*.html $(INWEBX) -colony $(COLONY) -member $(@LEAF) -weave {end-block} # ----------------------------------------------------------------------------- # Target "clean" # ----------------------------------------------------------------------------- # "make clean" removes inessential files from the Inform source hierarchy # ----------------------------------------------------------------------------- .PHONY: clean clean: $(call clean-up) define clean-up {repeat-tools-block:all} $(MAKE) -f $(@MAKER) clean {end-block} $(MAKE) -f inform6/inform6.mk clean endef # ----------------------------------------------------------------------------- # Target "purge" # ----------------------------------------------------------------------------- # "make purge" cleans, but also removes binaries # ----------------------------------------------------------------------------- .PHONY: purge purge: $(call purge-up) define purge-up {repeat-tools-block:all} $(MAKE) -f $(@MAKER) purge {end-block} $(MAKE) -f inform6/inform6.mk purge endef # ----------------------------------------------------------------------------- # Target "ebooks" # ----------------------------------------------------------------------------- # "make ebooks" generates the two Inform ebook files in EPUB format. # One combines the manuals Writing with Inform and The Inform Recipe Book into # a single volume, while the other holds the collected change logs. # ----------------------------------------------------------------------------- .PHONY: ebooks ebooks: $(call clean-ebooks) $(INDOCX) -from resources/Documentation ebook $(call clean-ebooks) $(INDOCX) -from resources/Changes ebook $(call clean-ebooks) define clean-ebooks rm -f resources/Documentation/Output/OEBPS/images/* rm -f resources/Documentation/Output/OEBPS/*.* rm -f resources/Documentation/Output/META-INF/container.xml rm -f resources/Documentation/Output/mimetype rm -f resources/Documentation/Output/*.* rm -f resources/Changes/Output/OEBPS/images/* rm -f resources/Changes/Output/OEBPS/*.* rm -f resources/Changes/Output/META-INF/container.xml rm -f resources/Changes/Output/mimetype rm -f resources/Changes/Output/*.* endef # ----------------------------------------------------------------------------- # Targets "integration" and "forceintegration" # ----------------------------------------------------------------------------- # This copies material into the user interface application. # ----------------------------------------------------------------------------- ifdef BUILTINCOMPS INTOOLSBUILTIN = \ $(BUILTINCOMPS)/$(INBLORBNAME) \ $(BUILTINCOMPS)/$(INFORM6NAME) \ $(BUILTINCOMPS)/$(INFORM7NAME) \ $(BUILTINCOMPS)/$(INTESTNAME) SRULESINPLACE = $(INTERNAL)/Extensions/Graham\ Nelson/Standard\ Rules.i7x BINFORMINPLACE = $(INTERNAL)/Extensions/Graham\ Nelson/Basic\ Inform.i7x INTERNALEXEMPLUM = $(INTERNAL)/Miscellany/Cover.jpg INTERNALEXEMPLUMFROM = inform7/Internal/Miscellany/Cover.jpg IMAGESEXEMPLUM = $(BUILTINHTML)/doc_images/help.png IMAGESEXEMPLUMFROM = resources/Imagery/doc_images/help.png DOCEXEMPLUM = $(BUILTINHTMLINNER)/index.html RTPEXEMPLUM = $(BUILTINHTMLINNER)/RTP_P1.html .PHONY: integration integration: \ $(INTOOLSBUILTIN) \ $(INTERNAL)/Languages/English/Syntax.preform \ $(INTERNAL)/Languages/English/Standard.indext \ $(INTERNAL)/Languages/English/Basic.indext \ $(SRULESINPLACE) \ $(BINFORMINPLACE) \ kitsintegration \ $(DOCEXEMPLUM) \ $(INTERNALEXEMPLUM) \ $(IMAGESEXEMPLUM) \ $(RTPEXEMPLUM) .PHONY: kitsintegration kitsintegration: $(call transfer-kits) .PHONY: forceintegration forceintegration: $(call transfer-intools) $(call transfer-preform) $(call transfer-standard-rules) $(call transfer-kits) $(call transfer-internal-tree) $(call transfer-images) $(call make-inapp-documentation) $(call make-inapp-outcome-pages) # (a) Copying necessary intools into the app # Only the following intools are present in the UI app at run-time: inblorb, # inform6, inform7, intest. All can have different names there. $(BUILTINCOMPS)/$(INBLORBNAME): $(INBLORBX) mkdir -p $(BUILTINCOMPS) cp -f $(INBLORBX) $(BUILTINCOMPS)/$(INBLORBNAME) $(BUILTINCOMPS)/$(INFORM6NAME): inform6/Tangled/inform6 $(MAKE) -f inform6/inform6.mk mkdir -p $(BUILTINCOMPS) cp -f $(INFORM6X) $(BUILTINCOMPS)/$(INFORM6NAME) $(BUILTINCOMPS)/$(INFORM7NAME): $(INFORM7WEB)/Tangled/inform7 $(MAKE) -f $(INFORM7MAKER) mkdir -p $(BUILTINCOMPS) cp -f $(INFORM7X) $(BUILTINCOMPS)/$(INFORM7NAME) $(BUILTINCOMPS)/intest: $(INTESTWEB)/Tangled/intest cd ..; $(MAKE) -f intest/intest.mk; cd inform mkdir -p $(BUILTINCOMPS) cp -f $(INTESTWEB)/Tangled/intest $(BUILTINCOMPS)/intest define transfer-intools mkdir -p $(BUILTINCOMPS) cp -f $(INBLORBX) $(BUILTINCOMPS)/$(INBLORBNAME) cp -f $(INFORM6X) $(BUILTINCOMPS)/$(INFORM6NAME) cp -f $(INFORM7X) $(BUILTINCOMPS)/$(INFORM7NAME) cp -f $(INTESTX) $(BUILTINCOMPS)/intest endef # (b) Copying Preform definition and index things into the app $(INTERNAL)/Languages/English/Syntax.preform: $(INFORM7WEB)/Tangled/Syntax.preform $(call transfer-preform) $(INFORM7WEB)/Tangled/Syntax.preform: $(MAKE) -f $(INFORM7MAKER) $(INTERNAL)/Languages/English/Standard.indext: inform7/Internal/Languages/English/Standard.indext $(call transfer-preform) $(INTERNAL)/Languages/English/Basic.indext: inform7/Internal/Languages/English/Basic.indext $(call transfer-preform) define transfer-preform cp -f 'inform7/Tangled/Syntax.preform' "$(INTERNAL)/Languages/English/Syntax.preform" cp -f 'inform7/Tangled/Syntax.preform' "inform7/Internal/Languages/English/Syntax.preform" cp -f 'inform7/Internal/Languages/English/Standard.indext' "$(INTERNAL)/Languages/English/Standard.indext" cp -f 'inform7/Internal/Languages/English/Basic.indext' "$(INTERNAL)/Languages/English/Basic.indext" endef # (c) Copying the Standard Rules into the app $(SRULESINPLACE): $(SRULES) $(call transfer-standard-rules) define transfer-standard-rules mkdir -p "$(INTERNAL)/Extensions/Graham Nelson" cp $(SRULES) $(SRULESINPLACE) $(call transfer-xefs) endef $(BINFORMINPLACE): $(BINFORM) $(call transfer-basic-inform) define transfer-basic-inform mkdir -p "$(INTERNAL)/Extensions/Graham Nelson" cp $(BINFORM) $(BINFORMINPLACE) $(call transfer-xefs) endef define transfer-xefs mkdir -p "$(INTERNAL)/HTML" cp -f inform7/Internal/HTML/xrefs.txt "$(INTERNAL)/HTML" endef # (d) Copying kits and pipelines into the app define transfer-kits $(INBUILDX) -sync-to $(INTERNAL) -contents-of inform7/Internal/Inter $(INBUILDX) -sync-to $(INTERNAL) -contents-of inform7/Internal/Pipelines endef # (e) Copying internal resources into the app # The Internal tree also holds built-in extensions, web interpreters and so on. # In effect, it's a repository in the UI app of non-executable resources: $(INTERNALEXEMPLUM): \ inform7/Internal/Extensions/Eric\ Eve/[A-Za-z]* \ inform7/Internal/Extensions/Emily\ Short/[A-Za-z]* \ inform7/Internal/Extensions/Graham\ Nelson/[A-Za-z]* \ inform7/Internal/Miscellany/[A-Za-z]*.* \ inform7/Internal/HTML/[A-Za-z]*.* \ inform7/Internal/Templates/Parchment/[A-Za-z]*.* \ inform7/Internal/Templates/Quixe/[A-Za-z]*.* \ inform7/Internal/Templates/Classic/[A-Za-z]*.* \ inform7/Internal/Templates/Vorple/[A-Za-z]*.* \ inform7/Internal/Templates/Standard/[A-Za-z]*.* $(call transfer-internal-tree) define transfer-internal-tree touch $(INTERNALEXEMPLUMFROM) mkdir -p $(INTERNAL) mkdir -p "$(INTERNAL)/Extensions/Eric Eve" rm -f $(INTERNAL)/Extensions/Eric\ Eve/* mkdir -p "$(INTERNAL)/Extensions/Emily Short" rm -f $(INTERNAL)/Extensions/Emily\ Short/* mkdir -p "$(INTERNAL)/Extensions/Graham Nelson" rm -f $(INTERNAL)/Extensions/Graham\ Nelson/* cp -R -f inform7/Internal/Extensions $(INTERNAL)/Extensions/.. mkdir -p "$(INTERNAL)/Languages" mkdir -p "$(INTERNAL)/Languages/English" mkdir -p "$(INTERNAL)/Languages/French" mkdir -p "$(INTERNAL)/Languages/German" mkdir -p "$(INTERNAL)/Languages/Italian" mkdir -p "$(INTERNAL)/Languages/Spanish" cp -R -f inform7/Internal/Languages $(INTERNAL)/Languages/.. mkdir -p "$(INTERNAL)/Templates" mkdir -p "$(INTERNAL)/Templates/Standard" rm -f $(INTERNAL)/Templates/Standard/* mkdir -p "$(INTERNAL)/Templates/Classic" rm -f $(INTERNAL)/Templates/Classic/* mkdir -p "$(INTERNAL)/Templates/Parchment" rm -f $(INTERNAL)/Templates/Parchment/* mkdir -p "$(INTERNAL)/Templates/Quixe" rm -f $(INTERNAL)/Templates/Quixe/* mkdir -p "$(INTERNAL)/Templates/Vorple" rm -f $(INTERNAL)/Templates/Vorple/* cp -R -f inform7/Internal/Templates $(INTERNAL)/Templates/.. mkdir -p "$(INTERNAL)/Miscellany" rm -f $(INTERNAL)/Miscellany/* cp -R -f inform7/Internal/Miscellany $(INTERNAL)/Miscellany/.. mkdir -p "$(INTERNAL)/HTML" rm -f $(INTERNAL)/HTML/* cp -R -f inform7/Internal/HTML $(INTERNAL)/HTML/.. endef # (f) Copying images into the app $(IMAGESEXEMPLUM): \ resources/Imagery/app_images/[A-Za-z]*.* \ resources/Imagery/bg_images/[A-Za-z]*.* \ resources/Imagery/doc_images/[A-Za-z]*.* \ resources/Imagery/map_icons/[A-Za-z]*.* \ resources/Imagery/outcome_images/[A-Za-z]*.* \ resources/Imagery/scene_icons/[A-Za-z]*.* $(call transfer-images) define transfer-images touch $(IMAGESEXEMPLUMFROM) cp -f resources/Imagery/app_images/Welcome*Background.png $(BUILTINHTML) mkdir -p $(BUILTINHTML)/bg_images rm -f $(BUILTINHTML)/bg_images/* cp -f resources/Imagery/bg_images/[A-Za-z]*.* $(BUILTINHTML)/bg_images mkdir -p $(BUILTINHTML)/doc_images rm -f $(BUILTINHTML)/doc_images/* cp -f resources/Imagery/doc_images/[A-Za-z]*.* $(BUILTINHTML)/doc_images mkdir -p $(BUILTINHTML)/map_icons rm -f $(BUILTINHTML)/map_icons/* cp -f resources/Imagery/map_icons/[A-Za-z]*.* $(BUILTINHTML)/map_icons mkdir -p $(BUILTINHTML)/outcome_images rm -f $(BUILTINHTML)/outcome_images/* cp -f resources/Imagery/outcome_images/[A-Za-z]*.* $(BUILTINHTML)/outcome_images mkdir -p $(BUILTINHTML)/scene_icons rm -f $(BUILTINHTML)/scene_icons/* cp -f resources/Imagery/scene_icons/[A-Za-z]*.* $(BUILTINHTML)/scene_icons endef # (g) Typesetting documentation to HTML inside the app $(DOCEXEMPLUM): resources/Documentation/*.txt resources/Documentation/Examples/*.txt $(call make-inapp-documentation) define make-inapp-documentation mkdir -p "$(INTERNAL)/Documentation" mkdir -p $(BUILTINHTMLINNER) $(INDOCX) -from resources/Documentation -xrefs 'inform7/Internal/HTML/xrefs.txt' $(INDOCOPTS) endef # (h) Typesetting the HTML pages used to display run-time problem messages $(RTPEXEMPLUM): resources/Outcome*Pages/texts.txt resources/Outcome*Pages/*.html $(call make-inapp-outcome-pages) define make-inapp-outcome-pages $(INRTPSX) resources/Outcome\ Pages $(BUILTINHTMLINNER) $(INRTPSOPTS) cp -f resources/Outcome\ Pages/pl404.html $(BUILTINHTMLINNER) endef endif # -----------------------------------------------------------------------------