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

  <artifactId>projects</artifactId>
  <version>0.9.8-SNAPSHOT</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>
  </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>
