-- <<<- ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Load this build script "!mkinter.sx" into a fresh invocation of ScriptX, -- to compile the interface modules and build the "dream.sxl" library. -- The Tracking, Animation, and Dream interface modules are stored in -- this LibraryContainer. -- The Dream title "dream.sxt", the implementation library "dreamimp.sxl", -- as well as the build scripts "!mkstart.sx", "!mkrooms.sx", and -- "!mkprods.sx", all depend on "dream.sxl". ( local startTime := theCalendarClock.time -- Save the directory that this script was loaded from. local dir := theScriptDir -- Subdue the garbage collector. setGCIncrement 30 -- Compile the interface modules. for fileName in #( "anim.sx", -- Animation interface module "track.sx", -- Tracking interface module "dream.sx" -- Dream interface module ) do ( print #("Loading interface module", fileName) fileIn dir \ name: fileName \ debugInfo: false garbageCollect() ) -- Create the "dream.sxl" LibraryContainer. local theLib := new LibraryContainer \ dir: (parentDir dir) \ path: "dream.sxl" \ targetCollection: #(:) -- Stuff the modules into it. for moduleName in #( @Animation, @Tracking, @Dream ) do ( print moduleName theLib[moduleName] := (getModule moduleName) ) -- Give it a name. theLib.name := "Dream Interface Modules" -- The startupAction will load all of the modules. theLib.startupAction := fileIn "(self -> for i in self do load i )" module: (getModule @Dream) -- Flush hard, it's a long way to the cafeteria. close theLib local endTime := theCalendarClock.time print #("Time for !mkinter", endTime - startTime) ok ) ------------------------------------------------------------------------ -- >>>