<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.into-cps.fmi</groupId>
        <artifactId>root</artifactId>
        <version>1.5.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>


    <artifactId>jnifmuapi</artifactId>
    <name>JNI interface for FMI</name>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerArgs>
                        <arg>-h</arg>
                        <arg>${project.basedir}/src/main/native/include</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources-fmi2-schema</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/classes/org/intocps/fmi/jnifmuapi/fmi2/schemas
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${basedir}/src/main/native/src/external/shared/fmi2/schema</directory>
                                    <filtering>false</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-resources-fmi3-schema</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/classes/org/intocps/fmi/jnifmuapi/fmi3/schemas
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${basedir}/src/main/native/src/external/shared/fmi3/schema/</directory>
                                    <filtering>false</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>

                <configuration>
                    <skipTests>false</skipTests>
                    <useSystemClassLoader>false</useSystemClassLoader>
                    <forkCount>1</forkCount>
                    <reuseForks>false</reuseForks>
                    <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
                </configuration>
            </plugin>
        </plugins>


    </build>


    <dependencies>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>

        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.26.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>


        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.0-alpha7</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-reload4j</artifactId>
            <version>2.0.0-alpha7</version>
        </dependency>

        <dependency>
            <groupId>org.into-cps.fmi</groupId>
            <artifactId>fmi2</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mockito/junit -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>4.8.0</version>
            <scope>test</scope>
        </dependency>

    </dependencies>


    <profiles>

        <profile>
            <id>native_release</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>

            <properties>
                <CMAKE_BUILD_TYPE>Release</CMAKE_BUILD_TYPE>
            </properties>
        </profile>

        <profile>
            <id>native_debug</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>

            <properties>
                <CMAKE_BUILD_TYPE>Debug</CMAKE_BUILD_TYPE>
            </properties>
        </profile>

        <profile>
            <id>make</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>

                            <execution>
                                <id>cmake</id>
                                <phase>process-classes</phase>
                                <configuration>
                                    <target>
                                        <exec executable="cmake"
                                              failonerror="true">
                                            <arg value="-G"/>
                                            <arg value="Unix Makefiles"/>
                                            <arg value="-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"/>
                                            <arg value="-S"/>
                                            <arg value="${project.basedir}/src/main/native"/>
                                            <arg value="-B"/>
                                            <arg value="${project.build.directory}/native"/>

                                        </exec>

                                        <exec dir="${project.build.directory}/native" executable="make"
                                              failonerror="true">
                                            <arg value="-j12"/>
                                            <arg value="--always-make"/>
                                        </exec>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>

                            <execution>
                                <id>cmake-bounchingball</id>
                                <phase>process-test-classes</phase>
                                <configuration>
                                    <target>
                                        <!-- FMI2 API FUNCTION TEST -->
                                        <exec executable="python3"
                                              failonerror="true">
                                            <arg value="${project.basedir}/src/test/resources/fmu_compiler_util/prepare_cmake.py"/>
                                            <arg value="--build-description"/>
                                            <arg value="${project.basedir}/src/test/resources/fmus/fmi2/fmi2functiontest/sources/buildDescription.xml"/>
                                            <arg value="--model-description"/>
                                            <arg value="${project.basedir}/src/test/resources/fmus/fmi2/fmi2functiontest/modelDescription.xml"/>
                                            <arg value="--template-dir"/>
                                            <arg value="${project.basedir}/src/test/resources/fmu_compiler_util"/>
                                            <arg value="--fmi-headers"/>
                                            <arg value="${project.basedir}/src/main/native/src/external/shared/fmi2/headers"/>
                                            <arg value="--output-dir"/>
                                            <arg value="${project.build.directory}/fmus/fmi2/fmi2functiontest"/>
                                            <arg value="--fmi-bin-platform-version"/>
                                            <arg value="2"/>

                                        </exec>


                                        <exec dir="${project.build.directory}/fmus/fmi2/fmi2functiontest"
                                              executable="cmake"
                                              failonerror="true">
                                            <arg value="-G"/>
                                            <arg value="Unix Makefiles"/>
                                            <arg value="-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"/>
                                            <arg value="."/>

                                        </exec>

                                        <exec dir="${project.build.directory}/fmus/fmi2/fmi2functiontest"
                                              executable="make"
                                              failonerror="true">
                                            <arg value="-j12"/>
                                            <arg value="--always-make"/>
                                        </exec>

                                        <zip destfile="${project.build.directory}/fmus/fmi2/fmi2functiontest.fmu"
                                             basedir="${project.build.directory}/fmus/fmi2/fmi2functiontest"
                                             excludes="CMakeFiles/**, *.cmake, *.dylib, Makefile, *.txt, *.c"/>


                                        <!-- Bouncing ball -->
                                        <exec executable="python3"
                                              failonerror="true">
                                            <arg value="${project.basedir}/src/test/resources/fmu_compiler_util/prepare_cmake.py"/>
                                            <arg value="--build-description"/>
                                            <arg value="${project.basedir}/src/test/resources/fmus/fmi3/bouncingball/sources/buildDescription.xml"/>
                                            <arg value="--model-description"/>
                                            <arg value="${project.basedir}/src/test/resources/fmus/fmi3/bouncingball/modelDescription.xml"/>
                                            <arg value="--template-dir"/>
                                            <arg value="${project.basedir}/src/test/resources/fmu_compiler_util"/>
                                            <arg value="--fmi-headers"/>
                                            <arg value="${project.basedir}/src/main/native/src/external/shared/fmi3/headers"/>
                                            <arg value="--output-dir"/>
                                            <arg value="${project.build.directory}/fmus/fmi3/bounchingball"/>

                                        </exec>


                                        <exec dir="${project.build.directory}/fmus/fmi3/bounchingball"
                                              executable="cmake"
                                              failonerror="true">
                                            <arg value="-G"/>
                                            <arg value="Unix Makefiles"/>
                                            <arg value="-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"/>
                                            <arg value="."/>

                                        </exec>

                                        <exec dir="${project.build.directory}/fmus/fmi3/bounchingball"
                                              executable="make"
                                              failonerror="true">
                                            <arg value="-j12"/>
                                            <arg value="--always-make"/>
                                        </exec>

                                        <zip destfile="${project.build.directory}/fmus/fmi3/bounchingball.fmu"
                                             basedir="${project.build.directory}/fmus/fmi3/bounchingball"
                                             excludes="CMakeFiles/**, *.cmake, *.dylib, Makefile, *.txt, *.c"/>


                                        <!-- FMI3 API FUNCTION TEST -->
                                        <exec executable="python3"
                                              failonerror="true">
                                            <arg value="${project.basedir}/src/test/resources/fmu_compiler_util/prepare_cmake.py"/>
                                            <arg value="--build-description"/>
                                            <arg value="${project.basedir}/src/test/resources/fmus/fmi3/fmi3functiontest/sources/buildDescription.xml"/>
                                            <arg value="--model-description"/>
                                            <arg value="${project.basedir}/src/test/resources/fmus/fmi3/fmi3functiontest/modelDescription.xml"/>
                                            <arg value="--template-dir"/>
                                            <arg value="${project.basedir}/src/test/resources/fmu_compiler_util"/>
                                            <arg value="--fmi-headers"/>
                                            <arg value="${project.basedir}/src/main/native/src/external/shared/fmi3/headers"/>
                                            <arg value="--output-dir"/>
                                            <arg value="${project.build.directory}/fmus/fmi3/fmi3functiontest"/>

                                        </exec>


                                        <exec dir="${project.build.directory}/fmus/fmi3/fmi3functiontest"
                                              executable="cmake"
                                              failonerror="true">
                                            <arg value="-G"/>
                                            <arg value="Unix Makefiles"/>
                                            <arg value="-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"/>
                                            <arg value="."/>

                                        </exec>

                                        <exec dir="${project.build.directory}/fmus/fmi3/fmi3functiontest"
                                              executable="make"
                                              failonerror="true">
                                            <arg value="-j12"/>
                                            <arg value="--always-make"/>
                                        </exec>

                                        <zip destfile="${project.build.directory}/fmus/fmi3/fmi3functiontest.fmu"
                                             basedir="${project.build.directory}/fmus/fmi3/fmi3functiontest"
                                             excludes="CMakeFiles/**, *.cmake, *.dylib, Makefile, *.txt, *.c"/>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>make32</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>

                            <execution>
                                <id>cmake</id>
                                <phase>process-classes</phase>
                                <configuration>
                                    <target>
                                        <exec executable="cmake"
                                              failonerror="true">
                                            <arg value="-DCMAKE_GENERATOR_PLATFORM=x86"/>
                                            <arg value="-G"/>
                                            <arg value="Unix Makefiles"/>
                                            <arg value="-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"/>
                                            <arg value="-S"/>
                                            <arg value="${project.basedir}/src/main/native"/>
                                            <arg value="-B"/>
                                            <arg value="${project.build.directory}/native"/>
                                        </exec>

                                        <exec dir="${project.build.directory}/native" executable="make"
                                              failonerror="true">
                                            <arg value="-j12"/>
                                            <arg value="--always-make"/>
                                        </exec>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

