<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ~ Copyright (c) 2015-2018 Skymind, Inc.
  ~
  ~ This program and the accompanying materials are made available under the
  ~ terms of the Apache License, Version 2.0 which is available at
  ~ https://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.
  ~
  ~ SPDX-License-Identifier: Apache-2.0
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

<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">
    <parent>
        <artifactId>nd4j-backends</artifactId>
        <groupId>org.nd4j</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nd4j-backend-impls</artifactId>
    <packaging>pom</packaging>

    <name>nd4j-backend-impls</name>

    <properties>
        <!-- Hack to load only at runtime platform specific dependency with Maven -->
        <dependency.groupId>${project.groupId}</dependency.groupId>
        <dependency.artifactId>${project.artifactId}</dependency.artifactId>
        <dependency.version>${project.version}</dependency.version>
        <dependency.packaging>${project.packaging}</dependency.packaging>
        <dependency.classifier>${javacpp.platform}${javacpp.platform.extension}</dependency.classifier>
        <dependency.platform></dependency.platform>   <!-- Same as ${javacpp.platform} but without breaking Gradle, sbt, etc -->
        <dependency.platform2></dependency.platform2> <!-- Same as ${dependency.platform} minus Android, iOS, etc -->
        <javacpp.platform.android-arm>android-arm${javacpp.platform.extension}</javacpp.platform.android-arm>
        <javacpp.platform.android-arm64>android-arm64${javacpp.platform.extension}</javacpp.platform.android-arm64>
        <javacpp.platform.android-x86>android-x86${javacpp.platform.extension}</javacpp.platform.android-x86>
        <javacpp.platform.android-x86_64>android-x86_64${javacpp.platform.extension}</javacpp.platform.android-x86_64>
        <javacpp.platform.ios-arm>ios-arm${javacpp.platform.extension}</javacpp.platform.ios-arm>
        <javacpp.platform.ios-arm64>ios-arm64${javacpp.platform.extension}</javacpp.platform.ios-arm64>
        <javacpp.platform.ios-x86>ios-x86${javacpp.platform.extension}</javacpp.platform.ios-x86>
        <javacpp.platform.ios-x86_64>ios-x86_64${javacpp.platform.extension}</javacpp.platform.ios-x86_64>
        <javacpp.platform.linux-armhf>linux-armhf${javacpp.platform.extension}</javacpp.platform.linux-armhf>
        <javacpp.platform.linux-arm64>linux-arm64${javacpp.platform.extension}</javacpp.platform.linux-arm64>
        <javacpp.platform.linux-ppc64le>linux-ppc64le${javacpp.platform.extension}</javacpp.platform.linux-ppc64le>
        <javacpp.platform.linux-x86>linux-x86${javacpp.platform.extension}</javacpp.platform.linux-x86>
        <javacpp.platform.linux-x86_64>linux-x86_64${javacpp.platform.extension}</javacpp.platform.linux-x86_64>
        <javacpp.platform.macosx-x86_64>macosx-x86_64${javacpp.platform.extension}</javacpp.platform.macosx-x86_64>
        <javacpp.platform.windows-x86>windows-x86${javacpp.platform.extension}</javacpp.platform.windows-x86>
        <javacpp.platform.windows-x86_64>windows-x86_64${javacpp.platform.extension}</javacpp.platform.windows-x86_64>
    </properties>


    <build>

        <plugins>
            <!-- Skip execution of Javadoc since some versions run out of memory -->
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <id>empty-javadoc-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <classifier>javadoc</classifier>
                            <classesDirectory>${basedir}/javadoc</classesDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <environmentVariables>
                            <LD_LIBRARY_PATH>${env.LD_LIBRARY_PATH}:${user.dir}</LD_LIBRARY_PATH>
                        </environmentVariables>
                        <includes>
                            <include>**/Nd4jTestSuite.java</include>
                        </includes>
