<!--
  Copyright 2019 The TensorFlow Authors. All Rights Reserved.

  Licensed 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 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.tensorflow</groupId>
    <artifactId>tensorflow-java</artifactId>
    <version>0.5.0</version>
  </parent>
  <artifactId>tensorflow-core</artifactId>
  <packaging>pom</packaging>

  <name>TensorFlow Core Parent</name>
  <description>Parent POM of TensorFlow core artifacts</description>

  <modules>
    <module>tensorflow-core-generator</module>
    <module>tensorflow-core-api</module>
  </modules>

  <properties>
    <!--
    Match version used by TensorFlow, in
    https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace2.bzl#L567
    (but for the currently used release, not master)
    
    Bumped to newer version to patch a CVE only present in protobuf-java
    -->
    <protobuf.version>3.19.4</protobuf.version>

    <native.classifier>${javacpp.platform}${javacpp.platform.extension}</native.classifier>
    <javacpp.build.skip>false</javacpp.build.skip>       <!-- To skip execution of build.sh: -Djavacpp.build.skip=true -->
    <javacpp.parser.skip>false</javacpp.parser.skip>     <!-- To skip header file parsing phase: -Djavacpp.parser.skip=true  -->
    <javacpp.compiler.skip>false</javacpp.compiler.skip> <!-- To skip native compilation phase: -Djavacpp.compiler.skip=true -->
    <javacpp.platform.extension></javacpp.platform.extension>
    <javacpp.platform.properties>${javacpp.platform}</javacpp.platform.properties>
    <javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf>
    <javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64>
    <javacpp.platform.linux-ppc64le>linux-ppc64le</javacpp.platform.linux-ppc64le>
    <javacpp.platform.linux-x86>linux-x86</javacpp.platform.linux-x86>
    <javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
    <javacpp.platform.macosx-arm64>macosx-arm64</javacpp.platform.macosx-arm64>
    <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
    <javacpp.platform.windows-x86>windows-x86</javacpp.platform.windows-x86>
    <javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64>
    <javacpp.platform.linux-armhf.extension>linux-armhf${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
    <javacpp.platform.linux-arm64.extension>linux-arm64${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
    <javacpp.platform.linux-ppc64le.extension>linux-ppc64le${javacpp.platform.extension}</javacpp.platform.linux-ppc64le.extension>
    <javacpp.platform.linux-x86.extension>linux-x86${javacpp.platform.extension}</javacpp.platform.linux-x86.extension>
    <javacpp.platform.linux-x86_64.extension>linux-x86_64${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
    <javacpp.platform.macosx-arm64.extension>macosx-arm64${javacpp.platform.extension}</javacpp.platform.macosx-arm64.extension>
    <javacpp.platform.macosx-x86_64.extension>macosx-x86_64${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
    <javacpp.platform.windows-x86.extension>windows-x86${javacpp.platform.extension}</javacpp.platform.windows-x86.extension>
    <javacpp.platform.windows-x86_64.extension>windows-x86_64${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
    <javacpp.version>1.5.8</javacpp.version>
  </properties>

  <profiles>
    <!--
    Include a single platform module in a Maven execution.
      This is the default behaviour. Since platform modules relies on the value of the
      javacpp.platform.extension, only one of them can be build in a single execution.
    -->
    <profile>
      <id>javacpp-platform-extension-default</id>
      <activation>
        <property>
          <name>javacpp.platform.extension</name>
          <value>!all</value>
        </property>
      </activation>
      <modules>
        <module>tensorflow-core-platform${javacpp.platform.extension}</module>
      </modules>
    </profile>

    <!--
    Include all platform modules for a Maven execution.
      Some plugin goals, like versions-maven-plugins:set, will apply changes to all modules found in
      the aggregator POM. Since tensorflow-core-platform-* modules are not declared explicitly, they
      will not be intercepted by these plugins.
      While this profile can be activated explicitly to include all platforms modules in a single
      Maven execution, just declaring them in its list of modules will expose them to the aggregator
      and plugins like versions-maven-plugin will automatically pick them up.
    -->
    <profile>
      <id>javacpp-platform-extension-all</id>
      <activation>
        <property>
          <name>javacpp.platform.extension</name>
          <value>all</value>
        </property>
      </activation>
      <modules>
        <module>tensorflow-core-platform</module>
        <module>tensorflow-core-platform-gpu</module>
        <!-- Disabling MKL builds until they are more stable and performant -->
        <!--module>tensorflow-core-platform-mkl</module-->
        <!--module>tensorflow-core-platform-mkl-gpu</module-->
      </modules>
    </profile>

    <profile>
      <id>javacpp-platform-default</id>
      <activation>
        <property>
          <name>!javacpp.platform</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform>${os.name}-${os.arch}</javacpp.platform>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-custom</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf>${javacpp.platform}</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64>${javacpp.platform}</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le>${javacpp.platform}</javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86>${javacpp.platform}</javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64>${javacpp.platform}</javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64>${javacpp.platform}</javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64>${javacpp.platform}</javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86>${javacpp.platform}</javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64>${javacpp.platform}</javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-host</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform>${os.name}-${os.arch}</javacpp.platform>
        <javacpp.platform.linux-armhf>${os.name}-${os.arch}</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64>${os.name}-${os.arch}</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le>${os.name}-${os.arch}</javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86>${os.name}-${os.arch}</javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64>${os.name}-${os.arch}</javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64>${os.name}-${os.arch}</javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64>${os.name}-${os.arch}</javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86>${os.name}-${os.arch}</javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64>${os.name}-${os.arch}</javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-true</id>
      <activation>
        <property>
          <name>javacpp.platform.custom</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform></javacpp.platform>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-none</id>
      <activation>
        <property>
          <name>javacpp.platform.none</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform></javacpp.platform>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-linux-armhf</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>linux-armhf</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf>${javacpp.platform}</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-linux-arm64</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>linux-arm64</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64>${javacpp.platform}</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-linux-ppc64le</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>linux-ppc64le</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le>${javacpp.platform}</javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-linux-x86</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>linux-x86</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86>${javacpp.platform}</javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-linux-x86_64</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>linux-x86_64</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64>${javacpp.platform}</javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-macosx-arm64</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>macosx-arm64</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64>${javacpp.platform}</javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-macosx-x86_64</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>macosx-x86_64</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64>${javacpp.platform}</javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-windows-x86</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>windows-x86</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86>${javacpp.platform}</javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64></javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension></javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp-platform-windows-x86_64</id>
      <activation>
        <property>
          <name>javacpp.platform</name>
          <value>windows-x86_64</value>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf></javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64></javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le></javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86></javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64></javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-arm64></javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-x86_64></javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86></javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64>${javacpp.platform}</javacpp.platform.windows-x86_64>
        <javacpp.platform.linux-armhf.extension></javacpp.platform.linux-armhf.extension>
        <javacpp.platform.linux-arm64.extension></javacpp.platform.linux-arm64.extension>
        <javacpp.platform.linux-ppc64le.extension></javacpp.platform.linux-ppc64le.extension>
        <javacpp.platform.linux-x86.extension></javacpp.platform.linux-x86.extension>
        <javacpp.platform.linux-x86_64.extension></javacpp.platform.linux-x86_64.extension>
        <javacpp.platform.macosx-arm64.extension></javacpp.platform.macosx-arm64.extension>
        <javacpp.platform.macosx-x86_64.extension></javacpp.platform.macosx-x86_64.extension>
        <javacpp.platform.windows-x86.extension></javacpp.platform.windows-x86.extension>
        <javacpp.platform.windows-x86_64.extension>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <!-- Profiles to modify the transitive dependencies when picked up from other pom.xml files, for example:
         mvn -Djavacpp.platform.custom -Djavacpp.platform.host -Djavacpp.platform.linux-x86_64 -Djavacpp.platform.windows-x86_64 ... -->
    <profile>
      <id>javacpp.platform.linux-armhf-true</id>
      <activation>
        <property>
          <name>javacpp.platform.linux-armhf</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-armhf.extension>linux-armhf${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.linux-arm64-true</id>
      <activation>
        <property>
          <name>javacpp.platform.linux-arm64</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-arm64.extension>linux-arm64${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.linux-ppc64le-true</id>
      <activation>
        <property>
          <name>javacpp.platform.linux-ppc64le</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-ppc64le>linux-ppc64le</javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-ppc64le.extension>linux-ppc64le${javacpp.platform.extension}</javacpp.platform.linux-ppc64le.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.linux-x86-true</id>
      <activation>
        <property>
          <name>javacpp.platform.linux-x86</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-x86>linux-x86</javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86.extension>linux-x86${javacpp.platform.extension}</javacpp.platform.linux-x86.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.linux-x86_64-true</id>
      <activation>
        <property>
          <name>javacpp.platform.linux-x86_64</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
        <javacpp.platform.linux-x86_64.extension>linux-x86_64${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.macosx-arm64-true</id>
      <activation>
        <property>
          <name>javacpp.platform.macosx-arm64</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.macosx-arm64>macosx-arm64</javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-arm64.extension>macosx-arm64${javacpp.platform.extension}</javacpp.platform.macosx-arm64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.macosx-x86_64-true</id>
      <activation>
        <property>
          <name>javacpp.platform.macosx-x86_64</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
        <javacpp.platform.macosx-x86_64.extension>macosx-x86_64${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.windows-x86-true</id>
      <activation>
        <property>
          <name>javacpp.platform.windows-x86</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.windows-x86>windows-x86</javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86.extension>windows-x86${javacpp.platform.extension}</javacpp.platform.windows-x86.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.windows-x86_64-true</id>
      <activation>
        <property>
          <name>javacpp.platform.windows-x86_64</name>
        </property>
      </activation>
      <properties>
        <javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64>
        <javacpp.platform.windows-x86_64.extension>windows-x86_64${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-arm</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>arm</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-armhf.extension>linux-armhf${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-armhf</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>armhf</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-armhf.extension>linux-armhf${javacpp.platform.extension}</javacpp.platform.linux-armhf.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-aarch64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>aarch64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-arm64.extension>linux-arm64${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-armv8</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>armv8</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-arm64.extension>linux-arm64${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-arm64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>arm64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-arm64.extension>linux-arm64${javacpp.platform.extension}</javacpp.platform.linux-arm64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-ppc64le</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>ppc64le</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-ppc64le>linux-ppc64le</javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-ppc64le.extension>linux-ppc64le${javacpp.platform.extension}</javacpp.platform.linux-ppc64le.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-amd64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>amd64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
        <javacpp.platform.linux-x86_64.extension>linux-x86_64${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-x86-64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>x86-64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
        <javacpp.platform.linux-x86_64.extension>linux-x86_64${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-linux-x86_64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>linux</name><arch>x86_64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
        <javacpp.platform.linux-x86_64.extension>linux-x86_64${javacpp.platform.extension}</javacpp.platform.linux-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-macosx-amd64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>mac os x</name><arch>amd64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
        <javacpp.platform.macosx-x86_64.extension>macosx-x86_64${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-macosx-x86-64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>mac os x</name><arch>x86-64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
        <javacpp.platform.macosx-x86_64.extension>macosx-x86_64${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-macosx-aarch64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>mac os x</name><arch>aarch64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.macosx-arm64>macosx-arm64</javacpp.platform.macosx-arm64>
        <javacpp.platform.macosx-arm64.extension>macosx-arm64${javacpp.platform.extension}</javacpp.platform.macosx-arm64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-macosx-x86_64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><name>mac os x</name><arch>x86_64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64>
        <javacpp.platform.macosx-x86_64.extension>macosx-x86_64${javacpp.platform.extension}</javacpp.platform.macosx-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-windows-amd64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><family>windows</family><arch>amd64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64>
        <javacpp.platform.windows-x86_64.extension>windows-x86_64${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-windows-x86-64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><family>windows</family><arch>x86-64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64>
        <javacpp.platform.windows-x86_64.extension>windows-x86_64${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <profile>
      <id>javacpp.platform.custom-windows-x86_64</id>
      <activation>
        <property>
          <name>javacpp.platform.host</name>
        </property>
        <os><family>windows</family><arch>x86_64</arch></os>
      </activation>
      <properties>
        <javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64>
        <javacpp.platform.windows-x86_64.extension>windows-x86_64${javacpp.platform.extension}</javacpp.platform.windows-x86_64.extension>
      </properties>
    </profile>

    <!-- Profiles to set the default javacpp.platform property: If someone knows a better way to do this, please do let me know! -->
    <profile>
      <id>linuxos</id>
      <activation>
        <os><name>linux</name></os>
      </activation>
      <properties>
        <os.kernel>linux</os.kernel>
        <os.name>linux</os.name>
      </properties>
    </profile>
    <profile>
      <id>macosx</id>
      <activation>
        <os><name>mac os x</name></os>
      </activation>
      <properties>
        <os.kernel>darwin</os.kernel>
        <os.name>macosx</os.name>
      </properties>
    </profile>
    <profile>
      <id>windowsos</id>
      <activation>
        <os><family>windows</family></os>
      </activation>
      <properties>
        <os.kernel>windows</os.kernel>
        <os.name>windows</os.name>
      </properties>
    </profile>
    <profile>
      <id>arm</id>
      <activation>
        <os><arch>arm</arch></os>
      </activation>
      <properties>
        <os.arch>armhf</os.arch>
      </properties>
    </profile>
    <profile>
      <id>aarch64</id>
      <activation>
        <os><arch>aarch64</arch></os>
      </activation>
      <properties>
        <os.arch>arm64</os.arch>
      </properties>
    </profile>
    <profile>
      <id>armv8</id>
      <activation>
        <os><arch>armv8</arch></os>
      </activation>
      <properties>
        <os.arch>arm64</os.arch>
      </properties>
    </profile>
    <profile>
      <id>i386</id>
      <activation>
        <os><arch>i386</arch></os>
      </activation>
      <properties>
        <os.arch>x86</os.arch>
      </properties>
    </profile>
    <profile>
      <id>i486</id>
      <activation>
        <os><arch>i486</arch></os>
      </activation>
      <properties>
        <os.arch>x86</os.arch>
      </properties>
    </profile>
    <profile>
      <id>i586</id>
      <activation>
        <os><arch>i586</arch></os>
      </activation>
      <properties>
        <os.arch>x86</os.arch>
      </properties>
    </profile>
    <profile>
      <id>i686</id>
      <activation>
        <os><arch>i686</arch></os>
      </activation>
      <properties>
        <os.arch>x86</os.arch>
      </properties>
    </profile>
    <profile>
      <id>amd64</id>
      <activation>
        <os><arch>amd64</arch></os>
      </activation>
      <properties>
        <os.arch>x86_64</os.arch>
      </properties>
    </profile>
    <profile>
      <id>x86-64</id>
      <activation>
        <os><arch>x86-64</arch></os>
      </activation>
      <properties>
        <os.arch>x86_64</os.arch>
      </properties>
    </profile>

    <profile>
      <id>linux</id>
      <activation>
        <os>
          <family>unix</family>
          <name>Linux</name>
        </os>
      </activation>
      <properties>
        <os.adjusted.name>linux</os.adjusted.name>
      </properties>
    </profile>
    <profile>
      <id>darwin</id>
      <activation>
        <os>
          <family>unix</family>
          <name>Mac OS X</name>
        </os>
      </activation>
      <properties>
        <os.adjusted.name>darwin</os.adjusted.name>
      </properties>
    </profile>
    <profile>
      <id>windows</id>
      <activation>
        <os>
          <family>windows</family>
        </os>
      </activation>
      <properties>
        <os.adjusted.name>windows</os.adjusted.name>
      </properties>
    </profile>
  </profiles>

</project>

