<?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.7-SNAPSHOT</version>
  </parent>

  <artifactId>projects</artifactId>
  <version>0.9.7-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
      <project.compiler.options>${repo.compiler.options}-js-default-initializers=false;-source-map=${source.map}</project.compiler.options>
  </properties>
  
  <name>Apache Royale: Framework: Libs</name>

  <modules>
    <module>Binding</module>
    <module>Charts</module>
    <module>Collections</module>
    <module>Core</module>
    <module>Basic</module>
    <module>CreateJS</module>
    <module>DragDrop</module>
    <module>Effects</module>
    <module>Express</module>
    <module>Flat</module>
    <module>Formatters</module>
    <module>FontAwesome</module>
    <module>GoogleMaps</module>
    <module>Graphics</module>
    <module>HTML</module>
    <module>HTML5</module>
    <module>JQuery</module>
    <module>Language</module>
    <module>MaterialDesignLite</module>
    <module>Mobile</module>
    <module>Reflection</module>
    <module>Network</module>
    <module>Storage</module>
    <module>XML</module>
    <module>Text</module>
    <module>TLF</module>
    <module>RoyaleSite</module>
    <module>MXRoyale</module>
    <module>Icons</module>
    <module>SparkRoyale</module>
    <module>Jewel</module>
  </modules>

  <profiles>
    <profile>
      <id>brokenmodules</id>
      <modules>
          <!-- Seems to be missing a flexunit? -->
          <module>RoyaleUnit</module>
      </modules>
    </profile>
  </profiles>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <version>${royale.compiler.version}</version>
        <configuration>
          <!-- We don't want dependencies to be linked into the resulting libraries -->
          <forceSwcExternalLibraryPath>true</forceSwcExternalLibraryPath>
          <additionalCompilerOptions>${project.compiler.options}</additionalCompilerOptions>
        </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>
