You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2017/11/15 20:58:21 UTC

[royale-compiler] 05/05: no errors on compiler-common and compiler-externc. Now to get everything to build and run

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch feature/rename
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit e5e6d6f3b867fc82aa649b1d5bbaa651aeb4c636
Author: Alex Harui <ah...@apache.org>
AuthorDate: Wed Nov 15 12:55:41 2017 -0800

    no errors on compiler-common and compiler-externc.  Now to get everything to build and run
---
 .../java/org/apache/royale/abc/ABCConstants.java   |   0
 .../java/org/apache/royale/abc/semantics/Name.java |   0
 .../org/apache/royale/abc/semantics/Namespace.java |   0
 .../org/apache/royale/abc/semantics/Nsset.java     |   0
 .../clients/problems/CodeGenErrorFilter.java       |   6 +-
 .../problems/CompilerProblemCategorizer.java       |   0
 .../problems/ProblemFilterClassCriteria.java       |   0
 .../compiler/clients/problems/ProblemQuery.java    |  14 +-
 .../clients/problems/ProblemSettingsFilter.java    |   0
 .../royale/compiler/common/IPathResolver.java      |   0
 .../apache/royale/compiler/common/VersionInfo.java |   0
 .../compiler/config/CommandLineConfigurator.java   |   0
 .../royale/compiler/config/Configuration.java      |   0
 .../compiler/config/ConfigurationBuffer.java       |   0
 .../royale/compiler/config/ConfigurationInfo.java  |   0
 .../compiler/config/ConfigurationPathResolver.java |   0
 .../royale/compiler/config/ConfigurationValue.java |   0
 .../royale/compiler/config/Configurator.java       | 234 ++-------------------
 .../compiler/config/ICompilerProblemSettings.java  |   0
 .../config/ICompilerSettingsConstants.java         |   0
 .../compiler/constants/IASWarningConstants.java    |   0
 .../exceptions/ConfigurationException.java         |   0
 .../compiler/filespecs/BaseFileSpecification.java  |   0
 .../royale/compiler/filespecs/CombinedFile.java    |   0
 .../compiler/filespecs/FileSpecification.java      |   0
 .../filespecs/IBinaryFileSpecification.java        |   0
 .../internal/config/COMPCConfiguration.java        |   0
 .../internal/config/CompilerProblemSettings.java   |   0
 .../internal/config/DefaultsConfigurator.java      |   0
 .../compiler/internal/config/FileConfigurator.java |   0
 .../internal/config/FlashBuilderConfigurator.java  |   0
 .../internal/config/ICompilerSettings.java         |   0
 .../internal/config/IConfigurationFilter.java      |   0
 .../compiler/internal/config/IConfigurator.java    |   4 +-
 .../internal/config/IWriteOnlyProjectSettings.java |   0
 .../internal/config/LoadExternsParser.java         |   0
 .../internal/config/QNameNormalization.java        |   0
 .../internal/config/RSLArgumentNameGenerator.java  |   0
 .../config/RuntimeSharedLibraryPathInfo.java       |   0
 .../config/SystemPropertyConfigurator.java         |   0
 .../compiler/internal/config/TargetSettings.java   |  15 +-
 .../config/annotations/ArgumentNameGenerator.java  |   0
 .../internal/config/annotations/Arguments.java     |   0
 .../internal/config/annotations/Config.java        |   0
 .../config/annotations/DefaultArgumentValue.java   |   0
 .../config/annotations/DeprecatedConfig.java       |   0
 .../config/annotations/InfiniteArguments.java      |   0
 .../internal/config/annotations/Mapping.java       |   0
 .../internal/config/annotations/RoyaleOnly.java    |   0
 .../config/annotations/SoftPrerequisites.java      |   0
 .../config/localization/ILocalizedText.java        |   0
 .../internal/config/localization/ILocalizer.java   |   0
 .../config/localization/LocalizationManager.java   |   0
 .../localization/ResourceBundleLocalizer.java      |   0
 .../internal/config/localization/package.html      |   0
 .../royale/compiler/internal/config/package.html   |   0
 .../internal/mxml/MXMLNamespaceMapping.java        |   0
 .../compiler/mxml/IMXMLNamespaceMapping.java       |   0
 .../royale/compiler/mxml/IMXMLTypeConstants.java   |   0
 .../problems/ANELibraryNotAllowedProblem.java      |   0
 .../problems/AbstractDeprecatedAPIProblem.java     |   0
 .../compiler/problems/AbstractSemanticProblem.java |   0
 .../royale/compiler/problems/ArrayCastProblem.java |   0
 .../problems/AssignmentInConditionalProblem.java   |   0
 .../compiler/problems/CodegenInternalProblem.java  |   0
 .../royale/compiler/problems/CodegenProblem.java   |   0
 .../compiler/problems/ConfigurationProblem.java    |   0
 .../problems/ConstNotInitializedProblem.java       |   0
 .../royale/compiler/problems/DateCastProblem.java  |   0
 .../DeprecatedConfigurationOptionProblem.java      |   0
 .../DuplicateQNameInSourcePathProblem.java         |   0
 .../DuplicateVariableDefinitionProblem.java        |   0
 .../problems/IOperandStackUnderflowProblem.java    |  10 +-
 .../royale/compiler/problems/IParserProblem.java   |  10 +-
 .../problems/IllogicalComparionWithNaNProblem.java |   0
 .../IllogicalComparisonWithUndefinedProblem.java   |   0
 .../compiler/problems/InstanceOfProblem.java       |   0
 .../NullUsedWhereOtherExpectedProblem.java         |   0
 .../problems/OverlappingSourcePathProblem.java     |   0
 .../RemovedConfigurationOptionProblem.java         |   0
 .../RoyaleOnlyConfigurationOptionNotSupported.java |   0
 .../problems/ScopedToDefaultNamespaceProblem.java  |   0
 .../royale/compiler/problems/SemanticProblem.java  |   0
 .../compiler/problems/SemanticWarningProblem.java  |   0
 .../compiler/problems/StrictSemanticsProblem.java  |   0
 .../compiler/problems/UnfoundPropertyProblem.java  |   0
 .../problems/UnresolvedClassReferenceProblem.java  |   0
 .../VariableHasNoTypeDeclarationProblem.java       |   0
 .../collections/CompositeProblemFilter.java        |   0
 .../problems/collections/FilteredIterator.java     |   0
 .../compiler/problems/collections/package.html     |   0
 .../apache/royale/compiler/utils/NodeJSUtils.java  |   0
 .../apache/royale/swc/catalog/XMLFormatter.java    |   0
 .../royale/utils/DAByteArrayOutputStream.java      |   0
 .../org/apache/royale/utils/ExceptionUtil.java     |   0
 .../java/org/apache/royale/utils/FileUtils.java    |   0
 .../main/java/org/apache/royale/utils/Trace.java   |   0
 compiler-externc/build.xml                         |  10 +-
 .../javascript/jscomp/JXCompilerOptions.java       |   0
 .../compiler/clients/ExternCConfiguration.java     |   0
 .../internal/codegen/externals/DummyNode.java      | 174 +++++++++++++++
 .../externals/pass/AbstractCompilerPass.java       |   0
 .../codegen/externals/pass/AddMemberPass.java      |   0
 .../codegen/externals/pass/CollectImportsPass.java |   0
 .../codegen/externals/pass/CollectTypesPass.java   |   0
 .../externals/pass/NamespaceResolutionPass.java    |   4 +-
 .../externals/pass/ResolvePackagesPass.java        |   0
 .../codegen/externals/reference/BaseReference.java |   0
 .../externals/reference/ClassReference.java        |   4 +-
 .../externals/reference/ConstantReference.java     |   0
 .../externals/reference/FieldReference.java        |   0
 .../externals/reference/FunctionReference.java     |   0
 .../externals/reference/MemberReference.java       |   0
 .../externals/reference/MethodReference.java       |   0
 .../reference/NullConstructorReference.java        |   0
 .../externals/reference/ParameterReference.java    |   0
 .../codegen/externals/utils/DebugLogUtils.java     |   0
 .../codegen/externals/utils/FunctionUtils.java     |   0
 .../codegen/externals/utils/JSTypeUtils.java       |   0
 .../apache/royale/compiler/clients/MXMLJSC.java    |   2 +-
 .../internal/config/RoyaleTargetSettings.java      |  69 ++++++
 .../projects/RoyaleProjectConfigurator.java        | 230 +++++++++++++++++++-
 .../problems/InvalidByteCodeGeneratedProblem.java  |   9 +-
 .../problems/OperandStackUnderflowProblem.java     |   5 +-
 .../royale/compiler/problems/ParserProblem.java    |   2 +-
 125 files changed, 540 insertions(+), 262 deletions(-)

