<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

      http://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.
  -->
<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.apache.iotdb</groupId>
        <artifactId>iotdb-parent</artifactId>
        <version>0.13.1</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>client-cpp-tools</artifactId>
    <packaging>pom</packaging>
    <name>Compile Tools</name>
    <properties>
        <boost.version>1.72.0</boost.version>
        <boost.version.underline-short>1_72</boost.version.underline-short>
        <boost.version.underline>${boost.version.underline-short}_0</boost.version.underline>
        <cmake-version>3.17.3</cmake-version>
        <openssl.include.dir>-Dtrue1=true1</openssl.include.dir>
        <bison.executable.dir>-Dtrue1=true1</bison.executable.dir>
        <cmake.build.type/>
    </properties>
    <modules>
        <module>thrift</module>
    </modules>
    <profiles>
        <profile>
            <id>os-unix</id>
            <activation>
                <os>
                    <family>unix</family>
                </os>
            </activation>
            <properties>
                <os.suffix>linux</os.suffix>
                <os.classifier>linux-x86_64</os.classifier>
                <cmake.url>https://github.com/Kitware/CMake/releases/download/v${cmake-version}/cmake-${cmake-version}-Linux-x86_64.tar.gz</cmake.url>
                <cmake.root.dir>${project.build.directory}/cmake-${cmake-version}-Linux-x86_64/</cmake.root.dir>
                <cmake.generator>Unix Makefiles</cmake.generator>
                <boost.url>https://boostorg.jfrog.io/artifactory/main/release/${boost.version}/source/boost_${boost.version.underline}.zip</boost.url>
                <boost.bootstrap.executable>./bootstrap.sh</boost.bootstrap.executable>
                <boost.build.executable>./b2</boost.build.executable>
                <thrift.bootstrap.executable>./bootstrap.sh</thrift.bootstrap.executable>
                <thrift.configure.executable>./configure</thrift.configure.executable>
                <thrift.make.executable>make</thrift.make.executable>
                <thrift.compiler.executable>thrift</thrift.compiler.executable>
                <gradlew.executable>./gradlew</gradlew.executable>
            </properties>
        </profile>
        <profile>
            <id>os-unix-arm</id>
            <activation>
                <os>
                    <family>unix</family>
                    <arch>aarch64</arch>
                </os>
            </activation>
            <properties>
                <os.suffix>linux</os.suffix>
                <os.classifier>linux-arm_32</os.classifier>
                <cmake.url>https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2-linux-aarch64.tar.gz</cmake.url>
                <cmake.root.dir>${project.build.directory}/cmake-3.21.2-linux-aarch64/</cmake.root.dir>
                <cmake.generator>Unix Makefiles</cmake.generator>
                <boost.url>https://boostorg.jfrog.io/artifactory/main/release/${boost.version}/source/boost_${boost.version.underline}.zip</boost.url>
                <boost.bootstrap.executable>./bootstrap.sh</boost.bootstrap.executable>
                <boost.build.executable>./b2</boost.build.executable>
                <thrift.bootstrap.executable>./bootstrap.sh</thrift.bootstrap.executable>
                <thrift.configure.executable>./configure</thrift.configure.executable>
                <thrift.make.executable>make</thrift.make.executable>
                <thrift.compiler.executable>thrift</thrift.compiler.executable>
                <gradlew.executable>./gradlew</gradlew.executable>
            </properties>
        </profile>
        <profile>
            <id>os-mac</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
            <properties>
                <os.suffix>mac</os.suffix>
                <os.classifier>mac-x86_64</os.classifier>
                <cmake.url>https://github.com/Kitware/CMake/releases/download/v${cmake-version}/cmake-${cmake-version}-Darwin-x86_64.tar.gz</cmake.url>
                <cmake.root.dir>${project.build.directory}/cmake-${cmake-version}-Darwin-x86_64/CMake.app/Contents</cmake.root.dir>
                <cmake.generator>Unix Makefiles</cmake.generator>
                <boost.url>https://boostorg.jfrog.io/artifactory/main/release/${boost.version}/source/boost_${boost.version.underline}.zip</boost.url>
                <boost.bootstrap.executable>./bootstrap.sh</boost.bootstrap.executable>
                <boost.build.executable>./b2</boost.build.executable>
                <thrift.bootstrap.executable>./bootstrap.sh</thrift.bootstrap.executable>
                <thrift.configure.executable>./configure</thrift.configure.executable>
                <thrift.make.executable>make</thrift.make.executable>
                <thrift.compiler.executable>thrift</thrift.compiler.executable>
                <gradlew.executable>./gradlew</gradlew.executable>
                <openssl.include.default.path>/usr/local/opt/openssl/include</openssl.include.default.path>
                <openssl.include.dir>-DCMAKE_CXX_FLAGS="-I${openssl.include.default.path}"</openssl.include.dir>
                <bison.executable.dir>-DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison</bison.executable.dir>
            </properties>
        </profile>
        <profile>
            <id>os-windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <os.suffix>win</os.suffix>
                <os.classifier>windows-x86_64</os.classifier>
                <cmake.url>https://github.com/Kitware/CMake/releases/download/v${cmake-version}/cmake-${cmake-version}-win64-x64.zip</cmake.url>
                <cmake.root.dir>${project.build.directory}/cmake-${cmake-version}-win64-x64/</cmake.root.dir>
                <!--<cmake.generator>MinGW Makefiles</cmake.generator>-->
                <cmake.generator>Visual Studio 16 2019</cmake.generator>
                <cmake.build.type>Release</cmake.build.type>
                <boost.url>https://boostorg.jfrog.io/artifactory/main/release/${boost.version}/source/boost_${boost.version.underline}.zip</boost.url>
                <boost.bootstrap.executable>bootstrap.bat</boost.bootstrap.executable>
                <boost.build.executable>b2</boost.build.executable>
                <boost.include-directory>libs/libs/boost/include/boost-${boost.version.underline-short}</boost.include-directory>
                <thrift.bootstrap.executable>bootstrap.sh</thrift.bootstrap.executable>
                <thrift.configure.executable>configure</thrift.configure.executable>
                <thrift.make.executable>make</thrift.make.executable>
                <thrift.compiler.executable>thrift.exe</thrift.compiler.executable>
                <gradlew.executable>gradlew.bat</gradlew.executable>
                <boost.include.dir/>
                <boost.library.dir/>
            </properties>
        </profile>
    </profiles>
</project>
