<?xml version="1.0" encoding="UTF-8"?>
<!--

  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.

--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.royale.compiler</groupId>
    <artifactId>royale-compiler-parent</artifactId>
    <version>0.9.8-SNAPSHOT</version>
  </parent>

  <artifactId>compiler</artifactId>
  <version>0.9.8-SNAPSHOT</version>

  <name>Apache Royale: Compiler: Compiler</name>
  <description>The Apache Royale Compiler</description>

  <build>
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <executions>
            <execution>
              <id>default-jar</id>
              <configuration>
                <archive>
                  <manifestEntries>
                    <!-- These paths are all defined the way the layout will be in the distribution -->
                    <Class-Path>compiler-common.jar external/antlr.jar external/antlr-runtime.jar external/commons-cli.jar external/commons-io.jar external/guava.jar external/lzma-sdk-4j.jar external/flex-tool-api.jar ..</Class-Path>
                  </manifestEntries>
                </archive>
              </configuration>
            </execution>
            <execution>
              <id>scripts-jar</id>
              <phase>package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
              <configuration>
                <classesDirectory>src/assembly/scripts</classesDirectory>
                <classifier>scripts</classifier>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <executions>
            <execution>
              <id>copy-externc-resources</id>
              <phase>process-test-resources</phase>
              <goals>
                <goal>copy-resources</goal>
              </goals>
            <configuration>
            <outputDirectory>${basedir}/../compiler-externc/target</outputDirectory>
              <resources>
                <resource>
                  <directory>${basedir}/../compiler-externc/src/test/config</directory>
                </resource>
              </resources>
            </configuration>
          </execution>
          <execution>
            <id>copy-custom-resources</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target</outputDirectory>
              <resources>
                <resource>
                  <directory>${basedir}/src/test/config</directory>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!--
              Do all the JFlex code generation
      -->
      <plugin>
        <groupId>de.jflex</groupId>
        <artifactId>maven-jflex-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-raw-as-tokenizer</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <outputDirectory>target/generated-sources/jflex</outputDirectory>
              <lexDefinitions>
                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex</lexDefinition>
              </lexDefinitions>
              <skeleton>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/skeleton.royale</skeleton>
            </configuration>
          </execution>
          <execution>
            <id>generate-raw-as-doc-tokenizer</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <outputDirectory>target/generated-sources/jflex</outputDirectory>
              <lexDefinitions>
                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASDocTokenizer.lex</lexDefinition>
              </lexDefinitions>
              <skeleton>src/main/jflex/org/apache/royale/compiler/internal/parsing/as/skeleton.default</skeleton>
            </configuration>
          </execution>
          <execution>
            <id>generate-raw-mxml-tokenizer</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <outputDirectory>target/generated-sources/jflex</outputDirectory>
              <lexDefinitions>
                <lexDefinition>src/main/jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex</lexDefinition>
              </lexDefinitions>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!--
            Do all the Antlr2 code generation
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antlr-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-as-parser</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <grammars>org/apache/royale/compiler/internal/parsing/as/ASParser.g</grammars>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>antlr</groupId>
            <artifactId>antlr</artifactId>
            <version>2.7.7</version>
          </dependency>
        </dependencies>
      </plugin>

      <!--
          The generation of the metadata-parser requires Antlr to
          load ImportMetadataTokenTypes.txt. Unfortunately Altlr
          looks in the current working directory. The only way to
          force it to work, is to start a new process with the
          working directory in the directory containing the file.
      -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-metadata-parser</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>java</executable>
              <arguments>
                <argument>-classpath</argument>
                <classpath />
                <arguments>antlr.Tool</arguments>
                <argument>-o</argument>
                <argument>../../../../../../../../../../target/generated-sources/antlr/org/apache/royale/compiler/internal/parsing/as</argument>
                <argument>MetadataParser.g</argument>
              </arguments>
              <workingDirectory>src/main/antlr/org/apache/royale/compiler/internal/parsing/as</workingDirectory>
              <sourceRoot>target/generated-sources/antlr</sourceRoot>
            </configuration>
          </execution>
          <execution>
              <id>generate-test-js-typedefs</id>
              <phase>test-compile</phase>
              <goals>
                  <goal>exec</goal>
              </goals>
              <configuration>
                  <executable>java</executable>
                  <arguments>
                      <argument>-classpath</argument>
                      <classpath />
                      <arguments>org.apache.royale.compiler.clients.EXTERNC</arguments>
                      <argument>-load-config+=../compiler-externc/src/test/config/externc-config.xml</argument>
                  </arguments>
              </configuration>
          </execution>
          <execution>
              <id>generate-test-js-swc</id>
              <phase>test-compile</phase>
              <goals>
                  <goal>exec</goal>
              </goals>
              <configuration>
                  <executable>java</executable>
                  <arguments>
                      <argument>-classpath</argument>
                      <classpath />
                      <arguments>org.apache.royale.compiler.clients.COMPC</arguments>
                      <argument>-load-config+=../compiler-externc/target/compile-as-config.xml</argument>
                      <argument>-output=../compiler-externc/target/js.swc</argument>
                  </arguments>
              </configuration>
          </execution>
          <execution>
              <id>generate-test-custom-swc</id>
              <phase>test-compile</phase>
              <goals>
                  <goal>exec</goal>
              </goals>
              <configuration>
                  <executable>java</executable>
                  <arguments>
                      <argument>-classpath</argument>
                      <classpath />
                      <arguments>org.apache.royale.compiler.clients.COMPC</arguments>
                      <argument>-load-config+=target/compile-as-config.xml</argument>
                      <argument>-output=target/custom.swc</argument>
                  </arguments>
              </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
            Do all the JBurg code generation.
      -->
      <plugin>
        <groupId>net.sourceforge.jburg</groupId>
        <artifactId>jburg-maven-plugin</artifactId>
        <extensions>true</extensions>
        <executions>
          <execution>
            <id>generate-css-emitter</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <includes>
                <include>CSSEmitter.jbg</include>
              </includes>
              <sourceDirectory>src/main/jburg/org/apache/royale/compiler/internal/css/codegen</sourceDirectory>
              <outputDirectory>target/generated-sources/jburg/org/apache/royale/compiler/internal/css/codegen</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>generate-cmc-emitter</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <includes>
                <include>CmcEmitter.jbg</include>
              </includes>
              <sourceDirectory>src/main/jburg/org/apache/royale/compiler/internal/as/codegen</sourceDirectory>
              <outputDirectory>target/generated-sources/jburg/org/apache/royale/compiler/internal/as/codegen</outputDirectory>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <!-- debug=true generates the "dump" method for Emitters, which is used for debugging -->
          <debug>true</debug>
        </configuration>
        <dependencies>
          <!-- this needs to be first in order to patch jburg -->
          <dependency>
            <groupId>org.apache.royale.compiler</groupId>
            <artifactId>compiler-jburg-types</artifactId>
            <version>${compiler-jburg-types.version}</version>
          </dependency>
          <dependency>
            <groupId>net.sourceforge.jburg</groupId>
            <artifactId>jburg</artifactId>
            <version>1.10.3</version>
          </dependency>
        </dependencies>
      </plugin>

      <!--
            Do all the Antlr3 code generation.
      -->
      <plugin>
        <groupId>org.antlr</groupId>
        <artifactId>antlr3-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-csslexer-and-cssparser</id>
            <goals>
              <goal>antlr</goal>
            </goals>
            <configuration>
              <includes>
                <include>CSS.g</include>
              </includes>
              <sourceDirectory>src/main/antlr3/org/apache/royale/compiler/internal/css</sourceDirectory>
              <outputDirectory>target/generated-sources/antlr3/org/apache/royale/compiler/internal/css</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>generate-csstree</id>
            <goals>
              <goal>antlr</goal>
            </goals>
            <configuration>
              <includes>
                <include>CSSTree.g</include>
              </includes>
              <sourceDirectory>src/main/antlr3/org/apache/royale/compiler/internal/css</sourceDirectory>
              <outputDirectory>target/generated-sources/antlr3/org/apache/royale/compiler/internal/css</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
              Do all the custom processing with the royale build tools.
      -->
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>compiler-build-tools</artifactId>
        <executions>
          <execution>
            <id>generate-unknown-tree-handler</id>
            <goals>
              <goal>generate-unknown-tree-handler</goal>
            </goals>
            <configuration>
              <inputFile>org/apache/royale/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.xml</inputFile>
              <outputFile>org/apache/royale/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.java</outputFile>
            </configuration>
          </execution>
          <execution>
            <id>add-suppress-unused-warnings-annotations</id>
            <goals>
              <goal>add-class-annotation</goal>
            </goals>
            <configuration>
              <includes>
                <include>antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.java</include>
                <include>antlr/org/apache/royale/compiler/internal/parsing/as/ASTokenTypes.java</include>
                <include>antlr/org/apache/royale/compiler/internal/parsing/as/MetadataTokenTypes.java</include>
              </includes>
              <annotation>@SuppressWarnings("unused")</annotation>
            </configuration>
          </execution>
          <execution>
            <id>add-suppress-all-warnings-annotations-css</id>
            <goals>
              <goal>add-class-annotation</goal>
            </goals>
            <configuration>
              <includes>
                <include>antlr3/org/apache/royale/compiler/internal/css/CSSLexer.java</include>
                <include>antlr3/org/apache/royale/compiler/internal/css/CSSParser.java</include>
              </includes>
              <annotation>@SuppressWarnings("all")</annotation>
              <dateStart>// $ANTLR 3.5.2 ***CSS.g</dateStart>
            </configuration>
          </execution>
          <execution>
            <id>add-suppress-all-warnings-annotations-csstree</id>
            <goals>
              <goal>add-class-annotation</goal>
            </goals>
            <configuration>
              <includes>
                <include>antlr3/org/apache/royale/compiler/internal/css/CSSTree.java</include>
              </includes>
              <annotation>@SuppressWarnings("all")</annotation>
              <dateStart>// $ANTLR 3.5.2 ***CSSTree.g</dateStart>
            </configuration>
          </execution>
          <execution>
            <id>add-suppress-all-warnings-annotations-jburg</id>
            <goals>
              <goal>add-class-annotation</goal>
            </goals>
            <configuration>
              <includes>
                <include>antlr/org/apache/royale/compiler/internal/parsing/as/MetadataParser.java</include>
              </includes>
              <annotation>@SuppressWarnings("all")</annotation>
            </configuration>
          </execution>
          <execution>
            <id>add-suppress-rawtypes-unchecked-unused-warnings-annotations</id>
            <goals>
              <goal>add-class-annotation</goal>
            </goals>
            <configuration>
              <includes>
                <include>jburg/org/apache/royale/compiler/internal/css/codegen/CSSEmitter.java</include>
                <include>jburg/org/apache/royale/compiler/internal/as/codegen/CmcEmitter.java</include>
              </includes>
              <annotation>@SuppressWarnings({"rawtypes", "unchecked", "unused"})</annotation>
              <dateStart>/*  Generated</dateStart>
              <dateEnd> by JBurg</dateEnd>
            </configuration>
          </execution>
          <execution>
            <id>generate-problems-enum</id>
            <goals>
              <goal>generate-problems-enum</goal>
            </goals>
          </execution>
          <execution>
            <id>generate-problems-resource-bundle</id>
            <goals>
              <goal>generate-problems-resource-bundle</goal>
            </goals>
          </execution>
          <execution>
            <id>order-jflex-switch-statements</id>
            <goals>
              <goal>order-jflex-switches</goal>
            </goals>
            <configuration>
              <includes>
              <include>jflex/org/apache/royale/compiler/internal/parsing/as/RawASDocTokenizer.java</include>
              <include>jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.java</include>
              <include>jflex/org/apache/royale/compiler/internal/parsing/mxml/RawMXMLTokenizer.java</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Make the surefire execute all unit-tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <includes>
            <include>**/*Tests.java</include>
          </includes>
          <excludes>
            <exclude>as/**/*Tests.java</exclude>
            <exclude>f/**</exclude>
            <exclude>mxml/tags/**</exclude>
            <exclude>properties/**</exclude>
            <exclude>**/MXMLComponentTagTests.java</exclude>
            <exclude>**/MXMLComponentNodeTests.java</exclude>
            <exclude>**/MXMLHTTPServiceTagTests.java</exclude>
            <exclude>**/MXMLModelTagTests.java</exclude>
            <exclude>**/MXMLRemoteObjectNodeTests.java</exclude>
            <exclude>**/MXMLWebServiceNodeTests.java</exclude>
            <exclude>**/MXMLDesignLayerNodeTests.java</exclude>
            <exclude>**/MXMLHTTPServiceNodeTests.java</exclude>
            <exclude>**/MXMLModelNodeTests.java</exclude>
            <exclude>**/MXMLRemoteObjectTagTests.java</exclude>
            <exclude>**/MXMLStateNodeTests.java</exclude>
            <exclude>**/MXMLVectorNodeTests.java</exclude>
            <exclude>**/MXMLWebServiceTagTests.java</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <includes>
            <include>as/**/*Tests.java</include>
          </includes>
          <excludes>
            <exclude>f/**</exclude>
            <exclude>mxml/tags/**</exclude>
            <exclude>properties/**</exclude>
            <exclude>**/MXMLComponentTagTests.java</exclude>
            <exclude>**/MXMLComponentNodeTests.java</exclude>
            <exclude>**/MXMLHTTPServiceTagTests.java</exclude>
            <exclude>**/MXMLModelTagTests.java</exclude>
            <exclude>**/MXMLRemoteObjectNodeTests.java</exclude>
            <exclude>**/MXMLWebServiceNodeTests.java</exclude>
            <exclude>**/MXMLDesignLayerNodeTests.java</exclude>
            <exclude>**/MXMLHTTPServiceNodeTests.java</exclude>
            <exclude>**/MXMLModelNodeTests.java</exclude>
            <exclude>**/MXMLRemoteObjectTagTests.java</exclude>
            <exclude>**/MXMLStateNodeTests.java</exclude>
            <exclude>**/MXMLVectorNodeTests.java</exclude>
            <exclude>**/MXMLWebServiceTagTests.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <!--
        This profile adds one test, that relies on the original FDK being
        available as it compiles each project in the framework/projects
        directory. It requires some environment variables being set.
    -->
    <profile>
      <id>option-with-flex-sdk-tests</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <includes combine.children="append">
                <include>f/**/*Tests.java</include>
                <include>mxml/**/*Tests.java</include>
                <include>properties/**/*Tests.java</include>
                <include>**/MXMLComponentTagTests.java</include>
                <include>**/MXMLComponentNodeTests.java</include>
                <include>**/MXMLHTTPServiceTagTests.java</include>
                <include>**/MXMLModelTagTests.java</include>
                <include>**/MXMLRemoteObjectNodeTests.java</include>
                <include>**/MXMLWebServiceNodeTests.java</include>
                <include>**/MXMLDesignLayerNodeTests.java</include>
                <include>**/MXMLHTTPServiceNodeTests.java</include>
                <include>**/MXMLModelNodeTests.java</include>
                <include>**/MXMLRemoteObjectTagTests.java</include>
                <include>**/MXMLStateNodeTests.java</include>
                <include>**/MXMLVectorNodeTests.java</include>
                <include>**/MXMLWebServiceTagTests.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Also run tests using the FLASHPLAYER_DEBUGGER -->
    <profile>
      <id>option-with-swf</id>
      <dependencies>
        <!-- Ensure the playerglobal is available for running tests -->
        <dependency>
          <groupId>com.adobe.flash.framework</groupId>
          <artifactId>playerglobal</artifactId>
          <version>${flash.version}</version>
          <type>swc</type>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-jburg-types</artifactId>
      <version>${compiler-jburg-types.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-common</artifactId>
      <version>0.9.8-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.flex</groupId>
      <artifactId>flex-tool-api</artifactId>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr</artifactId>
      <version>3.3</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>25.1-jre</version>
    </dependency>
    <dependency>
      <groupId>net.sourceforge.jburg</groupId>
      <artifactId>jburg</artifactId>
      <version>1.10.3</version>
    </dependency>
    <dependency>
      <groupId>de.jflex</groupId>
      <artifactId>jflex</artifactId>
      <version>1.6.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.apache.ant</groupId>
          <artifactId>ant</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.b1.pack</groupId>
      <artifactId>lzma-sdk-4j</artifactId>
      <version>9.22.0</version>
    </dependency>

    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-test-utils</artifactId>
      <version>0.9.8-SNAPSHOT</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-externc</artifactId>
      <version>0.9.8-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
    <!-- TODO: Currently only needed for the duplicate FlashplayerSecurityHandler -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

<properties /></project>