diff --git a/compiler/src/main/java/org/apache/royale/abc/ABCConstants.java b/compiler-common/src/main/java/org/apache/royale/abc/ABCConstants.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/abc/ABCConstants.java
rename to compiler-common/src/main/java/org/apache/royale/abc/ABCConstants.java
diff --git a/compiler/src/main/java/org/apache/royale/abc/semantics/Name.java b/compiler-common/src/main/java/org/apache/royale/abc/semantics/Name.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/abc/semantics/Name.java
rename to compiler-common/src/main/java/org/apache/royale/abc/semantics/Name.java
diff --git a/compiler/src/main/java/org/apache/royale/abc/semantics/Namespace.java b/compiler-common/src/main/java/org/apache/royale/abc/semantics/Namespace.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/abc/semantics/Namespace.java
rename to compiler-common/src/main/java/org/apache/royale/abc/semantics/Namespace.java
diff --git a/compiler/src/main/java/org/apache/royale/abc/semantics/Nsset.java b/compiler-common/src/main/java/org/apache/royale/abc/semantics/Nsset.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/abc/semantics/Nsset.java
rename to compiler-common/src/main/java/org/apache/royale/abc/semantics/Nsset.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/CodeGenErrorFilter.java b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/CodeGenErrorFilter.java
similarity index 89%
rename from compiler/src/main/java/org/apache/royale/compiler/clients/problems/CodeGenErrorFilter.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/CodeGenErrorFilter.java
index 22b0a06..533688b 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/CodeGenErrorFilter.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/CodeGenErrorFilter.java
@@ -20,7 +20,7 @@
 package org.apache.royale.compiler.clients.problems;
 
 import org.apache.royale.compiler.problems.ICompilerProblem;
-import org.apache.royale.compiler.problems.OperandStackUnderflowProblem;
+import org.apache.royale.compiler.problems.IOperandStackUnderflowProblem;
 
 /**
  * A problem filter that implements filtering out certain errors from
@@ -42,7 +42,7 @@ public class CodeGenErrorFilter implements IProblemFilter
     @Override
     public boolean accept(ICompilerProblem p)
     {
-        if (p instanceof OperandStackUnderflowProblem)
+        if (p instanceof IOperandStackUnderflowProblem)
             return false;
         
         // accept it.
@@ -53,7 +53,7 @@ public class CodeGenErrorFilter implements IProblemFilter
     {
         for (ICompilerProblem problem : problems)
         {
-            if (!(problem instanceof OperandStackUnderflowProblem))
+            if (!(problem instanceof IOperandStackUnderflowProblem))
                 return true;
         }
         return false;
diff --git a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/CompilerProblemCategorizer.java b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/CompilerProblemCategorizer.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/clients/problems/CompilerProblemCategorizer.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/CompilerProblemCategorizer.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemFilterClassCriteria.java b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemFilterClassCriteria.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemFilterClassCriteria.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemFilterClassCriteria.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemQuery.java b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemQuery.java
similarity index 97%
rename from compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemQuery.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemQuery.java
index 4b5d3e4..32bf3f0 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemQuery.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemQuery.java
@@ -32,7 +32,7 @@ import org.apache.royale.compiler.problems.CodegenInternalProblem;
 import org.apache.royale.compiler.problems.CodegenProblem;
 import org.apache.royale.compiler.problems.CompilerProblemSeverity;
 import org.apache.royale.compiler.problems.ICompilerProblem;
-import org.apache.royale.compiler.problems.ParserProblem;
+import org.apache.royale.compiler.problems.IParserProblem;
 import org.apache.royale.compiler.problems.SemanticWarningProblem;
 import org.apache.royale.compiler.problems.StrictSemanticsProblem;
 import org.apache.royale.compiler.problems.UnfoundPropertyProblem;
@@ -360,7 +360,7 @@ public class ProblemQuery
      *  This Comparator compares problems based on three criteria:
      *  <li> file path
      *  <li> line number
-     *  <li> problem class - ParserProblems are "less than" semantic problems.
+     *  <li> problem class - IParserProblems are "less than" semantic problems.
      */
     public static final Comparator<ICompilerProblem> compareByPositionAndPhase =
         new Comparator<ICompilerProblem>()
@@ -388,14 +388,14 @@ public class ProblemQuery
              */
             private int compareProblemClasses(ICompilerProblem p1, ICompilerProblem p2)
             {
-                if ( p1 instanceof ParserProblem )
+                if ( p1 instanceof IParserProblem )
                 {
-                    if ( !(p2 instanceof ParserProblem) )
+                    if ( !(p2 instanceof IParserProblem) )
                         return -1;
                 }
-                else if ( p2 instanceof ParserProblem )
+                else if ( p2 instanceof IParserProblem )
                 {
-                    if ( !(p1 instanceof ParserProblem) )
+                    if ( !(p1 instanceof IParserProblem) )
                         return 1;
                 }
 
@@ -429,7 +429,7 @@ public class ProblemQuery
                 return false;
             }
 
-            this.parserProblemOnLine = problem instanceof ParserProblem;
+            this.parserProblemOnLine = problem instanceof IParserProblem;
             return true;
         }
 
diff --git a/compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemSettingsFilter.java b/compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemSettingsFilter.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/clients/problems/ProblemSettingsFilter.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/clients/problems/ProblemSettingsFilter.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/common/IPathResolver.java b/compiler-common/src/main/java/org/apache/royale/compiler/common/IPathResolver.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/common/IPathResolver.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/common/IPathResolver.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/common/VersionInfo.java b/compiler-common/src/main/java/org/apache/royale/compiler/common/VersionInfo.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/common/VersionInfo.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/common/VersionInfo.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/CommandLineConfigurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/CommandLineConfigurator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/CommandLineConfigurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/CommandLineConfigurator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/Configuration.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/Configuration.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/Configuration.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/Configuration.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationBuffer.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationBuffer.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationBuffer.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationBuffer.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationInfo.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationInfo.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationInfo.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationInfo.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationPathResolver.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationPathResolver.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationPathResolver.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationPathResolver.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationValue.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationValue.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/ConfigurationValue.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/ConfigurationValue.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/Configurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/Configurator.java
similarity index 93%
rename from compiler/src/main/java/org/apache/royale/compiler/config/Configurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/Configurator.java
index 35704bf..34bd165 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/config/Configurator.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/config/Configurator.java
@@ -22,7 +22,6 @@ package org.apache.royale.compiler.config;
 import java.io.File;
 import java.util.*;
 
-import org.apache.royale.compiler.clients.MXMLC;
 import org.apache.royale.compiler.common.IPathResolver;
 import org.apache.royale.compiler.common.VersionInfo;
 import org.apache.royale.compiler.config.RSLSettings.RSLAndPolicyFileURLPair;
@@ -39,15 +38,11 @@ import org.apache.royale.compiler.internal.config.SystemPropertyConfigurator;
 import org.apache.royale.compiler.internal.config.TargetSettings;
 import org.apache.royale.compiler.internal.config.localization.LocalizationManager;
 import org.apache.royale.compiler.internal.config.localization.ResourceBundleLocalizer;
-import org.apache.royale.compiler.internal.projects.RoyaleProject;
-import org.apache.royale.compiler.internal.projects.RoyaleProjectConfigurator;
-import org.apache.royale.compiler.internal.projects.SourcePathManager;
-import org.apache.royale.compiler.internal.workspaces.Workspace;
 import org.apache.royale.compiler.mxml.IMXMLNamespaceMapping;
 import org.apache.royale.compiler.problems.ANELibraryNotAllowedProblem;
 import org.apache.royale.compiler.problems.ConfigurationProblem;
 import org.apache.royale.compiler.problems.ICompilerProblem;
-import org.apache.royale.compiler.projects.IRoyaleProject;
+import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.targets.ITargetSettings;
 import org.apache.royale.compiler.targets.ITarget.TargetType;
 import org.apache.royale.compiler.workspaces.IWorkspace;
