<?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.12.4</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-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>
