diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleJSProject.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleJSProject.java
index da8cef4..8bf9044 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleJSProject.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleJSProject.java
@@ -33,6 +33,7 @@
 import org.apache.royale.compiler.asdoc.royale.ASDocComment;
 import org.apache.royale.compiler.clients.JSConfiguration;
 import org.apache.royale.compiler.common.DependencyType;
+import org.apache.royale.compiler.common.DependencyTypeSet;
 import org.apache.royale.compiler.config.CompilerDiagnosticsConstants;
 import org.apache.royale.compiler.config.Configuration;
 import org.apache.royale.compiler.config.Configurator;
@@ -103,6 +104,24 @@
     public ICompilationUnit mainCU;
 
     @Override
+    public void addDependency(ICompilationUnit from, ICompilationUnit to, DependencyTypeSet dt, String qname)
+    {
+        if (to.getCompilationUnitType() == UnitType.SWC_UNIT)
+        {
+            List<IDefinition> dp = to.getDefinitionPromises();
+            if(dp.size() > 0)
+            {
+                if (!isGoogProvided(dp.get(0).getQualifiedName()))
+                {
+                    SWCCompilationUnit swcUnit = (SWCCompilationUnit) to;
+                    swcExterns.add(swcUnit.getSWC());
+                }
+            }
+        }
+        super.addDependency(from, to, dt, qname);
+    }
+
+    @Override
     public void addDependency(ICompilationUnit from, ICompilationUnit to,
                               DependencyType dt, String qname)
     {
