<?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>1.0.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>
