1#!/usr/bin/env bash 2# Licensed to the Apache Software Foundation (ASF) under one 3# or more contributor license agreements. See the NOTICE file 4# distributed with this work for additional information 5# regarding copyright ownership. The ASF licenses this file 6# to you under the Apache License, Version 2.0 (the 7# "License"); you may not use this file except in compliance 8# with the License. You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, 13# software distributed under the License is distributed on an 14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15# KIND, either express or implied. See the License for the 16# specific language governing permissions and limitations 17# under the License. 18 19set -e 20 21: ${ARROW_DIR:=/arrow} 22: ${EXAMPLE_DIR:=/io} 23: ${ARROW_BUILD_DIR:=/build/arrow} 24: ${EXAMPLE_BUILD_DIR:=/build/example} 25 26: ${ARROW_DEPENDENCY_SOURCE:=BUNDLED} 27 28echo 29echo "==" 30echo "== Building Arrow C++ library" 31echo "==" 32echo 33 34mkdir -p $ARROW_BUILD_DIR 35pushd $ARROW_BUILD_DIR 36 37NPROC=$(nproc) 38 39cmake $ARROW_DIR/cpp \ 40 -DARROW_BUILD_SHARED=OFF \ 41 -DARROW_BUILD_STATIC=ON \ 42 -DARROW_COMPUTE=ON \ 43 -DARROW_CSV=ON \ 44 -DARROW_DATASET=ON \ 45 -DARROW_DEPENDENCY_SOURCE=${ARROW_DEPENDENCY_SOURCE} \ 46 -DARROW_DEPENDENCY_USE_SHARED=OFF \ 47 -DARROW_FILESYSTEM=ON \ 48 -DARROW_HDFS=ON \ 49 -DARROW_JEMALLOC=ON \ 50 -DARROW_JSON=ON \ 51 -DARROW_ORC=ON \ 52 -DARROW_PARQUET=ON \ 53 -DARROW_PLASMA=ON \ 54 -DARROW_WITH_BROTLI=ON \ 55 -DARROW_WITH_BZ2=ON \ 56 -DARROW_WITH_LZ4=ON \ 57 -DARROW_WITH_SNAPPY=ON \ 58 -DARROW_WITH_ZLIB=ON \ 59 -DARROW_WITH_ZSTD=ON \ 60 -DORC_SOURCE=BUNDLED \ 61 $ARROW_CMAKE_OPTIONS 62 63make -j$NPROC 64make install 65 66popd 67 68echo 69echo "==" 70echo "== CMake:" 71echo "== Building example project using Arrow C++ library" 72echo "==" 73echo 74 75rm -rf $EXAMPLE_BUILD_DIR 76mkdir -p $EXAMPLE_BUILD_DIR 77pushd $EXAMPLE_BUILD_DIR 78 79cmake $EXAMPLE_DIR -DARROW_LINK_SHARED=OFF 80make 81 82popd 83 84echo 85echo "==" 86echo "== CMake:" 87echo "== Running example project" 88echo "==" 89echo 90 91pushd $EXAMPLE_DIR 92 93$EXAMPLE_BUILD_DIR/arrow_example 94 95echo 96echo "==" 97echo "== pkg-config" 98echo "== Building example project using Arrow C++ library" 99echo "==" 100echo 101 102rm -rf $EXAMPLE_BUILD_DIR 103mkdir -p $EXAMPLE_BUILD_DIR 104${CXX:-c++} \ 105 -o $EXAMPLE_BUILD_DIR/arrow_example \ 106 $EXAMPLE_DIR/example.cc \ 107 $(PKG_CONFIG_PATH=$ARROW_BUILD_DIR/lib/pkgconfig \ 108 pkg-config --cflags --libs --static arrow) 109 110popd 111 112echo 113echo "==" 114echo "== pkg-config:" 115echo "== Running example project" 116echo "==" 117echo 118 119pushd $EXAMPLE_DIR 120 121$EXAMPLE_BUILD_DIR/arrow_example 122