<?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>
          <configuration>
            <archive>
              <manifestEntries>
                <Class-Path>external/closure-compiler-v20181210.jar compiler-common.jar external/antlr-2.7.7.jar external/antlr-3.3.jar external/antlr-runtime-3.3.jar external/commons-cli-1.2.jar external/commons-io-2.4.jar external/guava-25.1-jre.jar external/lzma-sdk-4j-9.22.0.jar external/flex-tool-api-1.0.0.jar ..</Class-Path>
                <!-- <Class-Path>compiler-common.jar external/antlr.jar external/commons-cli.jar external/commons-io.jar external/guava.jar external/lzma-sdk.jar external/flex-tool-api.jar ..</Class-Path> -->
              </manifestEntries>
            </archive>
          </configuration>
        </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>