@@ -193,12 +188,12 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
      * from the given {@code workspace}.
      * 
      * @param paths A list of normalized paths.
-     * @param workspace Workspace.
+     * @param workspace IWorkspace.
      * @return A list of file specifications.
      */
     public static List<IFileSpecification> toFileSpecifications(
             final List<String> paths,
-            final Workspace workspace)
+            final IWorkspace workspace)
     {
         return Lists.transform(paths, new Function<String, IFileSpecification>()
         {
@@ -287,7 +282,8 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
     private Collection<ICompilerProblem> configurationProblems;
     private boolean extrasRequireDefaultVariable;
     private IPathResolver configurationPathResolver;
-    private IRoyaleProject project;
+    
+    private ICompilerProject project;
 
     // 
     // IConfigurator related methods
@@ -308,7 +304,7 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
     }
     
     @Override
-    public boolean applyToProject(IRoyaleProject project)
+    public boolean applyToProject(ICompilerProject project)
     {
     	this.project = project;
         final IWorkspace workspace = project.getWorkspace();
@@ -316,52 +312,24 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
         workspace.startIdleState();
         try
         {
-            
-            
             if (configuration == null)
                 return false;
             
-            if (project instanceof RoyaleProject)
-            {
-                RoyaleProject royaleProject = (RoyaleProject)project;
-    
-                RoyaleProjectConfigurator.configure(royaleProject, configuration);
-                setupCompatibilityVersion(royaleProject);
-                setupConfigVariables(royaleProject);
-                setupLocaleSettings(royaleProject);
-                setupServices(royaleProject);
-                setupThemeFiles(royaleProject);
-                setupRoyale(royaleProject);
-                setupCodegenOptions(royaleProject);
-            }
-            
-            project.setRuntimeSharedLibraryPath(getRSLSettingsFromConfiguration(configuration));
-    
-            if (!setupProjectLibraries(project))
-                success = false;
-            
-            setupNamespaces(project);
+            applyConfiguration();
         }
         finally
         {
             workspace.endIdleState(IWorkspace.NIL_COMPILATIONUNITS_TO_UPDATE);
         }
-        if (!setupSources(project))
-            success = false; 
         return success;
     }
-
-    private void setupRoyale(RoyaleProject royaleProject)
-    {
-        royaleProject.setRoyale(configuration.isRoyale());
-    }
-
-    private void setupCodegenOptions(RoyaleProject royaleProject)
+    
+    protected boolean applyConfiguration()
     {
-        royaleProject.setEnableInlining(configuration.isInliningEnabled());
+        return false; // don't call this, just override it
     }
 
-    private String computeQNameForTargetFile()
+    protected String computeQNameForTargetFile()
     {
         List<String> computedSourcePath = new ArrayList<String>();
         applySourcePathRules(computedSourcePath);
@@ -369,16 +337,10 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
         if (targetSourceFileName == null)
             return null;
         final File targetSourceFile = FilenameNormalization.normalize(new File(configuration.getTargetFile()));
-        for (final String sourcePathEntry : computedSourcePath)
-        {
-            final String computedQName = SourcePathManager.computeQName(new File(sourcePathEntry), targetSourceFile);
-            if (computedQName != null)
-                return computedQName;
-            
-        }
-        return null;
+        return targetSourceFile.getName();
     }
     
+
     @Override
     public ITargetSettings getTargetSettings(TargetType targetType)
     {
@@ -428,9 +390,14 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
             return null;
         }
         
-        return new TargetSettings(configuration, project);
+        return instantiateTargetSettings();
     }
 
+    protected ITargetSettings instantiateTargetSettings()
+    {
+        return new TargetSettings(configuration, project);
+    }
+    
     @Override    
     public ICompilerProblemSettings getCompilerProblemSettings()
     {
@@ -567,88 +534,6 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
     }
 
     /**
-     * Setup theme files.
-     */
-    protected void setupThemeFiles(RoyaleProject project)
-    {
-        project.setThemeFiles(toFileSpecifications(configuration.getCompilerThemeFiles(), 
-                project.getWorkspace()));
-
-    }
-
-    /**
-     * Collect all of the different library paths and set them in the project.
-     * The libraries are ordered with RSL and external libraries having the
-     * highest priority.
-     * 
-     * <p>Libraries are ordered highest to lowest priority:
-     *     <ol>
-     *     <li>External Library Path
-     *     <li>RSL Library Path
-     *     <li>Include Library Path
-     *     <li>Library Path
-     *     </ol>
-     * </p>
-     * @param project
-     * @return true if successful, false if there is an error.
-     */
-    protected boolean setupProjectLibraries(IRoyaleProject project)
-    {
-        LinkedHashSet<File> libraries = new LinkedHashSet<File>();
-        
-        // add External Library Path
-        List<File> externalLibraryFiles = toFileList(project.getCompilerExternalLibraryPath(configuration)); 
-        libraries.addAll(externalLibraryFiles);
-        
-        // add RSLs
-        libraries.addAll(configuration.getRslExcludedLibraries());
-        
-        // add Include Library Path
-        libraries.addAll(toFileList(configuration.getCompilerIncludeLibraries()));
-        
-        // add Library Path
-        libraries.addAll(toFileList(project.getCompilerLibraryPath(configuration)));
-        
-        project.setLibraries(new ArrayList<File>(libraries));
-        
-        // After we set the library path we can check for ANE files more
-        // accurately because the library path manager in the project
-        // will read in all the swc files found in directories on the
-        // paths.
-        return validateNoANEFiles(project, externalLibraryFiles);
-    }
-    
-    /**
-     * Validate all of the ANE files are on the external library path.
-     * 
-     * @param project the project being configured.
-     * @param externalLibraryFiles the external library path.
-     * @return true if successful, false if there is an error.
-     */
-    private boolean validateNoANEFiles(IRoyaleProject project, 
-            List<File>externalLibraryFiles)
-    {
-        // Get all the library files in the project.
-        List<ISWC> libraries = project.getLibraries();
-        for (ISWC library : libraries)
-        {
-            if (library.isANE())
-            {
-                // must be on the external library path
-                if (!isOnExternalLibrayPath(library, externalLibraryFiles))
-                {
-                    configurationProblems.add(
-                            new ANELibraryNotAllowedProblem(
-                                    library.getSWCFile().getAbsolutePath()));
-                    return false;
-                }
-            }
-        }
-        
-        return true;
-    }
-
-    /** 
      * Test if the SWC is explicitly on the external library path.
      * 
      * @param library
@@ -669,59 +554,6 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
     }
 
     /**
-     * Setup {@code -compatibility-version} level. Royale only support Flex 3+.
-     * @param project 
-     */
-    protected void setupCompatibilityVersion(RoyaleProject project)
-    {
-        final int compatibilityVersion = configuration.getCompilerMxmlCompatibilityVersion();
-        if (compatibilityVersion < Configuration.MXML_VERSION_3_0)
-            throw new UnsupportedOperationException("Unsupported compatibility version: " + configuration.getCompilerCompatibilityVersionString());
-        project.setCompatibilityVersion(configuration.getCompilerMxmlMajorCompatibilityVersion(),
-                configuration.getCompilerMxmlMinorCompatibilityVersion(),
-                configuration.getCompilerMxmlRevisionCompatibilityVersion());
-    }
-
-    /**
-     * Transfers configuration settings to the project. Handles:
-     *     -services
-     *     -context-root
-     * 
-     */
-    protected void setupServices(RoyaleProject project)
-    {
-        if (configuration.getCompilerServices() != null)
-            project.setServicesXMLPath(configuration.getCompilerServices().getPath(), configuration.getCompilerContextRoot());
-    }
-
-    /**
-     * Setup the source paths.
-     * 
-     * @return true if successful, false otherwise.
-     */
-    protected boolean setupSources(IRoyaleProject project)
-    {
-        // -source-path
-        List<String> sourcePath = new ArrayList<String>();
-        applySourcePathRules(sourcePath);
-        
-        project.setSourcePath(toFiles(sourcePath));
-        
-        // -include-sources
-        try
-        {
-            project.setIncludeSources(toFileList(configuration.getIncludeSources()));
-        }
-        catch (InterruptedException e)
-        {
-            assert false : "InterruptedException should never be thrown here";
-            return false;
-        }
-        
-        return true;
-    }
-
-    /**
      * Apply the follow source-path rules:
      * 
      * 1. If source-path is empty, the target file's directory will be added to 
@@ -793,32 +625,6 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
         return false;
     }
 
-    protected void setupConfigVariables(IRoyaleProject project)
-    {
-        final Map<String, String> compilerDefine = configuration.getCompilerDefine();
-        if (compilerDefine != null)
-            project.setDefineDirectives(compilerDefine);
-    }
-
-    protected void setupNamespaces(IRoyaleProject project)
-    {
-        final List<? extends IMXMLNamespaceMapping> configManifestMappings =
-                project.getCompilerNamespacesManifestMappings(configuration);
-        if (configManifestMappings != null)
-        {
-            project.setNamespaceMappings(configManifestMappings);
-        }
-    }
-
-    /**
-     * Setups the locale related settings.
-     */
-    protected void setupLocaleSettings(IRoyaleProject project)
-    {
-        project.setLocales(configuration.getCompilerLocales());
-        project.setLocaleDependentResources(configuration.getLocaleDependentSources());
-    }
-    
     public static List<RSLSettings> getRSLSettingsFromConfiguration(Configuration configuration)
     {
         List<RuntimeSharedLibraryPathInfo> infoList = configuration.getRslPathInfo();
@@ -1119,7 +925,7 @@ public class Configurator implements ICompilerSettings, IConfigurator, ICompiler
     /**
      * Load a configuration from file. {@code FileConfigurator.load()} is
      * wrapped in this method because we want to print a message after loading
-     * using {@link MXMLC#println(String)}.
+     * using MXMLC#println(String).
      * 
      * @return true if successful, false otherwise.
      */
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/ICompilerProblemSettings.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/ICompilerProblemSettings.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/ICompilerProblemSettings.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/ICompilerProblemSettings.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/config/ICompilerSettingsConstants.java b/compiler-common/src/main/java/org/apache/royale/compiler/config/ICompilerSettingsConstants.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/config/ICompilerSettingsConstants.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/config/ICompilerSettingsConstants.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/constants/IASWarningConstants.java b/compiler-common/src/main/java/org/apache/royale/compiler/constants/IASWarningConstants.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/constants/IASWarningConstants.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/constants/IASWarningConstants.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/exceptions/ConfigurationException.java b/compiler-common/src/main/java/org/apache/royale/compiler/exceptions/ConfigurationException.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/exceptions/ConfigurationException.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/exceptions/ConfigurationException.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/filespecs/BaseFileSpecification.java b/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/BaseFileSpecification.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/filespecs/BaseFileSpecification.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/filespecs/BaseFileSpecification.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/filespecs/CombinedFile.java b/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/CombinedFile.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/filespecs/CombinedFile.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/filespecs/CombinedFile.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java b/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/filespecs/IBinaryFileSpecification.java b/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/IBinaryFileSpecification.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/filespecs/IBinaryFileSpecification.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/filespecs/IBinaryFileSpecification.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/COMPCConfiguration.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/COMPCConfiguration.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/COMPCConfiguration.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/COMPCConfiguration.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/CompilerProblemSettings.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/CompilerProblemSettings.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/CompilerProblemSettings.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/CompilerProblemSettings.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/DefaultsConfigurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/DefaultsConfigurator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/DefaultsConfigurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/DefaultsConfigurator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/FileConfigurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/FileConfigurator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/FileConfigurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/FileConfigurator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/FlashBuilderConfigurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/FlashBuilderConfigurator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/FlashBuilderConfigurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/FlashBuilderConfigurator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/ICompilerSettings.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/ICompilerSettings.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/ICompilerSettings.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/ICompilerSettings.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/IConfigurationFilter.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IConfigurationFilter.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/IConfigurationFilter.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IConfigurationFilter.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/IConfigurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IConfigurator.java
similarity index 97%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/IConfigurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IConfigurator.java
index 5abec76..dfd446e 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/config/IConfigurator.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IConfigurator.java
@@ -25,7 +25,7 @@ import java.util.List;
 import org.apache.royale.compiler.common.IPathResolver;
 import org.apache.royale.compiler.config.ICompilerProblemSettings;
 import org.apache.royale.compiler.problems.ICompilerProblem;
-import org.apache.royale.compiler.projects.IRoyaleProject;
+import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.targets.ITarget.TargetType;
 import org.apache.royale.compiler.targets.ITargetSettings;
 
@@ -50,7 +50,7 @@ public interface IConfigurator
      * @return true if the configuration contains no errors and the project was
      * successfully configured, false if the configuration contains errors.
      */
-    boolean applyToProject(IRoyaleProject project);
+    boolean applyToProject(ICompilerProject project);
 
     /**
      * Get the settings that apply to a given type of target based on the
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/IWriteOnlyProjectSettings.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IWriteOnlyProjectSettings.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/IWriteOnlyProjectSettings.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/IWriteOnlyProjectSettings.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/LoadExternsParser.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/LoadExternsParser.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/LoadExternsParser.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/LoadExternsParser.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/QNameNormalization.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/QNameNormalization.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/QNameNormalization.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/QNameNormalization.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/RSLArgumentNameGenerator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/RSLArgumentNameGenerator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/RSLArgumentNameGenerator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/RSLArgumentNameGenerator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/RuntimeSharedLibraryPathInfo.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/RuntimeSharedLibraryPathInfo.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/RuntimeSharedLibraryPathInfo.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/RuntimeSharedLibraryPathInfo.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/SystemPropertyConfigurator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/SystemPropertyConfigurator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/SystemPropertyConfigurator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/SystemPropertyConfigurator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/TargetSettings.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/TargetSettings.java
similarity index 95%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/TargetSettings.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/TargetSettings.java
index 0c58bb9..e0c75ca 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/config/TargetSettings.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/TargetSettings.java
@@ -33,8 +33,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.royale.compiler.config.Configuration;
 import org.apache.royale.compiler.config.Configurator;
 import org.apache.royale.compiler.config.RSLSettings;
-import org.apache.royale.compiler.internal.projects.LibraryPathManager;
-import org.apache.royale.compiler.projects.IRoyaleProject;
+import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.targets.ITargetSettings;
 import org.apache.royale.utils.FilenameNormalization;
 import com.google.common.collect.ImmutableList;
@@ -47,7 +46,7 @@ import com.google.common.collect.ImmutableList;
  */
 public class TargetSettings implements ITargetSettings
 {
-    public TargetSettings(Configuration configuration, IRoyaleProject project)
+    public TargetSettings(Configuration configuration, ICompilerProject project)
     {
         this.configuration = configuration;
         this.project = project;
@@ -64,7 +63,7 @@ public class TargetSettings implements ITargetSettings
     private Map<String, File> includeFiles;
     
     private final Configuration configuration;
-    private final IRoyaleProject project;
+    private final ICompilerProject project;
     
     private Set<String> externalLinkageLibraries;
     
@@ -377,12 +376,8 @@ public class TargetSettings implements ITargetSettings
     {
         if (externalLibraryPath == null)
         {
-            List<File> files = Configurator.toFileList(project != null ? project.getCompilerExternalLibraryPath(configuration) : 
-            												configuration.getCompilerExternalLibraryPath());
-            Set<File> expandedFiles = LibraryPathManager.discoverSWCFilePathsAsFiles(files.toArray(new File[files.size()]));
-
-            externalLibraryPath = new ArrayList<File>(expandedFiles.size());
-            for (File swcFile : expandedFiles)
+            List<File> files = Configurator.toFileList(configuration.getCompilerExternalLibraryPath());
+            for (File swcFile : files)
                 externalLibraryPath.add(swcFile);
         }
 
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/ArgumentNameGenerator.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/ArgumentNameGenerator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/ArgumentNameGenerator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/ArgumentNameGenerator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/Arguments.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/Arguments.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/Arguments.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/Arguments.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/Config.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/Config.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/Config.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/Config.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/DefaultArgumentValue.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/DefaultArgumentValue.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/DefaultArgumentValue.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/DefaultArgumentValue.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/DeprecatedConfig.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/DeprecatedConfig.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/DeprecatedConfig.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/DeprecatedConfig.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/InfiniteArguments.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/InfiniteArguments.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/InfiniteArguments.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/InfiniteArguments.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/Mapping.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/Mapping.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/Mapping.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/Mapping.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/RoyaleOnly.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/RoyaleOnly.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/RoyaleOnly.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/RoyaleOnly.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/SoftPrerequisites.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/SoftPrerequisites.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/annotations/SoftPrerequisites.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/annotations/SoftPrerequisites.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java
similarity index 100%
copy from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java
copy to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java
similarity index 100%
copy from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java
copy to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/LocalizationManager.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/LocalizationManager.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/LocalizationManager.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/LocalizationManager.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ResourceBundleLocalizer.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/ResourceBundleLocalizer.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ResourceBundleLocalizer.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/ResourceBundleLocalizer.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/package.html b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/package.html
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/package.html
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/localization/package.html
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/package.html b/compiler-common/src/main/java/org/apache/royale/compiler/internal/config/package.html
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/package.html
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/config/package.html
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/mxml/MXMLNamespaceMapping.java b/compiler-common/src/main/java/org/apache/royale/compiler/internal/mxml/MXMLNamespaceMapping.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/mxml/MXMLNamespaceMapping.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/internal/mxml/MXMLNamespaceMapping.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/mxml/IMXMLNamespaceMapping.java b/compiler-common/src/main/java/org/apache/royale/compiler/mxml/IMXMLNamespaceMapping.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/mxml/IMXMLNamespaceMapping.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/mxml/IMXMLNamespaceMapping.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/mxml/IMXMLTypeConstants.java b/compiler-common/src/main/java/org/apache/royale/compiler/mxml/IMXMLTypeConstants.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/mxml/IMXMLTypeConstants.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/mxml/IMXMLTypeConstants.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/ANELibraryNotAllowedProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/ANELibraryNotAllowedProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/ANELibraryNotAllowedProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/ANELibraryNotAllowedProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/AbstractDeprecatedAPIProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/AbstractDeprecatedAPIProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/AbstractDeprecatedAPIProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/AbstractDeprecatedAPIProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/AbstractSemanticProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/AbstractSemanticProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/AbstractSemanticProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/AbstractSemanticProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/ArrayCastProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/ArrayCastProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/ArrayCastProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/ArrayCastProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/AssignmentInConditionalProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/AssignmentInConditionalProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/AssignmentInConditionalProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/AssignmentInConditionalProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/CodegenInternalProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/CodegenInternalProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/CodegenInternalProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/CodegenInternalProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/CodegenProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/CodegenProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/CodegenProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/CodegenProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/ConfigurationProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/ConfigurationProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/ConfigurationProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/ConfigurationProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/ConstNotInitializedProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/ConstNotInitializedProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/ConstNotInitializedProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/ConstNotInitializedProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/DateCastProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/DateCastProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/DateCastProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/DateCastProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/DeprecatedConfigurationOptionProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/DeprecatedConfigurationOptionProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/DeprecatedConfigurationOptionProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/DeprecatedConfigurationOptionProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/DuplicateQNameInSourcePathProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/DuplicateQNameInSourcePathProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/DuplicateQNameInSourcePathProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/DuplicateQNameInSourcePathProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/DuplicateVariableDefinitionProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/DuplicateVariableDefinitionProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/DuplicateVariableDefinitionProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/DuplicateVariableDefinitionProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/IOperandStackUnderflowProblem.java
similarity index 78%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/IOperandStackUnderflowProblem.java
index ec3dfd3..db12a61 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizer.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/problems/IOperandStackUnderflowProblem.java
@@ -17,14 +17,14 @@
  *
  */
 
-package org.apache.royale.compiler.internal.config.localization;
+package org.apache.royale.compiler.problems;
+
+import org.apache.royale.compiler.common.ISourceLocation;
 
-import java.util.Locale;
 
 /**
- * Defines the API for looking up localized text.
+ * Marker interface to break dependencies in ProblemQuery
  */
-public interface ILocalizer
+public interface IOperandStackUnderflowProblem extends ICompilerProblem
 {
-    ILocalizedText getLocalizedText( Locale locale, String id );
 }
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/IParserProblem.java
similarity index 79%
rename from compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/IParserProblem.java
index 6b2584c..f1d91f8 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/config/localization/ILocalizedText.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/problems/IParserProblem.java
@@ -17,14 +17,14 @@
  *
  */
 
-package org.apache.royale.compiler.internal.config.localization;
+package org.apache.royale.compiler.problems;
+
+import org.apache.royale.compiler.common.ISourceLocation;
 
-import java.util.Map;
 
 /**
- * Defines the API for formatting localized text.
+ * Marker interface to break dependencies in ProblemQuery
  */
-public interface ILocalizedText
+public interface IParserProblem extends ICompilerProblem
 {
-    String format(Map<String, Object> parameters);
 }
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/IllogicalComparionWithNaNProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/IllogicalComparionWithNaNProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/IllogicalComparionWithNaNProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/IllogicalComparionWithNaNProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/IllogicalComparisonWithUndefinedProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/IllogicalComparisonWithUndefinedProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/IllogicalComparisonWithUndefinedProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/IllogicalComparisonWithUndefinedProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/InstanceOfProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/InstanceOfProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/InstanceOfProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/InstanceOfProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/NullUsedWhereOtherExpectedProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/NullUsedWhereOtherExpectedProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/NullUsedWhereOtherExpectedProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/NullUsedWhereOtherExpectedProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/OverlappingSourcePathProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/OverlappingSourcePathProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/OverlappingSourcePathProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/OverlappingSourcePathProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/RemovedConfigurationOptionProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/RemovedConfigurationOptionProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/RemovedConfigurationOptionProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/RemovedConfigurationOptionProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/RoyaleOnlyConfigurationOptionNotSupported.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/RoyaleOnlyConfigurationOptionNotSupported.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/RoyaleOnlyConfigurationOptionNotSupported.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/RoyaleOnlyConfigurationOptionNotSupported.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/ScopedToDefaultNamespaceProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/ScopedToDefaultNamespaceProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/ScopedToDefaultNamespaceProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/ScopedToDefaultNamespaceProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/SemanticProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/SemanticProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/SemanticProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/SemanticProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/SemanticWarningProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/SemanticWarningProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/SemanticWarningProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/SemanticWarningProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/StrictSemanticsProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/StrictSemanticsProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/StrictSemanticsProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/StrictSemanticsProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/UnfoundPropertyProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/UnfoundPropertyProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/UnfoundPropertyProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/UnfoundPropertyProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/UnresolvedClassReferenceProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/UnresolvedClassReferenceProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/UnresolvedClassReferenceProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/UnresolvedClassReferenceProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/VariableHasNoTypeDeclarationProblem.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/VariableHasNoTypeDeclarationProblem.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/VariableHasNoTypeDeclarationProblem.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/VariableHasNoTypeDeclarationProblem.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/collections/CompositeProblemFilter.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/collections/CompositeProblemFilter.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/collections/CompositeProblemFilter.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/collections/CompositeProblemFilter.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/collections/FilteredIterator.java b/compiler-common/src/main/java/org/apache/royale/compiler/problems/collections/FilteredIterator.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/collections/FilteredIterator.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/collections/FilteredIterator.java
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/collections/package.html b/compiler-common/src/main/java/org/apache/royale/compiler/problems/collections/package.html
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/compiler/problems/collections/package.html
rename to compiler-common/src/main/java/org/apache/royale/compiler/problems/collections/package.html
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/NodeJSUtils.java b/compiler-common/src/main/java/org/apache/royale/compiler/utils/NodeJSUtils.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/utils/NodeJSUtils.java
rename to compiler-common/src/main/java/org/apache/royale/compiler/utils/NodeJSUtils.java
diff --git a/compiler/src/main/java/org/apache/royale/swc/catalog/XMLFormatter.java b/compiler-common/src/main/java/org/apache/royale/swc/catalog/XMLFormatter.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/swc/catalog/XMLFormatter.java
rename to compiler-common/src/main/java/org/apache/royale/swc/catalog/XMLFormatter.java
diff --git a/compiler/src/main/java/org/apache/royale/utils/DAByteArrayOutputStream.java b/compiler-common/src/main/java/org/apache/royale/utils/DAByteArrayOutputStream.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/utils/DAByteArrayOutputStream.java
rename to compiler-common/src/main/java/org/apache/royale/utils/DAByteArrayOutputStream.java
diff --git a/compiler/src/main/java/org/apache/royale/utils/ExceptionUtil.java b/compiler-common/src/main/java/org/apache/royale/utils/ExceptionUtil.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/utils/ExceptionUtil.java
rename to compiler-common/src/main/java/org/apache/royale/utils/ExceptionUtil.java
diff --git a/compiler/src/main/java/org/apache/royale/utils/FileUtils.java b/compiler-common/src/main/java/org/apache/royale/utils/FileUtils.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/utils/FileUtils.java
rename to compiler-common/src/main/java/org/apache/royale/utils/FileUtils.java
diff --git a/compiler/src/main/java/org/apache/royale/utils/Trace.java b/compiler-common/src/main/java/org/apache/royale/utils/Trace.java
similarity index 100%
rename from compiler/src/main/java/org/apache/royale/utils/Trace.java
rename to compiler-common/src/main/java/org/apache/royale/utils/Trace.java
diff --git a/compiler-externc/build.xml b/compiler-externc/build.xml
index 2d8a2c3..9e86c2e 100644
--- a/compiler-externc/build.xml
+++ b/compiler-externc/build.xml
@@ -34,6 +34,13 @@
         <path location="${basedir}"/>
     </pathconvert>
     
+    <!-- The 'compiler' property is the absolute path, with forward slashes, -->
+    <!-- to the 'compiler' directory that is a sibling of the parent folder of this file. -->
+    <!-- All input paths are expressed as absolute paths starting with ${compiler-common}. -->
+    <pathconvert property="compiler-jx" dirsep="/">
+        <path location="${basedir}/../compiler-jx"/>
+    </pathconvert>
+    
     <!-- Properties can be overridden locally by loading a local.properties file -->
     <!-- Java 8 users probably need javadoc.params=-Xdoclint:none -->
     <property file="${compiler-externc}/local.properties"/>
@@ -98,7 +105,8 @@
             <src path="${compiler-externc}/src/main/java"/>
             <classpath>
                 <pathelement location="${compiler-externc}/target/classes"/>
-                <fileset dir="${compiler-externc}/../compiler/lib/external" includes="**/*.jar"/>
+                <fileset dir="${compiler-externc}/../compiler-jx/lib/google" includes="**/*.jar"/>
+                <fileset dir="${compiler-externc}/../compiler/lib" includes="compiler-common.jar,external/*.jar"/>
             </classpath>
         </javac>
     </target>
diff --git a/compiler-jx/src/main/java/com/google/javascript/jscomp/JXCompilerOptions.java b/compiler-externc/src/main/java/com/google/javascript/jscomp/JXCompilerOptions.java
similarity index 100%
rename from compiler-jx/src/main/java/com/google/javascript/jscomp/JXCompilerOptions.java
rename to compiler-externc/src/main/java/com/google/javascript/jscomp/JXCompilerOptions.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java b/compiler-externc/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/clients/ExternCConfiguration.java
diff --git a/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/DummyNode.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/DummyNode.java
new file mode 100644
index 0000000..9891a94
--- /dev/null
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/DummyNode.java
@@ -0,0 +1,174 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.royale.compiler.internal.codegen.externals;
+
+import java.util.HashMap;
+
+import org.apache.royale.compiler.common.SourceLocation;
+import org.apache.royale.compiler.tree.ASTNodeID;
+import org.apache.royale.compiler.tree.as.IASNode;
+import org.apache.royale.compiler.tree.as.IScopedNode;
+import org.apache.royale.compiler.filespecs.IFileSpecification;
+
+// used to generate errors
+public class DummyNode extends SourceLocation implements IASNode
+{
+    /**
+     * Get the opcode of this node
+     *
+     * @return the opcode - this is one of the constants defined in ASTConstants
+     */
+    public ASTNodeID getNodeID()
+    {
+        return ASTNodeID.UnknownID;
+    }
+    
+    /**
+     * Determine whether the offset fits within this node.
+     *
+     * @param offset the offset to test
+     * @return true if the offset is contained within this node
+     */
+    public boolean contains(int offset)
+    {
+        return false;
+    }
+    
+    /**
+     * Get the nearest ancestor of this node that has the specified type.
+     *
+     * @param nodeType the node type for which to search
+     * @return the nearest ancestor that has the specified type (null if no such
+     * node exists)
+     */
+    public IASNode getAncestorOfType(Class<? extends IASNode> nodeType)
+    {
+        return null;
+    }
+    
+    /**
+     * Get a particular child of this node
+     *
+     * @param i the child's index
+     * @return the specified child
+     */
+    public IASNode getChild(int i)
+    {
+        return null;
+    }
+    
+    /**
+     * Get the number of children
+     *
+     * @return the number of children
+     */
+    public int getChildCount()
+    {
+        return 0;
+    }
+    
+    /**
+     * Gets the child node that contains the offset
+     *
+     * @param offset an offest
+     * @return an IASNode or null
+     */
+    public IASNode getContainingNode(int offset)
+    {
+        return null;
+    }
+    
+    /**
+     * Gets the containing scope for this node
+     *
+     * @return the current {@link IScopedNode}
+     */
+    public IScopedNode getContainingScope()
+    {
+        return null;
+    }
+    
+    /**
+     * Get package name that applies to this node. If this node doesn't reside
+     * inside a package definition, this method will return null.
+     *
+     * @return String containing fully-qualified package name
+     */
+    public String getPackageName()
+    {
+        return null;
+    }
+    
+    /**
+     * Get the parent of this node
+     *
+     * @return the parent of this node
+     */
+    public IASNode getParent()
+    {
+        return null;
+    }
+    
+    /**
+     * Get the {@link IFileSpecification} that produced this node
+     *
+     * @return the source of this node
+     */
+    public IFileSpecification getFileSpecification()
+    {
+        return null;
+    }
+    
+    /**
+     * Gets the local offset where the node starts, including any extra items that may
+     * change the appearance of the node's start. These can include namespaces,
+     * keywords, modifiers, etc
+     *
+     * @return the start of the span
+     */
+    public int getSpanningStart()
+    {
+        return 0;
+    }
+    
+    /**
+     * Get the first node that succeeds the offset (i.e. which starts after the
+     * offset).
+     *
+     * @param offset the offset for which to search
+     * @return the most general node that starts after the offset (or null, if
+     * the offset isn't contained within this node)
+     */
+    public IASNode getSucceedingNode(int offset)
+    {
+        return null;
+    }
+    
+    /**
+     * Determines if this node is a terminal node, meaning it cannot have
+     * children
+     *
+     * @return true if this node is terminal
+     */
+    public boolean isTerminal()
+    {
+        return true;
+    }
+}
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AddMemberPass.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AddMemberPass.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AddMemberPass.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/AddMemberPass.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectImportsPass.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectImportsPass.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectImportsPass.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectImportsPass.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectTypesPass.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectTypesPass.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectTypesPass.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/CollectTypesPass.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
similarity index 97%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
index 65778d3..d6d5b54 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
@@ -20,7 +20,7 @@
 package org.apache.royale.compiler.internal.codegen.externals.pass;
 
 import org.apache.royale.compiler.internal.codegen.externals.reference.ReferenceModel;
-import org.apache.royale.compiler.internal.tree.as.IdentifierNode;
+import org.apache.royale.compiler.internal.codegen.externals.DummyNode;
 import org.apache.royale.compiler.problems.VariableHasNoTypeDeclarationProblem;
 
 import com.google.javascript.jscomp.AbstractCompiler;
@@ -94,7 +94,7 @@ public class NamespaceResolutionPass extends AbstractCompilerPass
                         {
                         	StaticSourceFile ssf = first.getStaticSourceFile();
                         	String source = getSourceCode(ssf, first.getLineno());
-                        	IdentifierNode node = new IdentifierNode(source);
+                        	DummyNode node = new DummyNode();
                         	String externName = getSourceFileName(ssf.getName(), model);
                         	node.setSourcePath(externName);
                         	node.setLine(first.getLineno());
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/ResolvePackagesPass.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/ResolvePackagesPass.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/ResolvePackagesPass.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/pass/ResolvePackagesPass.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/BaseReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/BaseReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/BaseReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/BaseReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ClassReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ClassReference.java
similarity index 99%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ClassReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ClassReference.java
index 7135b05..832a359 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ClassReference.java
+++ b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ClassReference.java
@@ -31,7 +31,7 @@ import java.util.Set;
 import org.apache.royale.compiler.internal.codegen.externals.pass.AbstractCompilerPass;
 import org.apache.royale.compiler.internal.codegen.externals.utils.DebugLogUtils;
 import org.apache.royale.compiler.internal.codegen.externals.utils.JSTypeUtils;
-import org.apache.royale.compiler.internal.tree.as.IdentifierNode;
+import org.apache.royale.compiler.internal.codegen.externals.DummyNode;
 import org.apache.royale.compiler.problems.UnresolvedClassReferenceProblem;
 
 import com.google.javascript.rhino.JSDocInfo;
@@ -536,7 +536,7 @@ public class ClassReference extends BaseReference
             	result.add(interfaceReference);
             else
             {
-            	IdentifierNode node = new IdentifierNode(interfaceName);
+            	DummyNode node = new DummyNode();
             	String externName = AbstractCompilerPass.getSourceFileName(this.getNode().getStaticSourceFile().getName(), getModel());
             	node.setSourcePath(externName);
             	node.setLine(this.getNode().getLineno());
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ConstantReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ConstantReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ConstantReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ConstantReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FieldReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FieldReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FieldReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FieldReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FunctionReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FunctionReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FunctionReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/FunctionReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MemberReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MemberReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MemberReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MemberReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MethodReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MethodReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MethodReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/MethodReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/NullConstructorReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/NullConstructorReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/NullConstructorReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/NullConstructorReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ParameterReference.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ParameterReference.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ParameterReference.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/reference/ParameterReference.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/DebugLogUtils.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/DebugLogUtils.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/DebugLogUtils.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/DebugLogUtils.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/FunctionUtils.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/FunctionUtils.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/FunctionUtils.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/FunctionUtils.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/JSTypeUtils.java b/compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/JSTypeUtils.java
similarity index 100%
rename from compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/JSTypeUtils.java
rename to compiler-externc/src/main/java/org/apache/royale/compiler/internal/codegen/externals/utils/JSTypeUtils.java
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
index 9712da3..33771de 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/clients/MXMLJSC.java
@@ -811,7 +811,7 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
      */
     public boolean configure(final String[] args)
     {
-    	projectConfigurator = new Configurator(configurationClass);
+    	projectConfigurator = new RoyaleProjectConfigurator(configurationClass);
     	
         try
         {
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/config/RoyaleTargetSettings.java b/compiler/src/main/java/org/apache/royale/compiler/internal/config/RoyaleTargetSettings.java
new file mode 100644
index 0000000..e1d9311
--- /dev/null
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/config/RoyaleTargetSettings.java
@@ -0,0 +1,69 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.royale.compiler.internal.config;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.apache.commons.io.FileUtils;
+
+import org.apache.royale.compiler.config.Configuration;
+import org.apache.royale.compiler.config.Configurator;
+import org.apache.royale.compiler.config.RSLSettings;
+import org.apache.royale.compiler.internal.projects.LibraryPathManager;
+import org.apache.royale.compiler.projects.ICompilerProject;
+import org.apache.royale.compiler.targets.ITargetSettings;
+import org.apache.royale.utils.FilenameNormalization;
+import com.google.common.collect.ImmutableList;
+
+/**
+ * Value object of ITargetSettings.
+ * 
+ * The only way to create an instance of this object is by calling
+ * Configurator.getTargetSettings;
+ */
+public class RoyaleTargetSettings extends TargetSettings
+{
+    /**
+     * @return the externalLibraryPath
+     */
+    @Override
+    public Collection<File> getExternalLibraryPath()
+    {
+        if (externalLibraryPath == null)
+        {
+            List<File> files = Configurator.toFileList(project != null ? project.getCompilerExternalLibraryPath(configuration) : 
+            												configuration.getCompilerExternalLibraryPath());
+            Set<File> expandedFiles = LibraryPathManager.discoverSWCFilePathsAsFiles(files.toArray(new File[files.size()]));
+
+            externalLibraryPath = new ArrayList<File>(expandedFiles.size());
+            for (File swcFile : expandedFiles)
+                externalLibraryPath.add(swcFile);
+        }
+
+        return externalLibraryPath;
+    }
+}
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java
index 0d6339d..548e6bf 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java
@@ -29,6 +29,7 @@ import org.apache.royale.abc.semantics.Name;
 import org.apache.royale.abc.semantics.Namespace;
 import org.apache.royale.abc.semantics.Nsset;
 import org.apache.royale.compiler.config.Configuration;
+import org.apache.royale.compiler.config.Configurator;
 import org.apache.royale.compiler.fxg.flex.FlexFXG2SWFTranscoder;
 import org.apache.royale.compiler.internal.as.codegen.BindableHelper;
 import org.apache.royale.compiler.internal.definitions.ClassDefinition;
@@ -43,7 +44,7 @@ import org.apache.royale.compiler.mxml.IMXMLTypeConstants;
  * Eventually they will come from royale-config.xml
  * and this class will support updating with new configuration values.
  */
-public class RoyaleProjectConfigurator
+public class RoyaleProjectConfigurator extends Configurator
 {
     /**
      * These imports will eventually come from royale-config.xml.
@@ -256,4 +257,231 @@ public class RoyaleProjectConfigurator
             DataTranscoder.embedClassName = configuration.getByteArrayEmbedClass();
         }
     }
+    
+    @Override
+    public boolean applyToProject(ICompilerProject project)
+    {
+        boolean success = super.applyToProject(project);
+        if (success && !setupSources(project))
+            success = false;
+        return success;
+    }
+    
+    @Override
+    protected boolean applyConfiguration()
+    {
+        boolean success = true;
+        
+        RoyaleProjectConfigurator.configure(royaleProject, configuration);
+        setupCompatibilityVersion(royaleProject);
+        setupConfigVariables(royaleProject);
+        setupLocaleSettings(royaleProject);
+        setupServices(royaleProject);
+        setupThemeFiles(royaleProject);
+        setupRoyale(royaleProject);
+        setupCodegenOptions(royaleProject);
+        project.setRuntimeSharedLibraryPath(getRSLSettingsFromConfiguration(configuration));
+            
+        if (!setupProjectLibraries(project))
+            success = false;
+            
+        setupNamespaces(project);
+        return success;
+    }
+    
+    /**
+     * Setup {@code -compatibility-version} level. Royale only support Flex 3+.
+     * @param project
+     */
+    protected void setupCompatibilityVersion(RoyaleProject project)
+    {
+        final int compatibilityVersion = configuration.getCompilerMxmlCompatibilityVersion();
+        if (compatibilityVersion < Configuration.MXML_VERSION_3_0)
+            throw new UnsupportedOperationException("Unsupported compatibility version: " + configuration.getCompilerCompatibilityVersionString());
+        project.setCompatibilityVersion(configuration.getCompilerMxmlMajorCompatibilityVersion(),
+                                        configuration.getCompilerMxmlMinorCompatibilityVersion(),
+                                        configuration.getCompilerMxmlRevisionCompatibilityVersion());
+    }
+    
+    /**
+     * Transfers configuration settings to the project. Handles:
+     *     -services
+     *     -context-root
+     *
+     */
+    protected void setupServices(RoyaleProject project)
+    {
+        if (configuration.getCompilerServices() != null)
+            project.setServicesXMLPath(configuration.getCompilerServices().getPath(), configuration.getCompilerContextRoot());
+    }
+    
+    protected void setupConfigVariables(IRoyaleProject project)
+    {
+        final Map<String, String> compilerDefine = configuration.getCompilerDefine();
+        if (compilerDefine != null)
+            project.setDefineDirectives(compilerDefine);
+    }
+    
+    /**
+     * Setup the source paths.
+     *
+     * @return true if successful, false otherwise.
+     */
+    protected boolean setupSources(IRoyaleProject project)
+    {
+        // -source-path
+        List<String> sourcePath = new ArrayList<String>();
+        applySourcePathRules(sourcePath);
+        
+        project.setSourcePath(toFiles(sourcePath));
+        
+        // -include-sources
+        try
+        {
+            project.setIncludeSources(toFileList(configuration.getIncludeSources()));
+        }
+        catch (InterruptedException e)
+        {
+            assert false : "InterruptedException should never be thrown here";
+            return false;
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Collect all of the different library paths and set them in the project.
+     * The libraries are ordered with RSL and external libraries having the
+     * highest priority.
+     *
+     * <p>Libraries are ordered highest to lowest priority:
+     *     <ol>
+     *     <li>External Library Path
+     *     <li>RSL Library Path
+     *     <li>Include Library Path
+     *     <li>Library Path
+     *     </ol>
+     * </p>
+     * @param project
+     * @return true if successful, false if there is an error.
+     */
+    protected boolean setupProjectLibraries(IRoyaleProject project)
+    {
+        LinkedHashSet<File> libraries = new LinkedHashSet<File>();
+        
+        // add External Library Path
+        List<File> externalLibraryFiles = toFileList(project.getCompilerExternalLibraryPath(configuration));
+        libraries.addAll(externalLibraryFiles);
+        
+        // add RSLs
+        libraries.addAll(configuration.getRslExcludedLibraries());
+        
+        // add Include Library Path
+        libraries.addAll(toFileList(configuration.getCompilerIncludeLibraries()));
+        
+        // add Library Path
+        libraries.addAll(toFileList(project.getCompilerLibraryPath(configuration)));
+        
+        project.setLibraries(new ArrayList<File>(libraries));
+        
+        // After we set the library path we can check for ANE files more
+        // accurately because the library path manager in the project
+        // will read in all the swc files found in directories on the
+        // paths.
+        return validateNoANEFiles(project, externalLibraryFiles);
+    }
+    
+    /**
+     * Validate all of the ANE files are on the external library path.
+     *
+     * @param project the project being configured.
+     * @param externalLibraryFiles the external library path.
+     * @return true if successful, false if there is an error.
+     */
+    private boolean validateNoANEFiles(IRoyaleProject project,
+                                       List<File>externalLibraryFiles)
+    {
+        // Get all the library files in the project.
+        List<ISWC> libraries = project.getLibraries();
+        for (ISWC library : libraries)
+        {
+            if (library.isANE())
+            {
+                // must be on the external library path
+                if (!isOnExternalLibrayPath(library, externalLibraryFiles))
+                {
+                    configurationProblems.add(
+                                              new ANELibraryNotAllowedProblem(
+                                                                              library.getSWCFile().getAbsolutePath()));
+                    return false;
+                }
+            }
+        }
+        
+        return true;
+    }
+    
+    protected void setupNamespaces(IRoyaleProject project)
+    {
+        final List<? extends IMXMLNamespaceMapping> configManifestMappings =
+        project.getCompilerNamespacesManifestMappings(configuration);
+        if (configManifestMappings != null)
+        {
+            project.setNamespaceMappings(configManifestMappings);
+        }
+    }
+    
+    /**
+     * Setups the locale related settings.
+     */
+    protected void setupLocaleSettings(IRoyaleProject project)
+    {
+        project.setLocales(configuration.getCompilerLocales());
+        project.setLocaleDependentResources(configuration.getLocaleDependentSources());
+    }
+    
+    private void setupRoyale(RoyaleProject royaleProject)
+    {
+        royaleProject.setRoyale(configuration.isRoyale());
+    }
+    
+    private void setupCodegenOptions(RoyaleProject royaleProject)
+    {
+        royaleProject.setEnableInlining(configuration.isInliningEnabled());
+    }
+    
+    /**
+     * Setup theme files.
+     */
+    protected void setupThemeFiles(RoyaleProject project)
+    {
+        project.setThemeFiles(toFileSpecifications(configuration.getCompilerThemeFiles(),
+                                                   project.getWorkspace()));
+        
+    }
+    
+    @Override
+    protected ITargetSettings instantiateTargetSettings()
+    {
+        return new RoyaleTargetSettings(configuration, project);
+    }
+    
+    @Override
+    protected String computeQNameForTargetFile()
+    {
+        List<String> computedSourcePath = new ArrayList<String>();
+        applySourcePathRules(computedSourcePath);
+        String targetSourceFileName = configuration.getTargetFile();
+        if (targetSourceFileName == null)
+            return null;
+        final File targetSourceFile = FilenameNormalization.normalize(new File(configuration.getTargetFile()));
+        for (final String sourcePathEntry : computedSourcePath)
+        {
+            final String computedQName = SourcePathManager.computeQName(new File(sourcePathEntry), targetSourceFile);
+            if (computedQName != null)
+                return computedQName;
+            
+        }
+        return null;
+    }
 }
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/InvalidByteCodeGeneratedProblem.java b/compiler/src/main/java/org/apache/royale/compiler/problems/InvalidByteCodeGeneratedProblem.java
index 721d277..35ed797 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/problems/InvalidByteCodeGeneratedProblem.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/problems/InvalidByteCodeGeneratedProblem.java
@@ -21,7 +21,6 @@ package org.apache.royale.compiler.problems;
 
 import org.apache.royale.abc.graph.IBasicBlock;
 import org.apache.royale.abc.graph.IFlowgraph;
-import org.apache.royale.abc.semantics.Block;
 import org.apache.royale.compiler.common.ISourceLocation;
 import org.apache.royale.compiler.common.SourceLocation;
 import org.apache.royale.compiler.problems.annotations.DefaultSeverity;
@@ -41,14 +40,14 @@ public abstract class InvalidByteCodeGeneratedProblem extends CompilerProblem
     
     /**
      * Helper method that will use debug op code information to deduce a source
-     * location from an instruction offset in a {@link Block} in a
+     * location from an instruction offset in a Block in a
      * {@link IFlowgraph}.
      * 
      * @param cfg {@link IFlowgraph} containing the specified
-     * {@link Block}.
-     * @param b {@link Block} containing the instruction to deduce a
+     * Block.
+     * @param b Block containing the instruction to deduce a
      * {@link ISourceLocation} for.
-     * @param instructionIndex Offset in the specified {@link Block} of the
+     * @param instructionIndex Offset in the specified Block of the
      * instruction to deduce a {@link ISourceLocation} for.
      * @return The deduced {@link ISourceLocation}.
      */
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/OperandStackUnderflowProblem.java b/compiler/src/main/java/org/apache/royale/compiler/problems/OperandStackUnderflowProblem.java
index 466ade3..49ffd70 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/problems/OperandStackUnderflowProblem.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/problems/OperandStackUnderflowProblem.java
@@ -21,7 +21,6 @@ package org.apache.royale.compiler.problems;
 
 import org.apache.royale.abc.graph.IBasicBlock;
 import org.apache.royale.abc.graph.IFlowgraph;
-import org.apache.royale.abc.visitors.IDiagnosticsVisitor;
 
 /**
  * Internal compiler problem created when the code generator produces code in a
@@ -29,9 +28,9 @@ import org.apache.royale.abc.visitors.IDiagnosticsVisitor;
  * <p>
  * This compiler problem is created when AET, detects a operand stack underflow
  * in
- * {@link org.apache.royale.abc.semantics.MethodBodyInfo#computeFrameCounts(IDiagnosticsVisitor)}.
+ * org.apache.royale.abc.semantics.MethodBodyInfo#computeFrameCounts(IDiagnosticsVisitor).
  */
-public final class OperandStackUnderflowProblem extends InvalidByteCodeGeneratedProblem
+public final class OperandStackUnderflowProblem extends InvalidByteCodeGeneratedProblem implements IOperandStackUnderflowProblem
 {
     public static final String DESCRIPTION =
         "Generated byte code contains an operand stack underflow.";
diff --git a/compiler/src/main/java/org/apache/royale/compiler/problems/ParserProblem.java b/compiler/src/main/java/org/apache/royale/compiler/problems/ParserProblem.java
index 94a62ad..07c7a2f 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/problems/ParserProblem.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/problems/ParserProblem.java
@@ -25,7 +25,7 @@ import org.apache.royale.compiler.internal.parsing.TokenBase;
 /**
  * This error represents a general error that has been encountered during parsing, usually triggered by an exception
  */
-public class ParserProblem extends CompilerProblem
+public class ParserProblem extends CompilerProblem implements IParserProblem
 {
     public static final String DESCRIPTION =
         "Internal parsing problem";

-- 
To stop receiving notification emails like this one, please contact
"commits@royale.apache.org" <co...@royale.apache.org>.