<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ /* ******************************************************************************
  ~  *
  ~  *
  ~  * 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.
  ~  *
  ~  *  See the NOTICE file distributed with this work for additional
  ~  *  information regarding copyright ownership.
  ~  * 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">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.nd4j</groupId>
        <artifactId>nd4j-backends</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <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>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacpp.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacpp</artifactId>
                <version>${javacpp.version}</version>
                <classifier>${dependency.platform}</classifier>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <!-- Skip execution of Javadoc since some versions run out of memory -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven-javadoc-plugin.version}</version>
                <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>
                    <configuration>
                        <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                        <forkCount>${cpu.core.count}</forkCount>
                        <reuseForks>false</reuseForks>
                        <environmentVariables>
                            <OMP_NUM_THREADS>1</OMP_NUM_THREADS>
                            <LD_LIBRARY_PATH>${env.LD_LIBRARY_PATH}:${user.dir}</LD_LIBRARY_PATH>
                        </environmentVariables>
                        <!--<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>-Xmx${test.heap.size} -Dorg.bytedeco.javacpp.maxphysicalbytes=${test.offheap.size} -Dorg.bytedeco.javacpp.maxbytes=${test.offheap.size}</argLine>
                        <forkedProcessTimeoutInSeconds>240</forkedProcessTimeoutInSeconds>
                        <forkedProcessExitTimeoutInSeconds>240</forkedProcessExitTimeoutInSeconds>
                        <parallelTestsTimeoutInSeconds>240</parallelTestsTimeoutInSeconds>
                        <parallelTestsTimeoutForcedInSeconds>240</parallelTestsTimeoutForcedInSeconds>

                    </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>
                                    <exclude>*.dll</exclude>
                                    <exclude>*.dylib</exclude>
                                    <exclude>*.so</exclude>
                                    <exclude>META-INF/native-image/${javacpp.platform}${javacpp.platform.extension}/</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>
                                    <include>META-INF/native-image/${javacpp.platform}${javacpp.platform.extension}/</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-preset</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-preset</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>
</project>