<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ 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-backend-impls</artifactId> <groupId>org.nd4j</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>nd4j-native</artifactId> <name>nd4j-native</name> <dependencies> <dependency> <groupId>${dependency.groupId}</groupId> <artifactId>${dependency.artifactId}</artifactId> <version>${dependency.version}</version> <type>${dependency.packaging}</type> <classifier>${dependency.classifier}</classifier> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.0.2.RELEASE</version> <scope>test</scope> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>${javacpp.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>openblas</artifactId> <version>${openblas.version}-${javacpp-presets.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>openblas</artifactId> <version>${openblas.version}-${javacpp-presets.version}</version> <classifier>${dependency.platform}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>mkl</artifactId> <version>${mkl.version}-${javacpp-presets.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>mkl</artifactId> <version>${mkl.version}-${javacpp-presets.version}</version> <classifier>${dependency.platform2}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>mkl-dnn</artifactId> <version>${mkl-dnn.javacpp.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>mkl-dnn</artifactId> <version>${mkl-dnn.javacpp.version}</version> <classifier>${dependency.platform2}</classifier> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>libnd4j</artifactId> <version>${project.version}</version> <type>zip</type> <classifier>${javacpp.platform}${javacpp.platform.extension}</classifier> <scope>provided</scope> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-jackson</artifactId> <version>${project.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-tensorflow</artifactId> <version>${project.version}</version> <scope>test</scope> </dependency> <!-- Reflections: required in one of the tests --> <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>${reflections.version}</version> <scope>test</scope> <exclusions> <exclusion> <groupId>com.google.code.findbugs</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <environmentVariables> <LD_LIBRARY_PATH>${env.LD_LIBRARY_PATH}:${user.dir}:${libnd4jhome}/blasbuild/cpu/blas/</LD_LIBRARY_PATH> </environmentVariables> <includes> <include>*.java</include> <include>**/*.java</include> <include>**/Test*.java</include> <include>**/*Test.java</include> <include>**/*TestCase.java</include> </includes> <junitArtifactName>junit:junit</junitArtifactName> <systemPropertyVariables> <org.nd4j.linalg.defaultbackend>org.nd4j.linalg.cpu.nativecpu.CpuBackend</org.nd4j.linalg.defaultbackend> <org.nd4j.linalg.tests.backendstorun>org.nd4j.linalg.cpu.nativecpu.CpuBackend</org.nd4j.linalg.tests.backendstorun> </systemPropertyVariables> <!-- 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 -Xmx8g</argLine> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <id>javacpp-parser</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <skipMain>${javacpp.parser.skip}</skipMain> <includes> <include>org/nd4j/nativeblas/Nd4jCpuPresets.java</include> </includes> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>${javacpp.version}</version> <dependencies> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>openblas</artifactId> <version>${openblas.version}-${javacpp-presets.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>openblas</artifactId> <version>${openblas.version}-${javacpp-presets.version}</version> <classifier>${dependency.platform}</classifier> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>mkl-dnn</artifactId> <version>${mkl-dnn.javacpp.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>mkl-dnn</artifactId> <version>${mkl-dnn.javacpp.version}</version> <classifier>${dependency.platform2}</classifier> </dependency> </dependencies> <configuration> <properties>${javacpp.platform.properties}</properties> <propertyKeysAndValues> <property> <name>platform.root</name> <value>${javacpp.platform.root}</value> </property> <property> <name>platform.compiler</name> <value>${javacpp.platform.compiler}</value> </property> <property> <name>platform.sysroot</name> <value>${javacpp.platform.sysroot}</value> </property> <property> <name>platform.extension</name> <value>${javacpp.platform.extension}</value> </property> </propertyKeysAndValues> <classPaths> <classPath>${project.build.outputDirectory}</classPath> </classPaths> <includePaths> <includePath>${libnd4jhome}/blasbuild/cpu/include</includePath> <includePath>${libnd4jhome}/blasbuild/cpu/flatbuffers-src/include/</includePath> <includePath>${libnd4jhome}/blas</includePath> <includePath>${libnd4jhome}/include</includePath> <includePath>${libnd4jhome}/include/helpers</includePath> <includePath>${libnd4jhome}/include/array</includePath> <includePath>${libnd4jhome}/include/cnpy</includePath> <includePath>${libnd4jhome}/include/execution</includePath> <includePath>${libnd4jhome}/include/exceptions</includePath> <includePath>${libnd4jhome}/include/graph</includePath> <includePath>${libnd4jhome}/include/indexing</includePath> <includePath>${libnd4jhome}/include/memory</includePath> <includePath>${libnd4jhome}/include/performance</includePath> </includePaths> <linkPath>${libnd4jhome}/blasbuild/cpu/blas</linkPath> <buildResources> <buildResource>/${javacpp.platform.library.path}/</buildResource> <buildResource>/org/bytedeco/mkldnn/${javacpp.platform}/</buildResource> <buildResource>/org/bytedeco/openblas/${javacpp.platform}/</buildResource> </buildResources> <includeResources> <includeResource>/${javacpp.platform.library.path}/include/</includeResource> <includeResource>/org/bytedeco/mkldnn/${javacpp.platform}/include/</includeResource> <includeResource>/org/bytedeco/openblas/${javacpp.platform}/include/</includeResource> </includeResources> <linkResources> <linkResource>/${javacpp.platform.library.path}/</linkResource> <linkResource>/${javacpp.platform.library.path}/lib/</linkResource> <linkResource>/org/bytedeco/mkldnn/${javacpp.platform}/</linkResource> <linkResource>/org/bytedeco/mkldnn/${javacpp.platform}/</linkResource> <linkResource>/org/bytedeco/openblas/${javacpp.platform}/</linkResource> <linkResource>/org/bytedeco/openblas/${javacpp.platform}/lib/</linkResource> </linkResources> </configuration> <executions> <execution> <id>javacpp-validate</id> <phase>validate</phase> <goals> <goal>build</goal> </goals> </execution> <execution> <id>javacpp-parser</id> <phase>generate-sources</phase> <goals> <goal>build</goal> </goals> <configuration> <skip>${javacpp.parser.skip}</skip> <outputDirectory>${project.build.sourceDirectory}</outputDirectory> <classOrPackageName>org.nd4j.nativeblas.Nd4jCpuPresets</classOrPackageName> </configuration> </execution> <execution> <id>javacpp-compiler</id> <phase>process-classes</phase> <goals> <goal>build</goal> </goals> <configuration> <skip>${javacpp.compiler.skip}</skip> <classOrPackageName>org.nd4j.nativeblas.Nd4jCpu</classOrPackageName> <copyLibs>true</copyLibs> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>libnd4j-checks</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireProperty> <property>libnd4jhome</property> <message>You must set the LIBND4J_HOME environment variable!</message> <regex>.*/.*</regex> <regexMessage>!!! LIBND4J_HOME must be a valid unix path!</regexMessage> </requireProperty> <requireFilesExist> <files> <file>${libnd4jhome}/blas/NativeOps.h</file> <file>${libnd4jhome}/blasbuild/cpu/blas</file> </files> <message>!!! You have to compile libnd4j with cpu support first!</message> </requireFilesExist> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>testresources</id> </profile> <profile> <id>avx2</id> <activation> <property> <name>libnd4j.extension</name> <value>avx2</value> </property> </activation> <properties> <javacpp.platform.extension>-avx2</javacpp.platform.extension> </properties> </profile> <profile> <id>avx512</id> <activation> <property> <name>libnd4j.extension</name> <value>avx512</value> </property> </activation> <properties> <javacpp.platform.extension>-avx512</javacpp.platform.extension> </properties> </profile> <profile> <id>macosx-gcc8</id> <activation> <file> <exists>/usr/local/bin/g++-8</exists> </file> </activation> <properties> <javacpp.platform.compiler>/usr/local/bin/g++-8</javacpp.platform.compiler> </properties> </profile> <profile> <id>macosx-gcc7</id> <activation> <file> <exists>/usr/local/bin/g++-7</exists> </file> </activation> <properties> <javacpp.platform.compiler>/usr/local/bin/g++-7</javacpp.platform.compiler> </properties> </profile> <profile> <id>macosx-gcc6</id> <activation> <file> <exists>/usr/local/bin/g++-6</exists> </file> </activation> <properties> <javacpp.platform.compiler>/usr/local/bin/g++-6</javacpp.platform.compiler> </properties> </profile> <profile> <id>macosx-gcc5</id> <activation> <file> <exists>/usr/local/bin/g++-5</exists> </file> </activation> <properties> <javacpp.platform.compiler>/usr/local/bin/g++-5</javacpp.platform.compiler> </properties> </profile> <profile> <id>mingw</id> <activation> <os><family>windows</family></os> </activation> <build> <plugins> <plugin> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <configuration> <properties>${javacpp.platform}-mingw</properties> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>libnd4j-assembly</id> <activation> <property> <name>libnd4j-assembly</name> </property> </activation> <properties> <libnd4jhome>${project.build.directory}/libnd4j/</libnd4jhome> </properties> <dependencies> <dependency> <groupId>org.nd4j</groupId> <artifactId>libnd4j</artifactId> <version>${project.version}</version> <type>zip</type> <classifier>${javacpp.platform}${javacpp.platform.extension}</classifier> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>libnd4j-checks</id> <goals> <goal>enforce</goal> </goals> <configuration> <skip>true</skip> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>unpack</id> <phase>initialize</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>org.nd4j</groupId> <artifactId>libnd4j</artifactId> <version>${project.version}</version> <type>zip</type> <classifier>${javacpp.platform}${javacpp.platform.extension}</classifier> <overWrite>true</overWrite> <outputDirectory>${project.build.directory}</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>