Files
2026-07-13 12:47:05 +08:00

785 lines
39 KiB
XML

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.eclipse.deeplearning4j</groupId>
<artifactId>deeplearning4j</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.deeplearning4j</groupId>
<artifactId>libnd4j</artifactId>
<packaging>pom</packaging>
<name>libnd4j</name>
<description>The C++ engine that powers the scientific computing library ND4J - n-dimensional
arrays for Java
</description>
<properties>
<!-- Type validation modes -->
<libnd4j.types.validation.mode>normal</libnd4j.types.validation.mode>
<libnd4j.types.strict.validation>false</libnd4j.types.strict.validation>
<libnd4j.types.show.impact>true</libnd4j.types.show.impact>
<!-- Debug type configuration -->
<libnd4j.debug.types.profile>MINIMAL_INDEXING</libnd4j.debug.types.profile>
<libnd4j.debug.types.custom></libnd4j.debug.types.custom>
<libnd4j.debug.auto.reduce>false</libnd4j.debug.auto.reduce>
<!-- Predefined type profiles for easy selection -->
<libnd4j.datatypes.all></libnd4j.datatypes.all>
<libnd4j.datatypes.minimal>float32;double;int32;int64</libnd4j.datatypes.minimal>
<libnd4j.datatypes.essential>float32;double;int32;int64;int8;int16</libnd4j.datatypes.essential>
<libnd4j.datatypes.floats>float32;double;float16</libnd4j.datatypes.floats>
<libnd4j.datatypes.integers>int8;int16;int32;int64;uint8;uint16;uint32;uint64</libnd4j.datatypes.integers>
<libnd4j.datatypes.single.precision>float32;int32;int64</libnd4j.datatypes.single.precision>
<libnd4j.datatypes.double.precision>double;int32;int64</libnd4j.datatypes.double.precision>
<libnd4j.datatypes.debug.safe>float32;double;int32;int64</libnd4j.datatypes.debug.safe>
<!-- Production type configurations -->
<libnd4j.datatypes.production.minimal>bool;int8;int16;int32;int64;float32;double</libnd4j.datatypes.production.minimal>
<libnd4j.datatypes.production.complete>bool;int8;uint8;int16;uint16;int32;uint32;int64;uint64;float16;bfloat16;float32;double</libnd4j.datatypes.production.complete>
<!-- ML/AI focused type sets -->
<libnd4j.datatypes.ml.training>float32;float16;bfloat16;int32;int64</libnd4j.datatypes.ml.training>
<libnd4j.datatypes.ml.inference>float32;float16;int8;int32;int64</libnd4j.datatypes.ml.inference>
<libnd4j.generate.flatc>false</libnd4j.generate.flatc>
<libnd4j.outputPath>${project.basedir}/blasbuild/${libnd4j.chip}</libnd4j.outputPath>
<cuda.version>12.3</cuda.version>
<cudnn.version>8.9</cudnn.version>
<libnd4j.build>release</libnd4j.build>
<libnd4j.chip>cpu</libnd4j.chip>
<libnd4j.platform>${javacpp.platform}</libnd4j.platform>
<libnd4j.extension></libnd4j.extension>
<libnd4j.cuda></libnd4j.cuda>
<libnd4j.compute></libnd4j.compute>
<libnd4j.classifier>${libnd4j.platform}</libnd4j.classifier>
<libnd4j.buildthreads></libnd4j.buildthreads>
<libnd4j.helper></libnd4j.helper>
<libnd4j.buildprogram>bash</libnd4j.buildprogram>
<libnd4j.operations></libnd4j.operations>
<libnd4j.datatypes></libnd4j.datatypes>
<libnd4j.sanitize>OFF</libnd4j.sanitize>
<libnd4j.ptxas>OFF</libnd4j.ptxas>
<libnd4j.sanitizers>address</libnd4j.sanitizers>
<libnd4j.arch></libnd4j.arch>
<openblas.artifactId></openblas.artifactId>
<openblas.classifier></openblas.classifier>
<libnd4j.calltrace>OFF</libnd4j.calltrace>
<libnd4j.lto>OFF</libnd4j.lto>
<libnd4j.vectorization>OFF</libnd4j.vectorization>
<libnd4j.cpu.compile.skip>false</libnd4j.cpu.compile.skip>
<libnd4j.cuda.compile.skip>false</libnd4j.cuda.compile.skip>
<libnd4j.test.filter>none</libnd4j.test.filter>
<libnd4j.log>none</libnd4j.log>
<libnd4j.test.runner></libnd4j.test.runner>
<libnd4j.keepnvcc>OFF</libnd4j.keepnvcc>
<libnd4j.optimization>3</libnd4j.optimization>
<libnd4j.printindices>OFF</libnd4j.printindices>
<libnd4j.printmath>OFF</libnd4j.printmath>
<junit.version>5.9.2</junit.version>
<cpu.core.count></cpu.core.count>
<libnd4j.preprocess>OFF</libnd4j.preprocess>
<libnd4j.build.ppstep>OFF</libnd4j.build.ppstep>
<libnd4j.extract.instantiations>OFF</libnd4j.extract.instantiations>
<libnd4j.generate.fix.files>OFF</libnd4j.generate.fix.files>
<libnd4j.instantiation.report>OFF</libnd4j.instantiation.report>
<libnd4j.instantiation.verbose>OFF</libnd4j.instantiation.verbose>
<libnd4j.analyze.templates>OFF</libnd4j.analyze.templates>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.kuali.maven.wagons</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.1</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire.version}</version>
<configuration>
<reportsDirectory>tests_cpu/surefire-reports/</reportsDirectory>
<systemPropertyVariables>
<libnd4j.build.dir>${project.basedir}</libnd4j.build.dir>
<libnd4j.chip>${libnd4j.chip}</libnd4j.chip>
<libnd4j.test.filter>${libnd4j.test.filter}</libnd4j.test.filter>
<libnd4j.test.runner>${libnd4j.test.runner}</libnd4j.test.runner>
</systemPropertyVariables>
<forkedProcessExitTimeoutInSeconds>0</forkedProcessExitTimeoutInSeconds>
<forkedProcessTimeoutInSeconds>0</forkedProcessTimeoutInSeconds>
</configuration>
<executions>
<execution>
<id>test-results</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<reportsDirectory>tests_cpu/surefire-reports/</reportsDirectory>
<systemPropertyVariables>
<libnd4j.build.dir>${project.build.directory}</libnd4j.build.dir>
<libnd4j.chip>${libnd4j.chip}</libnd4j.chip>
<libnd4j.test.filter>${libnd4j.test.filter}</libnd4j.test.filter>
<libnd4j.test.runner>${libnd4j.test.runner}</libnd4j.test.runner>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${maven-build-helper-plugin.version}</version>
<executions>
<execution>
<id>get-cpu-count</id>
<goals>
<goal>cpu-count</goal>
</goals>
<configuration>
<cpuCount>cpu.core.count</cpuCount>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>javacpp-cppbuild-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<filesets>
<fileset>
<directory>blasbuild</directory>
</fileset>
</filesets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>compat-profile</id>
<activation>
<property>
<name>javacpp.platform.extension</name>
<value>/.+/</value>
</property>
</activation>
<properties>
<openblas.artifactId>openblas</openblas.artifactId>
<openblas.classifier>${javacpp.platform}</openblas.classifier>
</properties>
</profile>
<profile>
<id>default-javacpp</id>
<activation>
<property>
<name>!javacpp.platform.extension</name>
</property>
</activation>
<properties>
<openblas.artifactId>openblas-platform</openblas.artifactId>
</properties>
</profile>
<profile>
<id>build-windows</id>
<activation>
<os>
<family>Windows</family>
</os>
</activation>
<properties>
<libnd4j.buildprogram>sh</libnd4j.buildprogram>
</properties>
</profile>
<profile>
<id>build-unix</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<libnd4j.buildprogram>bash</libnd4j.buildprogram>
</properties>
</profile>
<profile>
<id>libnd4j-single-thread</id>
<activation>
<property>
<name>libnd4j.singlethread</name>
</property>
</activation>
<properties>
<libnd4j.buildthreads>1</libnd4j.buildthreads>
</properties>
</profile>
<profile>
<id>libnd4-multi-thread</id>
<activation>
<property>
<name>!libnd4j.singlethread</name>
</property>
</activation>
<properties>
<libnd4j.buildthreads>${cpu.core.count}</libnd4j.buildthreads>
</properties>
</profile>
<profile>
<id>chip</id>
<activation>
<property>
<name>libnd4j.chip</name>
</property>
</activation>
<properties>
<libnd4j.classifier>${libnd4j.platform}-${libnd4j.chip}-${cuda.version}
</libnd4j.classifier>
</properties>
</profile>
<!-- Add these profiles to pom.xml for each platform -->
<!-- Android ARM64 profile -->
<profile>
<id>android-arm64-openblas</id>
<activation>
<property>
<name>javacpp.platform</name>
<value>android-arm64</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<configuration>
<buildResources>
<buildResource>/${javacpp.platform.library.path}/</buildResource>
<buildResource>/org/bytedeco/openblas/android-arm64/</buildResource>
<buildResource>/org/bytedeco/openblas/android-aarch64/</buildResource>
<buildResource>/org/bytedeco/openblas/linux-arm64/</buildResource>
<buildResource>/org/bytedeco/openblas/linux-aarch64/</buildResource>
</buildResources>
<includeResources>
<includeResource>/${javacpp.platform.library.path}/include/</includeResource>
<includeResource>/org/bytedeco/openblas/android-arm64/include/</includeResource>
<includeResource>/org/bytedeco/openblas/android-aarch64/include/</includeResource>
<includeResource>/org/bytedeco/openblas/linux-arm64/include/</includeResource>
<includeResource>/org/bytedeco/openblas/linux-aarch64/include/</includeResource>
</includeResources>
<linkResources>
<linkResource>/${javacpp.platform.library.path}/</linkResource>
<linkResource>/${javacpp.platform.library.path}/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/android-arm64/</linkResource>
<linkResource>/org/bytedeco/openblas/android-arm64/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/android-aarch64/</linkResource>
<linkResource>/org/bytedeco/openblas/android-aarch64/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-arm64/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-arm64/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-aarch64/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-aarch64/lib/</linkResource>
</linkResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Linux ARM64 profile -->
<profile>
<id>linux-arm64-openblas</id>
<activation>
<property>
<name>javacpp.platform</name>
<value>linux-arm64</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<configuration>
<buildResources>
<buildResource>/${javacpp.platform.library.path}/</buildResource>
<buildResource>/org/bytedeco/openblas/linux-arm64/</buildResource>
<buildResource>/org/bytedeco/openblas/linux-aarch64/</buildResource>
</buildResources>
<includeResources>
<includeResource>/${javacpp.platform.library.path}/include/</includeResource>
<includeResource>/org/bytedeco/openblas/linux-arm64/include/</includeResource>
<includeResource>/org/bytedeco/openblas/linux-aarch64/include/</includeResource>
</includeResources>
<linkResources>
<linkResource>/${javacpp.platform.library.path}/</linkResource>
<linkResource>/${javacpp.platform.library.path}/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-arm64/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-arm64/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-aarch64/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-aarch64/lib/</linkResource>
</linkResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Updated Android x86_64 profile -->
<profile>
<id>android-x86_64-openblas</id>
<activation>
<property>
<name>javacpp.platform</name>
<value>android-x86_64</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<configuration>
<buildResources>
<buildResource>/${javacpp.platform.library.path}/</buildResource>
<buildResource>/org/bytedeco/openblas/android-x86_64/</buildResource>
<buildResource>/org/bytedeco/openblas/linux-x86_64/</buildResource>
</buildResources>
<includeResources>
<includeResource>/${javacpp.platform.library.path}/include/</includeResource>
<includeResource>/org/bytedeco/openblas/android-x86_64/include/</includeResource>
<includeResource>/org/bytedeco/openblas/linux-x86_64/include/</includeResource>
</includeResources>
<linkResources>
<linkResource>/${javacpp.platform.library.path}/</linkResource>
<linkResource>/${javacpp.platform.library.path}/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/android-x86_64/</linkResource>
<linkResource>/org/bytedeco/openblas/android-x86_64/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-x86_64/</linkResource>
<linkResource>/org/bytedeco/openblas/linux-x86_64/lib/</linkResource>
</linkResources>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>extension</id>
<activation>
<property>
<name>libnd4j.extension</name>
</property>
</activation>
<properties>
<libnd4j.classifier>${libnd4j.platform}-${libnd4j.extension}</libnd4j.classifier>
</properties>
</profile>
<profile>
<id>cuda</id>
<activation>
<property>
<name>libnd4j.cuda</name>
</property>
</activation>
<properties>
<libnd4j.cpu.compile.skip>true</libnd4j.cpu.compile.skip>
<libnd4j.cuda.compile.skip>false</libnd4j.cuda.compile.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>${javacpp.version}</version>
<configuration>
<properties>${libnd4j.platform}</properties>
</configuration>
<executions>
<execution>
<id>javacpp-cppbuild-compile-cuda</id>
<phase>compile</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<skip>${libnd4j.cuda.compile.skip}</skip>
<buildCommand>
<program>${libnd4j.buildprogram}</program>
<argument>buildnativeoperations.sh</argument>
<argument>--output-path</argument>
<argument>${libnd4j.outputPath}</argument>
<argument>--build-type</argument>
<argument>${libnd4j.build}</argument>
<argument>--chip</argument>
<argument>cuda</argument>
<argument>--platform</argument>
<argument>${libnd4j.platform}</argument>
<argument>--chip-extension</argument>
<argument>${libnd4j.extension}</argument>
<argument>--chip-version</argument>
<argument>${cuda.version}</argument>
<argument>--compute</argument>
<argument>${libnd4j.compute}</argument>
<argument>${libnd4j.tests}</argument>
<argument>-j</argument>
<argument>${libnd4j.buildthreads}</argument>
<argument>-h</argument>
<argument>${libnd4j.helper}</argument>
<argument>--operations</argument>
<argument>${libnd4j.operations}</argument>
<argument>--datatypes</argument>
<argument>${libnd4j.datatypes}</argument>
<argument>--sanitize</argument>
<argument>${libnd4j.sanitize}</argument>
<argument>--sanitizers</argument>
<argument>${libnd4j.sanitizers}</argument>
<argument>--use_lto</argument>
<argument>${libnd4j.lto}</argument>
<argument>--functrace</argument>
<argument>${libnd4j.calltrace}</argument>
<argument>--log-output</argument>
<argument>${libnd4j.log}</argument>
<argument>--optimization-level</argument>
<argument>${libnd4j.optimization}</argument>
<argument>--print-indices</argument>
<argument>${libnd4j.printindices}</argument>
<argument>--print-math</argument>
<argument>${libnd4j.printmath}</argument>
<argument>--preprocess</argument>
<argument>${libnd4j.preprocess}</argument>
<argument>--generate-flatc</argument>
<argument>${libnd4j.generate.flatc}</argument>
<argument>--debug-type-profile</argument>
<argument>${libnd4j.debug.types.profile}</argument>
<argument>--debug-custom-types</argument>
<argument>${libnd4j.debug.types.custom}</argument>
<argument>--debug-auto-reduce</argument>
<argument>${libnd4j.debug.auto.reduce}</argument>
<argument>--ppstep</argument>
<argument>${libnd4j.build.ppstep}</argument>
<argument>--extract-instantiations</argument>
<argument>${libnd4j.extract.instantiations}</argument>
<argument>--generate-fix-files</argument>
<argument>${libnd4j.generate.fix.files}</argument>
<argument>--instantiation-report</argument>
<argument>${libnd4j.instantiation.report}</argument>
<argument>--instantiation-verbose</argument>
<argument>${libnd4j.instantiation.verbose}</argument>
</buildCommand>
<workingDirectory>${project.basedir}</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>libnd4j-package-cuda</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>assembly-cuda.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>build-cpu</id>
<activation>
<property>
<name>!libnd4j.cuda</name>
</property>
</activation>
<properties>
<libnd4j.cuda.compile.skip>true</libnd4j.cuda.compile.skip>
<libnd4j.cpu.compile.skip>false</libnd4j.cpu.compile.skip>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>${javacpp.version}</version>
<dependencies>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>${openblas.artifactId}</artifactId>
<version>${openblas.version}-${javacpp-presets.version}</version>
<classifier>${openblas.classifier}</classifier>
</dependency>
</dependencies>
<configuration>
<properties>${libnd4j.platform}</properties>
<buildResources>
<buildResource>/${javacpp.platform.library.path}/</buildResource>
<buildResource>/org/bytedeco/openblas/${libnd4j.platform}/</buildResource>
</buildResources>
<includeResources>
<includeResource>/${javacpp.platform.library.path}/include/
</includeResource>
<includeResource>/org/bytedeco/openblas/${libnd4j.platform}/include/
</includeResource>
</includeResources>
<linkResources>
<linkResource>/${javacpp.platform.library.path}/</linkResource>
<linkResource>/${javacpp.platform.library.path}/lib/</linkResource>
<linkResource>/org/bytedeco/openblas/${libnd4j.platform}/</linkResource>
<linkResource>/org/bytedeco/openblas/${libnd4j.platform}/lib/</linkResource>
</linkResources>
</configuration>
<executions>
<execution>
<id>javacpp-cppbuild-validate</id>
<phase>validate</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>javacpp-cppbuild-compile</id>
<phase>compile</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<skip>${libnd4j.cpu.compile.skip}</skip>
<buildCommand>
<program>${libnd4j.buildprogram}</program>
<argument>buildnativeoperations.sh</argument>
<argument>--output-path</argument>
<argument>${libnd4j.outputPath}</argument>
<argument>--build-type</argument>
<argument>${libnd4j.build}</argument>
<argument>--chip</argument>
<argument>${libnd4j.chip}</argument>
<argument>--platform</argument>
<argument>${libnd4j.platform}</argument>
<argument>--check-vectorization</argument>
<argument>${libnd4j.vectorization}</argument>
<argument>--chip-extension</argument>
<argument>${libnd4j.extension}</argument>
<argument>--chip-version</argument>
<argument>${cuda.version}</argument>
<argument>--compute</argument>
<argument>${libnd4j.compute}</argument>
<argument>${libnd4j.tests}</argument>
<argument>-j</argument>
<argument>${libnd4j.buildthreads}</argument>
<argument>-h</argument>
<argument>${libnd4j.helper}</argument>
<argument>--operations</argument>
<argument>${libnd4j.operations}</argument>
<argument>--datatypes</argument>
<argument>${libnd4j.datatypes}</argument>
<argument>--sanitize</argument>
<argument>${libnd4j.sanitize}</argument>
<argument>--sanitizers</argument>
<argument>${libnd4j.sanitizers}</argument>
<argument>--arch</argument>
<argument>${libnd4j.arch}</argument>
<argument>--use_lto</argument>
<argument>${libnd4j.lto}</argument>
<argument>--functrace</argument>
<argument>${libnd4j.calltrace}</argument>
<argument>--log-output</argument>
<argument>${libnd4j.log}</argument>
<argument>--keep-nvcc-output</argument>
<argument>${libnd4j.keepnvcc}</argument>
<argument>--optimization-level</argument>
<argument>${libnd4j.optimization}</argument>
<argument>--print-indices</argument>
<argument>${libnd4j.printindices}</argument>
<argument>--print-math</argument>
<argument>${libnd4j.printmath}</argument>
<argument>--preprocess</argument>
<argument>${libnd4j.preprocess}</argument>
<argument>--generate-flatc</argument>
<argument>${libnd4j.generate.flatc}</argument>
<argument>--debug-type-profile</argument>
<argument>${libnd4j.debug.types.profile}</argument>
<argument>--debug-custom-types</argument>
<argument>${libnd4j.debug.types.custom}</argument>
<argument>--debug-auto-reduce</argument>
<argument>${libnd4j.debug.auto.reduce}</argument>
<argument>--ppstep</argument>
<argument>${libnd4j.build.ppstep}</argument>
<argument>--extract-instantiations</argument>
<argument>${libnd4j.extract.instantiations}</argument>
</buildCommand>
<workingDirectory>${project.basedir}</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>debug-functrace-auto-reduce</id>
<activation>
<property>
<name>libnd4j.calltrace</name>
<value>ON</value>
</property>
</activation>
<properties>
<!-- Auto-reduce types for debug builds -->
<libnd4j.datatypes>${libnd4j.datatypes.minimal}</libnd4j.datatypes>
</properties>
</profile>
<profile>
<id>clean-tests</id>
<activation>
<file>
<exists>${basedir}/tests_cpu/Makefile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>libnd4j-test-clean</id>
<phase>clean</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>make</executable>
<workingDirectory>${basedir}/tests_cpu</workingDirectory>
<arguments>
<argument>clean</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>