<!--                        <excludes>
                            <exclude>**/Test*.java</exclude>
                            <exclude>**/*Test.java</exclude>
                            <exclude>**/*TestCase.java</exclude>
                        </excludes> -->
                        <!--
                            Maximum heap size was set to 8g, as a minimum required value for tests run.
                            Depending on a build machine, default value is not always enough.
                        -->
                        <argLine>-Ddtype=float -Dfile.encoding=UTF-8 -Xmx8g</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                    <configuration>
                        <createChecksum>true</createChecksum>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>default-jar</id>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <excludes>
                                    <exclude>org/nd4j/nativeblas/${javacpp.platform}${javacpp.platform.extension}/*</exclude>
                                    <exclude>lib/**</exclude>
                                </excludes>
                            </configuration>
                        </execution>
                        <execution>
                            <id>${javacpp.platform}${javacpp.platform.extension}</id>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <classifier>${javacpp.platform}${javacpp.platform.extension}</classifier>
                                <skipIfEmpty>true</skipIfEmpty>
                                <includes>
                                    <include>org/nd4j/nativeblas/${javacpp.platform}${javacpp.platform.extension}/*</include>
                                    <include>lib/**</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                  <groupId>net.revelc.code.formatter</groupId>
                  <artifactId>formatter-maven-plugin</artifactId>
                  <configuration>
                    <skip>true</skip>
                  </configuration>
                </plugin>
            </plugins>


        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <id>cpu</id>
            <activation>
                <property>
                    <name>libnd4j.chip</name>
                    <value>!cuda</value>
                </property>
            </activation>
            <modules>
                <module>nd4j-native</module>
                <module>nd4j-native-platform</module>
            </modules>
        </profile>
        <profile>
            <id>cuda</id>
            <activation>
                <property>
                    <name>libnd4j.chip</name>
                    <value>cuda</value>
                </property>
            </activation>
            <modules>
                <module>nd4j-cuda</module>
                <module>nd4j-cuda-platform</module>
            </modules>
        </profile>
        <profile>
            <id>libnd4j-cuda</id>
            <activation>
                <property>
                    <name>libnd4j.cuda</name>
                </property>
            </activation>
            <modules>
                <module>nd4j-cuda</module>
                <module>nd4j-cuda-platform</module>
            </modules>
        </profile>

        <profile>
            <id>javacpp-platform-default</id>
            <activation>
                <file>
                    <exists>${user.dir}</exists>
                </file>
            </activation>
            <properties>
                <dependency.platform>${javacpp.platform}</dependency.platform>
                <dependency.platform2>${javacpp.platform}</dependency.platform2>
            </properties>
        </profile>

        <profile>
            <id>javacpp-platform-custom</id>
            <activation>
                <property>
                    <name>javacpp.platform</name>
                </property>
            </activation>
            <properties>
                <javacpp.platform.android-arm>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.android-arm>
                <javacpp.platform.android-arm64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.android-arm64>
                <javacpp.platform.android-x86>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.android-x86>
                <javacpp.platform.android-x86_64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.android-x86_64>
                <javacpp.platform.ios-arm>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.ios-arm>
                <javacpp.platform.ios-arm64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.ios-arm64>
                <javacpp.platform.ios-x86>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.ios-x86>
                <javacpp.platform.ios-x86_64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.ios-x86_64>
                <javacpp.platform.linux-armhf>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-armhf>
                <javacpp.platform.linux-arm64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-arm64>
                <javacpp.platform.linux-ppc64le>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-ppc64le>
                <javacpp.platform.linux-x86>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-x86>
                <javacpp.platform.linux-x86_64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.linux-x86_64>
                <javacpp.platform.macosx-x86_64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.macosx-x86_64>
                <javacpp.platform.windows-x86>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.windows-x86>
                <javacpp.platform.windows-x86_64>${javacpp.platform}${javacpp.platform.extension}</javacpp.platform.windows-x86_64>
                <dependency.classifier>${javacpp.platform}${javacpp.platform.extension}</dependency.classifier>
                <dependency.platform>${javacpp.platform}</dependency.platform>
                <dependency.platform2>${javacpp.platform}</dependency.platform2>
            </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.extension}</javacpp.platform>
                <javacpp.platform.android-arm>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.android-arm>
                <javacpp.platform.android-arm64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.android-arm64>
                <javacpp.platform.android-x86>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.android-x86>
                <javacpp.platform.android-x86_64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.android-x86_64>
                <javacpp.platform.ios-arm>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.ios-arm>
                <javacpp.platform.ios-arm64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.ios-arm64>
                <javacpp.platform.ios-x86>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.ios-x86>
                <javacpp.platform.ios-x86_64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.ios-x86_64>
                <javacpp.platform.linux-armhf>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-armhf>
                <javacpp.platform.linux-arm64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-arm64>
                <javacpp.platform.linux-ppc64le>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-ppc64le>
                <javacpp.platform.linux-x86>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-x86>
                <javacpp.platform.linux-x86_64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.linux-x86_64>
                <javacpp.platform.macosx-x86_64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.macosx-x86_64>
                <javacpp.platform.windows-x86>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.windows-x86>
                <javacpp.platform.windows-x86_64>${os.name}-${os.arch}${javacpp.platform.extension}</javacpp.platform.windows-x86_64>
                <dependency.classifier>${os.name}-${os.arch}${javacpp.platform.extension}</dependency.classifier>
                <dependency.platform>${os.name}-${os.arch}</dependency.platform>
                <dependency.platform2>${os.name}-${os.arch}</dependency.platform2>
            </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.android-arm></javacpp.platform.android-arm>
                <javacpp.platform.android-arm64></javacpp.platform.android-arm64>
                <javacpp.platform.android-x86></javacpp.platform.android-x86>
                <javacpp.platform.android-x86_64></javacpp.platform.android-x86_64>
                <javacpp.platform.ios-arm></javacpp.platform.ios-arm>
                <javacpp.platform.ios-arm64></javacpp.platform.ios-arm64>
                <javacpp.platform.ios-x86></javacpp.platform.ios-x86>
                <javacpp.platform.ios-x86_64></javacpp.platform.ios-x86_64>
                <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-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>
                <dependency.classifier></dependency.classifier>
                <dependency.platform></dependency.platform>
                <dependency.platform2></dependency.platform2>
            </properties>
        </profile>

        <profile>
            <id>javacpp-platform-none</id>
            <activation>
                <property>
                    <name>javacpp.platform.none</name>
                </property>
            </activation>
            <properties>
                <javacpp.platform></javacpp.platform>
                <javacpp.platform.android-arm></javacpp.platform.android-arm>
                <javacpp.platform.android-arm64></javacpp.platform.android-arm64>
                <javacpp.platform.android-x86></javacpp.platform.android-x86>
                <javacpp.platform.android-x86_64></javacpp.platform.android-x86_64>
                <javacpp.platform.ios-arm></javacpp.platform.ios-arm>
                <javacpp.platform.ios-arm64></javacpp.platform.ios-arm64>
                <javacpp.platform.ios-x86></javacpp.platform.ios-x86>
                <javacpp.platform.ios-x86_64></javacpp.platform.ios-x86_64>
                <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-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>
                <dependency.classifier></dependency.classifier>
                <dependency.platform></dependency.platform>
                <dependency.platform2></dependency.platform2>
            </properties>
        </profile>

        <!-- Provide convenient profiles to set commonly used paths for Android -->
        <profile>
          <id>android-arm-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>android-arm</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>android-arm-clang</javacpp.platform.properties>
            <javacpp.platform.root>${env.ANDROID_NDK}</javacpp.platform.root>
            <javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.name}-${os.arch}/bin/clang++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>android-arm64-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>android-arm64</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>android-arm64-clang</javacpp.platform.properties>
            <javacpp.platform.root>${env.ANDROID_NDK}</javacpp.platform.root>
            <javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.name}-${os.arch}/bin/clang++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>android-x86-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>android-x86</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>android-x86-clang</javacpp.platform.properties>
            <javacpp.platform.root>${env.ANDROID_NDK}</javacpp.platform.root>
            <javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.name}-${os.arch}/bin/clang++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>android-x86_64-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>android-x86_64</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>android-x86_64-clang</javacpp.platform.properties>
            <javacpp.platform.root>${env.ANDROID_NDK}</javacpp.platform.root>
            <javacpp.platform.compiler>toolchains/llvm/prebuilt/${os.name}-${os.arch}/bin/clang++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>ios-arm64</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>ios-arm64</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>ios-arm64</javacpp.platform.properties>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>ios-x86_64</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>ios-x86_64</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>ios-x86_64</javacpp.platform.properties>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>linux-armhf-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>linux-armhf</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>linux-armhf</javacpp.platform.properties>
            <javacpp.platform.root>/home/almanac/raspberrypi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf</javacpp.platform.root>
            <javacpp.platform.compiler>bin/arm-linux-gnueabihf-g++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>linux-arm64-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>linux-arm64</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>linux-arm64</javacpp.platform.properties>
            <javacpp.platform.compiler>aarch64-linux-gnu-g++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>
        <profile>
          <id>linux-ppc64le-default</id>
          <activation>
            <property>
              <name>javacpp.platform</name>
              <value>linux-ppc64le</value>
            </property>
          </activation>
          <properties>
            <javacpp.platform.properties>linux-ppc64le</javacpp.platform.properties>
            <javacpp.platform.compiler>powerpc64le-linux-gnu-g++</javacpp.platform.compiler>
            <dependency.platform2></dependency.platform2>
          </properties>
        </profile>

        <!-- Disable platform dependency when building the artifact for the dependency itself -->
        <profile>
            <id>no-platform-dependency</id>
            <activation>
                <file>
                    <exists>${basedir}</exists>
                </file>
            </activation>
            <properties>
                <javacpp.platform.android-arm></javacpp.platform.android-arm>
                <javacpp.platform.android-arm64></javacpp.platform.android-arm64>
                <javacpp.platform.android-x86></javacpp.platform.android-x86>
                <javacpp.platform.android-x86_64></javacpp.platform.android-x86_64>
                <javacpp.platform.ios-arm></javacpp.platform.ios-arm>
                <javacpp.platform.ios-arm64></javacpp.platform.ios-arm64>
                <javacpp.platform.ios-x86></javacpp.platform.ios-x86>
                <javacpp.platform.ios-x86_64></javacpp.platform.ios-x86_64>
                <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-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>
                <dependency.groupId>${project.parent.groupId}</dependency.groupId>
                <dependency.artifactId>${project.parent.artifactId}</dependency.artifactId>
                <dependency.version>${project.parent.version}</dependency.version>
                <dependency.packaging>pom</dependency.packaging>
                <dependency.classifier></dependency.classifier>
            </properties>
        </profile>

        <profile>
            <id>testresources</id>
        </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.android-arm-true</id>
            <activation>
                <property>
                    <name>javacpp.platform.android-arm</name>
                </property>
            </activation>
            <properties>
                <javacpp.platform.android-arm>android-arm${javacpp.platform.extension}</javacpp.platform.android-arm>
            </properties>
        </profile>

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

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

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

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

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

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

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

        <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.extension}</javacpp.platform.linux-armhf>
            </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.extension}</javacpp.platform.linux-arm64>
            </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.extension}</javacpp.platform.linux-ppc64le>
            </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.extension}</javacpp.platform.linux-x86>
            </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.extension}</javacpp.platform.linux-x86_64>
            </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.extension}</javacpp.platform.macosx-x86_64>
            </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.extension}</javacpp.platform.windows-x86>
            </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.extension}</javacpp.platform.windows-x86_64>
            </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.extension}</javacpp.platform.linux-armhf>
            </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.extension}</javacpp.platform.linux-armhf>
            </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.extension}</javacpp.platform.linux-arm64>
            </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.extension}</javacpp.platform.linux-arm64>
            </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.extension}</javacpp.platform.linux-arm64>
            </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.extension}</javacpp.platform.linux-ppc64le>
            </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.extension}</javacpp.platform.linux-x86_64>
            </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.extension}</javacpp.platform.linux-x86_64>
            </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.extension}</javacpp.platform.linux-x86_64>
            </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.extension}</javacpp.platform.macosx-x86_64>
            </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.extension}</javacpp.platform.macosx-x86_64>
            </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.extension}</javacpp.platform.macosx-x86_64>
            </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.extension}</javacpp.platform.windows-x86_64>
            </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.extension}</javacpp.platform.windows-x86_64>
            </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.extension}</javacpp.platform.windows-x86_64>
            </properties>
        </profile>
    </profiles>

    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.19.1</version>
            </plugin>
            <!-- Test coverage -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.7</version>
            </plugin>
        </plugins>
    </reporting>

</project>