updated to fix several bugs + now handles compiling swf10 lzo's linked against external lzo's.
Change 20100520-hqm-Q by [email protected] on 2010-05-20 01:30:13 EDT in /Users/hqm/openlaszlo/trunk for http://svn.openlaszlo.org/openlaszlo/trunk Summary: make lzo files include platform-specific library object code New Features: Bugs Fixed: Technical Reviewer: ptw QA Reviewer: max Doc Reviewer: (pending) Documentation: Release Notes: Overview: + lzo files are now implemented as zip archives, and contain optional .swc (flash 10) and .js (dhtml) object code files When targeting swf10 and dhtml, the if the compiler sees the platform-specific entry in the lzo file, it will link against it directly, rather than compiling the lzs script code block from the lzo. + new comand line arg added to lzc, "--lzolibs". Takes a comma separated list of external lzo files to link against when building your own lzo library. This will be needed by the swf10 backend when resolving externals from other swf-10-binary-compiled lzo libs (like maybe the lz components library someday). Details: *** utils/FileUtils.java: makeXMLReaderForFile() modified to understand new zipfile format for lzo files. This scans through and returns the generic LZX file portion of the lib (as opposed to the optional binary-runtime-specific entries) *** compiler/ScriptElementCompiler.java: Check if the lzo has a precompiled object file entry for the target runtime, and if the compiler options match, and if so, use it instead of the lzs script block. *** /sc/JavascriptGenerator.java: Add a ';' to the end of a block of javascript output, if it does not already have one *** sc/SWF10Compiler.java: Don't generate application framework boilerplate code if we're just building a library. *** sc/SWF9External.java (revision 16441) Make compileTranslationUnits() accept optional list of external swc libs to link against *** sc/DHTMLCompiler.java (revision 16441) Add hook to allow copying raw byte stream to output, so we can insert DHTML-specific precompiled javascript from lzo lib if available. *** compiler/ObjectWriter.java (working copy) added schemaDone() API, called by compiler when the schema has been computed (all classes have been entered into class map) *** compiler/DHTMLWriter.java (working copy) If an lzo is being used and is contains a fully-compiled DHTML object file, append that to the compiler output verbatim. *** compiler/CanvasCompiler.java (working copy) moved code that adds Flash8 LFC to the SWFWriter *** compiler/LibraryWriter.java (working copy) Write out zipfile format archives for lzo libraries. If runtime targets are specified (e.g., "lzc -c --runtimes=swf10,dhtml"), we create ObjectWriters for SWF10 and/or DHTML, so that we compile runtime-specific object code and store it in entries in the lzo. This will speed up compiling/linking lzo's for DHTML and SWF10. Calls to addScript are forwarded to the runtime-specific ObjectWriters if they are present. Tests: ant lztest smokecheck swf10/dhtml amazon in dhtml/swf10 test case in test/lzotest: compile the libraries below with these flags lzc -c --runtime=swf10,dhtml extclass.lzx lzc -c --runtime=swf10,dhtml libdir/lib1.lzx ## test compiling a swf10 lzo which subclasses something from an external lzo library lzc -c --runtime=swf10,dhtml --lzolibs extclass.lzo libdir/lib2.lzx then compile main app for all runtimes lzc --runtime=swf8 main.lzx lzc --runtime=swf10 main.lzx lzc --runtime=dhtml main.lzx also compile via the LPS server http://127.0.0.1:8080/trunk/test/testlzo/main.lzx?lzr=swf10&debug=true http://127.0.0.1:8080/trunk/test/testlzo/main.lzx?lzr=swf10 Files: A test/testlzo A test/testlzo/main.lzx A test/testlzo/extclass.lzx A test/testlzo/libdir A test/testlzo/libdir/lib1.lzx A test/testlzo/libdir/lib2.lzx M WEB-INF/lps/server/src/org/openlaszlo/utils/FileUtils.java M WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF10Compiler.java M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java M WEB-INF/lps/server/src/org/openlaszlo/sc/DHTMLCompiler.java M WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/ObjectWriter.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/DHTMLWriter.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/ResourceCompiler.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFWriter.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryWriter.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/FileResolver.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/IntermediateWriter.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/ScriptElementCompiler.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/Main.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java M WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20100520-hqm-Q.tar
