in flex/tools/idea-fcsh-fix/flex4_0/src/com/intellij/flex/Fcsh4WithFix0.java [532:685]
private static void compile_mxmlc(Target s)
{
LocalizationManager l10n = ThreadLocalToolkit.getLocalizationManager();
Benchmark benchmark = null;
try
{
// setup the path resolver
CompilerAPI.usePathResolver();
// process configuration
ConfigurationBuffer cfgbuf = new ConfigurationBuffer(CommandLineConfiguration.class, Configuration.getAliases());
cfgbuf.setDefaultVar(Mxmlc.FILE_SPECS);
DefaultsConfigurator.loadDefaults( cfgbuf );
CommandLineConfiguration configuration = (CommandLineConfiguration) Mxmlc.processConfiguration(
ThreadLocalToolkit.getLocalizationManager(), "mxmlc", s.args, cfgbuf, CommandLineConfiguration.class, Mxmlc.FILE_SPECS);
CompilerAPI.setupHeadless(configuration);
if (configuration.benchmark())
{
benchmark = CompilerAPI.runBenchmark();
benchmark.startTime(Benchmark.PRECOMPILE);
}
else
{
CompilerAPI.disableBenchmark();
}
s.sourcePath.clearCache();
s.bundlePath.clearCache();
s.resources.refresh();
// C: We don't really need to parse the manifest files again.
CompilerConfiguration compilerConfig = configuration.getCompilerConfiguration();
NameMappings mappings = CompilerAPI.getNameMappings(configuration);
Transcoder[] transcoders = WebTierAPI.getTranscoders( configuration );
SubCompiler[] compilers = WebTierAPI.getCompilers(compilerConfig, mappings, transcoders);
if (benchmark != null)
{
benchmark.benchmark(l10n.getLocalizedTextString(new InitialSetup()));
}
CompilerSwcContext swcContext = new CompilerSwcContext(true);
swcContext.load( compilerConfig.getLibraryPath(),
Configuration.getAllExcludedLibraries(compilerConfig, configuration),
compilerConfig.getThemeFiles(),
compilerConfig.getIncludeLibraries(),
mappings,
I18nUtils.getTranslationFormat(compilerConfig),
s.swcCache );
configuration.addExterns( swcContext.getExterns() );
configuration.addIncludes( swcContext.getIncludes() );
configuration.getCompilerConfiguration().addThemeCssFiles( swcContext.getThemeStyleSheets() );
// recompile or incrementally compile...
boolean recompile = false;
int newChecksum = cfgbuf.checksum_ts() + swcContext.checksum();
if (newChecksum != s.checksum)
{
ThreadLocalToolkit.logInfo(l10n.getLocalizedTextString(new DetectConfigurationChange()));
s.checksum = newChecksum;
s.resources = new ResourceContainer();
recompile = true;
}
// validate CompilationUnits in FileSpec and SourcePath
if (CompilerAPI.validateCompilationUnits(s.fileSpec, s.sourceList, s.sourcePath, s.bundlePath, s.resources,
swcContext, s.perCompileData,
recompile, configuration) > 0)
{
Map licenseMap = configuration.getLicensesConfiguration().getLicenseMap();
// create a symbol table
SymbolTable symbolTable = new SymbolTable(configuration, s.perCompileData);
s.configuration = configuration;
VirtualFile projector = configuration.getProjector();
if (benchmark != null)
{
benchmark.stopTime(Benchmark.PRECOMPILE, false);
}
if (projector != null && projector.getName().endsWith("avmplus.exe"))
{
s.units = CompilerAPI.compile(s.fileSpec, s.sourceList, null, s.sourcePath, s.resources, s.bundlePath,
swcContext, symbolTable, mappings, configuration, compilers,
null, licenseMap, new ArrayList<Source>());
}
else
{
s.units = CompilerAPI.compile(s.fileSpec, s.sourceList, null, s.sourcePath, s.resources, s.bundlePath,
swcContext, symbolTable, mappings, configuration, compilers,
new PreLink(), licenseMap, new ArrayList<Source>());
}
if (benchmark != null)
{
benchmark.startTime(Benchmark.POSTCOMPILE);
}
s.sourcePath.clearCache();
s.bundlePath.clearCache();
s.resources.refresh();
}
else
{
ThreadLocalToolkit.logInfo(l10n.getLocalizedTextString(new NoChange()));
}
}
catch (ConfigurationException ex)
{
Mxmlc.processConfigurationException(ex, "mxmlc");
}
catch (LicenseException ex)
{
ThreadLocalToolkit.logError(ex.getMessage());
}
catch (CompilerException ex)
{
assert ThreadLocalToolkit.errorCount() > 0;
}
catch (SwcException ex)
{
assert ThreadLocalToolkit.errorCount() > 0;
}
catch (IOException t) // IOException, Throwable
{
ThreadLocalToolkit.logError(t.getMessage());
if (Trace.error)
{
t.printStackTrace();
}
}
finally
{
if (benchmark != null)
{
if ((ThreadLocalToolkit.errorCount() == 0) &&
benchmark.hasStarted(Benchmark.POSTCOMPILE))
{
benchmark.stopTime(Benchmark.POSTCOMPILE, false);
}
benchmark.totalTime();
benchmark.peakMemoryUsage(true);
}
CompilerAPI.removePathResolver();
}
}