<?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.6-SNAPSHOT</version>
  </parent>

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

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

  <build>
    <plugins>
        <plugin>
            <groupId>io.github.zlika</groupId>
            <artifactId>reproducible-build-maven-plugin</artifactId>
            <version>0.9</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
          <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>
        <version>1.4.3</version>
        <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>
        <version>2.0-beta-1</version>
        <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>
        <version>1.5.0</version>
        <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>
        <version>1.10.4</version>
        <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>
        <version>3.5.2</version>
        <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>
        <version>${compiler-build-tools.version}</version>
        <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>
        </executions>
      </plugin>

      <!-- Make the surefire execute all unit-tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <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>
        <version>2.18.1</version>
        <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>include-sdk-compile-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>
  </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.6-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.6-SNAPSHOT</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.compiler</groupId>
      <artifactId>compiler-externc</artifactId>
      <version>0.9.6-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>
    <dependency>
      <groupId>com.adobe.flash.framework</groupId>
      <artifactId>playerglobal</artifactId>
      <version>${flash.version}</version>
      <type>swc</type>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>
