Ok ... So I probably invested yet another day in cleaning things up, but still 
I can't report any success.
While in the flex-falcon module all seems to be ok and working nicely in the 
flex-asjs I am having great problems. So instead of asking 10000000 questions 
after another, I'll try to aggregate all into this one mail:

1. COMPJSC is the JavaScript counterpart to COMPC for compiling libraries?
1a) If it is, shouldn't it compile all classes in the project as libraries 
don't contain Application entry points from which you could start scanning 
which classes are referenced. Anyway you usually want everything in a library 
to go in the SWC. This is the behaviour I am experiencing
1b) As far as I understood it, with MXMLC you could force it to include files 
it would have left away because it thought the class was not referenced.
1c) If COMPJSC should work more like MXMLC, which is the switch that changes 
the way it works in the Ant build?

2. The execution code in Ant for doing the JavaScript compilation is:
        <java jar="${FALCONJX_HOME}/lib/compc.jar" fork="true" >
            <jvmarg value="-Xmx384m" />
            <jvmarg value="-Dsun.io.useCanonCaches=false" />
            <jvmarg value="-Dflexcompiler=${FALCONJX_HOME}/../compiler" />
            <jvmarg value="-Dflexlib=${FLEXJS_HOME}/frameworks" />
            <arg value="+flexlib=${FLEX_HOME}/frameworks" />
            <arg value="-js-output-type=FLEXJS" />
            <arg value="-keep-asdoc" /><!-- allows compiler to see 
@flexjsignorecoercion annotations -->
            <arg value="-output=${basedir}/target/generated-sources/flexjs" />
            <arg value="-load-config=${basedir}/target/compile-js-config.xml" />
            <arg value="+playerglobal.version=${playerglobal.version}" />
            <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
            <arg value="+env.AIR_HOME=${env.AIR_HOME}" />
            <arg value="-external-library-path+=${JS.SWC}" />
            <!-- this is not on external-library path otherwise goog.requires 
are not generated -->
            <arg value="-library-path+=${GCL.SWC}" />
            <arg value="-define=COMPILE::AS3,false" />
            <arg value="-define=COMPILE::JS,true" />
        </java>
2a) Why is one framework directory passed in using a Java variable and the 
other one as a compiler argument?
2b) Are both needed?
2c) What are they needed for? Couldn't the manifest files be referenced in 
another way?
2d) Why are  playerglobal.version, env.PLAYERGLOBAL_HOME, env.AIR_HOME needed?
2e) Is it ok that I create up to 4 config files during the build (externc AS 
generation from JavaScript), JavaScript generation from ActionScript, 
ActionScript compilation for SWC, ActionScript compilation for extern SWC and 
move: the defines, output, library additions, external library additions, 
keep-output into these and not provide them as arguments to the compiler.
2f) What is the compiler argument "flexcompiler" used for? If I look at COMPJSC 
I can't see why we need such a property? I couldn't even see a reference to 
"flexcompiler" anywhere in the code?
2g) Is there a way to configure the js-output-type in the config.xml? I would 
like to reduce the call to the compiler to just passing in the path of the 
config file.
2h) Is there a way to configure the "keep-as-doc" in the config.xml?

3: The config-xmls contain some library declarations, and then for each usage 
some others are added using command line arguments. Which libraries are 
actually needed in which step. If I include both the SWC and externSWC we have 
double declarations of most classes, which causes problems.
3a) I am currently following the approach that I have double dependencies to a 
module ... once as normal SWC dependency and a second one with 
"classifier=extern". Then I generate the list of libraries by filtering out the 
non extern libs for JS=true compilations and I filter out the externs for 
AS=true ... is this a valid approach?

4: A lot of files contain duplicate imports of the same class, but with 
different packages (Mainly the class "Event") I am getting compilation errors 
because of ambiguous type declarations, which I find an absolutely valid error 
message
4a) Why doesn't the Ant build get these errors?

5: If you look at classes like IFlexJSElement.as ... I can't imagine why it has 
to be that complicated, except that the JS version had one property, that was 
removed, but none bothered to clean up the file. There seem to be code-elements 
like this all over the place.

I would have tried to run the Ant build and compare that with Maven, but today 
seems to be a Bad-Build-Day ... I gave up to compile the project after about 2 
hours of wasted time. Currently it seems that I am unable to build flex-asjs 
with Ant.

.... Well it's not the 1000000 Questions I mentioned at the beginning, but I'm 
just stopping here for now. 

Chris




________________________________________
Von: Alex Harui <aha...@adobe.com>
Gesendet: Mittwoch, 4. Mai 2016 08:47:07
An: dev@flex.apache.org
Betreff: Re: AW: AW: AW: [FLEXJS] Problem compiling Core extern

On 5/3/16, 10:58 PM, "Christofer Dutz" <christofer.d...@c-ware.de> wrote:

>
>Hi Alex,
>
>I am actually having problems on all levels. When compiling the
>JavaScript from the ActionScript I have a problem with CSSTextField as
>this is missing the TextField declaration. If I comment out the
>COMPILE::JS it works ... this is the same problem I am having for
>compiling the extern for Core.
>
>The Problem I am having with compiling the ActionScript code to SWC is in
>ApplicationBase in code that's marked COMPILE::AS3 so I guess in general
>I am piping the right code into the different parts of the compiler.

Let's try this:  In the Ant builds, the steps are (and this is different
than the actual placement of targets in the build.xml):

1) compjsc + js.swc (no playerglobal or airglobal) + COMPILE::AS3,false +
COMPILE::JS,true + compile-js-config.xml -> pile of JS files
2) compc + js.swc (no playerglobal or airglobal) + COMPILE::AS3,false +
COMPILE::JS,true + compile-js-config.xml -> externs SWC
3) compc + (playerglobal or airglobal) + COMPILE::AS3,true +
COMPILE::JS,false + compile-as-config.xml -> "final SWC"

It seems like you are still compiling every file in the folder instead of
the ones specified by the -manifest.xml and XXXClasses.as file, and I'd
guess that you are using JS.SWC with COMPILE::AS3,true

HTH,
-Alex

Reply via email to