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

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

  <properties>
      <project.compiler.options>
        ${repo.compiler.options};
        -js-default-initializers=false;
        -source-map=${source.map};
        -source-map-source-root=/frameworks/projects/${project.artifactId}/src/main/royale/
        -js-complex-implicit-coercions=false;
        -js-vector-index-checks=false;
        -js-resolve-uncertain=false;
      </project.compiler.options>
  <project.build.outputTimestamp>2022-03-17T08:05:21Z</project.build.outputTimestamp></properties>
  
  <name>Apache Royale: Framework: Libs</name>

  <modules>
    <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>MXRoyaleBase</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>
