<?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.framework</groupId>
    <artifactId>frameworks</artifactId>
    <version>0.9.8</version>
  </parent>

  <artifactId>projects</artifactId>
  <version>0.9.8</version>
  <packaging>pom</packaging>

  <properties>
      <project.compiler.options>${repo.compiler.options}-js-default-initializers=false;-source-map=${source.map};-js-complex-implicit-coercions=false;-js-vector-index-checks=false;-js-resolve-uncertain=false</project.compiler.options>
  <project.build.outputTimestamp>2020-03-27T08:32:05Z</project.build.outputTimestamp></properties>
  
  <name>Apache Royale: Framework: Libs</name>

  <modules>
    <!-- Disabled because it requires an ACE typedef and that isn't available in the Maven build yet -->
    <!--module>Ace</module-->
    <module>Basic</module>
    <module>Binding</module>
    <module>Charts</module>
    <module>Collections</module>
    <module>Core</module>
    <module>CreateJS</module>
    <module>Crux</module>
    <module>DragDrop</module>
    <module>Effects</module>
    <module>Express</module>
    <module>Flat</module>
    <module>FontAwesome</module>
    <module>Formatters</module>
    <module>GoogleMaps</module>
    <module>Graphics</module>
    <module>HTML</module>
    <module>HTML5</module>
    <module>Icons</module>
    <module>Jewel</module>
    <module>JQuery</module>
    <module>Language</module>
    <module>MaterialDesignLite</module>
    <module>Mobile</module>
    <module>MXRoyale</module>
    <module>Network</module>
    <module>Reflection</module>
    <module>RoyaleSite</module>
    <module>RoyaleUnit</module>
    <module>RoyaleUnitUI</module>
    <module>SparkRoyale</module>
    <module>Storage</module>
    <module>Text</module>
    <module>TLF</module>
    <module>XML</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <configuration>
          <!-- We don't want dependencies to be linked into the resulting libraries -->
          <forceSwcExternalLibraryPath>true</forceSwcExternalLibraryPath>
          <additionalCompilerOptions>${project.compiler.options}</additionalCompilerOptions>
          <targets>${royale.targets}</targets>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.royale.typedefs</groupId>
      <artifactId>royale-typedefs-gcl</artifactId>
      <version>${royale.typedefs.version}</version>
      <type>swc</type>
      <classifier>typedefs</classifier>
    </dependency>
    <!--
      By declaring this dependency here, we force the royale-externs-js to be
      added to the external library path of all modules. Without this it would
      have gone to the library path.
    -->
    <dependency>
      <groupId>org.apache.royale.typedefs</groupId>
      <artifactId>royale-typedefs-js</artifactId>
      <version>${royale.typedefs.version}</version>
      <type>swc</type>
      <classifier>typedefs</classifier>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

</project>
