blob: 181cb92771be1d579221425f1be03a5ef4c878ca [file] [log] [blame]
Apache Royale Compiler
====================
This Apache Royale Compiler was formerly known as the 'Falcon' compiler. It was
originally destined to be the next-generation replacement to the MXMLC compiler
that is currently bundled with the Apache Flex SDK. This compiler is based on the
Adobe ASC2.0 code base donated to Apache by Adobe Systems Inc.
The compiler has been modified and extended to transpile MXML and ActionScript
to JavaScript and potentially other output definitions and is
now being used as the compiler for the Apache Royale SDK. Royale is a
next-generation SDK that allows the developer to leverage MXML and ActionScript
to build applications that not only run as a SWF, but can also be cross-compiled
to JavaScript and run natively in a browser or anywhere JavaScript runs.
Getting the latest sources via git
==================================
Getting the source code is the recommended way to get the Apache Royale Compiler.
The compiler can also be installed by installing an Apache Royale SDK via NPM
or by unpacking Apache Royale binary distributions available from link on our
website at http://royale.apache.org/.
You can always checkout the latest source via git using the following
command:
git clone https://github.com/apache/royale-compiler.git royale-compiler
cd royale-compiler
git checkout develop
Building the Apache Royale Compiler
=================================
The Apache Royale Compiler is a large project. It requires some build tools
which must be installed prior to building the compiler and it depends on
some external software which are downloaded as part of the build process.
Some of these have different licenses. See the Software Dependencies section
for more information on the external software dependencies.
Linux support is currently experimental has not been fully tested so you
may run into issues.
You can build the Apache Royale Compiler with Apache Maven or Apache Ant.
Building the Apache Royale Compiler with Apache Maven
-----------------------------------------------------
Before building the Apache Royale Compiler with Apache Maven you must install
the following software.
==================================================================================
SOFTWARE
==================================================================================
Java SDK 8 or greater (*1)
Maven 3.3.9 or greater (*1)
==================================================================================
*1) The bin directories for Maven and Java should be added to your
PATH.
Then run
mvn clean install
Building the Apache Royale Compiler with Ant
----------------------------------------------
Before building the Apache Royale Compiler with Apache Ant you must install
the following software and set the corresponding environment variables using
absolute file paths. Relative file paths will result in build errors.
==================================================================================
SOFTWARE ENVIRONMENT VARIABLE (absolute paths)
==================================================================================
Java SDK 1.7 or greater (*1) JAVA_HOME
(for Java 1.7 see note at (*2))
Ant 1.7.1 or greater (*1) ANT_HOME
(for Java 1.7 see note at (*2))
==================================================================================
*1) The bin directories for ANT_HOME and JAVA_HOME should be added to your
PATH.
On Windows, set PATH to
PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin
On the Mac (bash), set PATH to
export PATH="$PATH:$ANT_HOME/bin:$JAVA_HOME/bin"
On Linux make sure you path include ANT_HOME and JAVA_HOME.
*2) If you are using Java SDK 1.7 or greater on a Mac you must use Ant 1.8
or greater. If you use Java 1.7 with Ant 1.7, ant reports the java
version as 1.6 so the JVM args for the data model (-d32/-d64) will not
be set correctly and you will get compile errors.
Once you've done that, use
ant main (or just ant since the default target is main)
to download the third-party dependencies and build the source and run
some tests. Since the third-party dependencies take a little while to
download and they don't change very often, they are not cleaned with
the regular clean target.
To clean the build of everything other than the downloaded third-party
dependencies use
ant clean
To clean the build, of everything, including the downloaded third-party
dependencies use
ant wipe-all (which is just thirdparty-clean followed by clean)
To get a brief listing of all the targets type
ant -projecthelp
Running Integration Tests
-------------------------
The build process will run some tests. By default, the build will not
run feature or integration tests. Before running some of the feature or
integration tests you will need to set the environment variables described
below, or set up a env.properties file with those settings.
A template is found here: env-template.properties.
Some tests of SWF output may use the Adobe Flash Player or Adobe AIR to
run a SWF. If you plan to run those tests, ensure that the folder
containing the source code is in your Flash Player Trust files.
==================================================================================
SOFTWARE ENVIRONMENT VARIABLE (absolute paths)
==================================================================================
Apache Royale SDK or repository (*3) ASJS_HOME
Adobe AIR Integration Kit (*4) AIR_HOME
Adobe Flash Player Content Debugger (*5) FLASHPLAYER_DEBUGGER
Adobe Flash Player playerglobal swcs (*6) PLAYERGLOBAL_HOME
Adobe Flash Player playerglobal swcs (*6) PLAYERGLOBAL_VERSION
Apache Flex SDK or repository (*7) FLEX_HOME
Apache Flex TLF source (*8) TLF_HOME
==================================================================================
*3) This option is only required to run additional tests to verify that the compiler
can output Royale applications that use Royale framework SWCs.
Set the ASJS_HOME variable to the root of the Apache Royale SDK or
royale-asjs repository.
*4) This option is only required to run additional tests to verify that the compiler
can output SWFs.
The Adobe AIR integration kit for Windows can be downloaded from:
http://airdownload.adobe.com/air/win/download/4.0/AdobeAIRSDK.zip
The Adobe AIR integration kit for Mac can be downloaded from:
http://airdownload.adobe.com/air/mac/download/4.0/AdobeAIRSDK.tbz2
The Adobe AIR integration kit for Linux can be downloaded from:
http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
Download the AIR SDK for your platform and unzip it. Set AIR_HOME to the
absolute path of the AIR SDK directory.
*5) This option is only required to run additional tests to verify that the compiler
can output SWFs.
The Adobe Flash Player content debuggers can be found here:
http://www.adobe.com/support/flashplayer/downloads.html
On Windows, set FLASHPLAYER_DEBUGGER to the absolute path including the
filename of the FlashPlayerDebugger.exe. Note the filename of flash
player debugger maybe different.
e.g. C:\MyPath\FlashPlayerDebugger.exe
On the Mac, set FLASHPLAYER_DEBUGGER to the absolute path of
Flash Player Debugger.app/Contents/MacOS/Flash Player Debugger
On Linux, set FLASHPLAYER_DEBUGGER to the absolute path of
flashplayerdebugger
*6) This option is only required to run additional tests to verify that the compiler
can output SWFs.
The Adobe Flash Player playerglobal.swc for 11.1 can be downloaded from:
http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_1.swc
Use URL above to download playerglobal11_1.swc.
Set PLAYERGLOBAL_HOME to the absolute path of the player directory (not
including the version subdirectory). The target-player option controls
which PLAYERGLOBAL_HOME subdirectory is used.
Other more recent versions of Adobe Flash Player playerglobal.swc can be
downloaded from:
http://download.macromedia.com/get/flashplayer/updaters/<version.major>/playerglobal<version.major>_<version.minor>.swc
(e.g. http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_1.swc)
Copy the target playerglobal.swc to the directory:
frameworks/libs/player/<version.major>.<version.minor>/playerglobal.swc
These can be used with the Apache Royale Compiler but not all have not been fully
tested.
Set PLAYERGLOBAL_VERSION to the version you chose. The default is 11.1.
*7) This option is only required to run additional tests to verify that the compiler
can output SWFs.
The FLEX_HOME variable should point to a folder of the flex-sdk sources.
If you dont provide this variable (and TLF_HOME and BLAZEDS_HOME),
you may not be able to run all of the tests in the compiler
and compiler-jx folders.
*8) This option is only required to run additional tests to verify that the compiler
can output SWFs.
The TLF_HOME variable should point to a folder containing a folder
named textLayout that contains a src folder of the TLF sources.
This should be the root of the flex-tlf repository, or can be
the frameworks/projects folder of an IDE compatible Royale SDK.
Software Dependencies
---------------------
The Apache Royale Compiler uses third-party code that will be downloaded as
part of the build.
The Apache Version 2.0 license is in the LICENSE file.
The following dependencies have licenses which are, or are compatible with,
the Apache Version 2.0 license. You will not be prompted to acknowledge the
download. Most of the jars are installed in lib/external when installed
into an Apache Royale SDK and the lib folder in the repository working copy.
antlr - https://repo1.maven.org/maven2/org/antlr/antlr-complete/3.5.2/antlr-3.5.2-complete.jar
args4j = http://search.maven.org/remotecontent?filepath=args4j/args4j/2.0.28/args4j-2.0.28.jar
commons-cli - https://repo1.maven.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2-bin.tar.gz
commons-io - https://repo1.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.tar.gz
commons-lang - https://repo1.maven.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.tar.gz
commons-lang3 - https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar
commons-compress - https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.10/commons-compress-1.10.jar
guava - https://repo1.maven.org/maven2/com/google/guava/guava/17.0/guava-17.0.jar
jburg - https://repo1.maven.org/maven2/net/sourceforge/jburg/jburg/1.10.2/jburg-1.10.2.jar
jflex - https://jflex.de/jflex-1.6.0.tar.gz
lzma - http://www.java2s.com/Code/JarDownload/lzma/lzma-9.20.jar.zip
Google Closure Compiler - http://github.com/google/closure-compiler/archive/v20181210.zip
The Google Closure Compiler includes files originally from Rhino under MPL 1.1. For
details see:
https://github.com/google/closure-compiler/blob/master/README.md.
Rhino is available at:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino
Using the Binary Distribution
-----------------------------
The binary artifacts produced by the Maven build are then used by Maven projects
to build Apache Royale applications. See the archetypes in the royale-asjs repo
or the examples in the royale-asjs repo.
The binaries produced by the Apache Ant build are intended to be packaged into an
Apache Royale SDK to create Apache Royale applications via Ant.
To temporarily use a set of binary artifacts when building Apache Royale
applications with Apache Ant, set the ROYALE_COMPILER_HOME property to the
compiler-jx folder in the binary distribution and set ROYALE_SWF_COMPILER_HOME
to the compiler folder in the binary distribution either via an
environment variable or property when running Ant to build the Apache Royale
application.
To replace the current Royale Compiler binaries in a Apache Royale SDK,
run the copy-compiler target from the Ant script in the Apache Royale SDK and
set ROYALE_COMPILER_REPO to the root of the binary distribution when running
that target.
ant -DROYALE_COMPILER_REPO=<path to binary distribution> copy-compiler
Thanks for using Apache Royale. Enjoy!
The Apache Royale Project
<http://royale.apache.org>