<?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>projects</artifactId>
    <version>0.9.9</version>
  </parent>

  <artifactId>Core</artifactId>
  <version>0.9.9</version>
  <packaging>swc</packaging>

  <name>Apache Royale: Framework: Libs: Core</name>

  <build>
    <sourceDirectory>src/main/royale</sourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <version>${project.royale.compiler.version}</version>
        <extensions>true</extensions>
        <configuration>
          <namespaces>
            <namespace>
              <uri>library://ns.apache.org/royale/basic</uri>
              <manifest>${project.basedir}/src/main/resources/basic-manifest.xml</manifest>
            </namespace>
          </namespaces>
          <includeClasses>
            <includeClass>CoreClasses</includeClass>
          </includeClasses>
          <skipExtern>true</skipExtern>
          <skipAS>${royale.skipAS}</skipAS>
          <allowSubclassOverrides>true</allowSubclassOverrides>
          <additionalCompilerOptions>-allow-abstract-classes;${project.compiler.options};-js-vector-emulation-class=Array</additionalCompilerOptions>
        </configuration>
        <!-- As a test, add asdoc generation to the compile step -->
        <executions>
          <execution>
            <id>site</id>
            <phase>compile</phase>
            <goals>
              <goal>compile-asdoc</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <!-- Language is included to permit a concrete reference
     to the arrayLike iterator to be re-exported, so that it is always available -->
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>Language</artifactId>
      <version>0.9.9</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>option-with-swf</id>
      <dependencies>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>Language</artifactId>
          <version>0.9.9</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
<properties><project.build.outputTimestamp>2022-03-17T08:05:21Z</project.build.outputTimestamp></properties></project>
