Skip to content

Commit 8159962

Browse files
feat: btree global index with compatibility support
1 parent 3b9e47d commit 8159962

574 files changed

Lines changed: 50303 additions & 3183 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,12 @@ Linked issue: close #xxx
1818
### Documentation
1919

2020
<!-- Does this change introduce a new feature -->
21+
22+
### Generative AI tooling
23+
24+
<!--
25+
If generative AI tooling has been used in the process of authoring this patch, please include the
26+
phrase: 'Generated-by: ' followed by the name of the tool and its version.
27+
If no, write 'No'.
28+
Please refer to the [ASF Generative Tooling Guidance](https://www.apache.org/legal/generative-tooling.html) for details.
29+
-->

.github/workflows/gcc8_test.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Copyright 2026-present Alibaba Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Gcc 8 Test
16+
17+
on:
18+
push:
19+
branches:
20+
- '**'
21+
tags:
22+
- '**'
23+
pull_request:
24+
25+
concurrency:
26+
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
27+
cancel-in-progress: true
28+
29+
permissions:
30+
contents: read
31+
32+
jobs:
33+
gcc8-test:
34+
runs-on: ubuntu-22.04
35+
container:
36+
image: ubuntu:20.04
37+
options: --privileged
38+
timeout-minutes: 120
39+
strategy:
40+
fail-fast: false
41+
steps:
42+
- name: Install dependencies
43+
run: |
44+
apt-get update
45+
DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-8 g++-8 ninja-build git git-lfs tar curl tzdata zip unzip pkg-config build-essential python3-dev gdb
46+
curl -L -O https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz
47+
tar -zxvf cmake-3.28.3-linux-x86_64.tar.gz -C /usr/local --strip-components=1
48+
rm cmake-3.28.3-linux-x86_64.tar.gz
49+
- name: Enable core dumps
50+
run: |
51+
ulimit -c unlimited
52+
sysctl -w kernel.core_pattern=core.%e.%p
53+
- name: Debug core dump settings
54+
run: |
55+
ulimit -c
56+
cat /proc/sys/kernel/core_pattern
57+
ls -la
58+
- name: Checkout paimon-cpp
59+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
60+
with:
61+
lfs: true
62+
- name: Build Paimon
63+
shell: bash
64+
env:
65+
CC: gcc-8
66+
CXX: g++-8
67+
run: ci/scripts/build_paimon.sh $(pwd)

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ option(PAIMON_ENABLE_AVRO "Whether to enable avro file format" ON)
5252
option(PAIMON_ENABLE_ORC "Whether to enable orc file format" ON)
5353
option(PAIMON_ENABLE_LANCE "Whether to enable lance file format" OFF)
5454
option(PAIMON_ENABLE_JINDO "Whether to enable jindo file system" OFF)
55-
option(PAIMON_ENABLE_LUMINA "Whether to enable lumina vector index" ON)
56-
option(PAIMON_ENABLE_LUCENE "Whether to enable lucene index" ON)
55+
option(PAIMON_ENABLE_LUMINA "Whether to enable lumina vector index" OFF)
56+
option(PAIMON_ENABLE_LUCENE "Whether to enable lucene index" OFF)
5757

5858
if(PAIMON_ENABLE_ORC)
5959
add_definitions(-DPAIMON_ENABLE_ORC)

LICENSE

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@ This product includes code from RocksDB.
281281
* endian utility in src/paimon/common/utils/math.h
282282
* uuid utility in src/paimon/common/utils/uuid.h
283283
* Assert utilities in src/paimon/testing/utils/testharness.cpp and src/paimon/testing/utils/testharness.h
284+
* histogram utilities in src/paimon/common/metrics/histogram.cpp and src/paimon/common/metrics/histogram.h (inspired by RocksDB)
285+
* histogram windowing utilities in src/paimon/common/metrics/histogram_windowing.cpp and src/paimon/common/metrics/histogram_windowing.h (inspired by RocksDB)
284286

285287
Copyright: 2011-present, Facebook, Inc. All rights reserved.
286288
Copyright: 2011 The LevelDB Authors. All rights reserved.

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
# Paimon C++
1818

19+
[![GitHub License](https://img.shields.io/github/license/alibaba/paimon-cpp?color=blue)](https://github.com/alibaba/paimon-cpp/blob/main/LICENSE)
20+
[![DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/alibaba/paimon-cpp)
21+
1922
Paimon C++ is a high-performance C++ implementation of [Apache Paimon](https://paimon.apache.org). Paimon C++ aims to provide a native, high-performance and extensible implementation that allows native engines to access the Paimon datalake format with maximum efficiency.
2023

2124
## What's in the Paimon C++ library

build_support/lint_exclusions.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@
1010
*vendored/*
1111
*RcppExports.cpp*
1212
*arrowExports.cpp*
13+
*src/paimon/testing/utils/test_helper.h

ci/scripts/build_paimon.sh

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,25 @@ build_dir=${1}/build
2525
mkdir ${build_dir}
2626
pushd ${build_dir}
2727

28+
ENABLE_LUMINA="ON"
29+
ENABLE_LANCE="ON"
30+
if [[ "${CC:-}" == *"gcc-8"* ]] || [[ "${CXX:-}" == *"g++-8"* ]]; then
31+
ENABLE_LUMINA="OFF" # Lumina is only supported on GCC 9 or higher.
32+
ENABLE_LANCE="OFF"
33+
# Lance's prebuilt binaries can only be compiled on Ubuntu 22.04 and above
34+
# which requires a higher version of glibc,
35+
# but Ubuntu 22.04 and above no longer ships with gcc-8 by default.
36+
# Consider supporting Lance from source compilation in the future
37+
fi
38+
2839
CMAKE_ARGS=(
2940
"-G Ninja"
3041
"-DCMAKE_BUILD_TYPE=${build_type}"
3142
"-DPAIMON_BUILD_TESTS=ON"
32-
"-DPAIMON_ENABLE_LANCE=ON"
43+
"-DPAIMON_ENABLE_LANCE=${ENABLE_LANCE}"
3344
"-DPAIMON_ENABLE_JINDO=ON"
45+
"-DPAIMON_ENABLE_LUMINA=${ENABLE_LUMINA}"
46+
"-DPAIMON_ENABLE_LUCENE=ON"
3447
)
3548

3649
if [[ "${enable_sanitizer}" == "true" ]]; then

cmake_modules/SetupCxxFlags.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
166166
set(CXX_ONLY_FLAGS "${CXX_ONLY_FLAGS} -Wno-subobject-linkage")
167167
endif()
168168

169+
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "8.0"
170+
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")
171+
# When using the C++17 filesystem library (<filesystem>) with GCC 8, you do need to explicitly link stdc++fs.
172+
link_libraries(stdc++fs)
173+
endif()
174+
169175
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL
170176
"Clang")
171177
# Clang options for all builds

cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 72 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ if(CMAKE_GENERATOR_TOOLSET)
3030
endif()
3131

3232
string(TOUPPER ${CMAKE_BUILD_TYPE} UPPERCASE_BUILD_TYPE)
33+
string(TOLOWER ${CMAKE_BUILD_TYPE} LOWERCASE_BUILD_TYPE)
3334

3435
set(EP_COMMON_TOOLCHAIN "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
3536
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
@@ -268,22 +269,65 @@ else()
268269
endif()
269270
endif()
270271

271-
if(DEFINED ENV{PAIMON_JINDOSDK_C_URL})
272-
set(JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_URL}")
272+
if(APPLE)
273+
set(JINDOSDK_C_DYNAMIC_LIB_NAME "jindosdk_c.${PAIMON_JINDOSDK_C_BUILD_VERSION}")
274+
set(JINDOSDK_C_DYNAMIC_LIB_FILE "lib${JINDOSDK_C_DYNAMIC_LIB_NAME}.dylib")
275+
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
276+
set(JINDOSDK_C_BUILD_SHA256_CHECKSUM
277+
"${PAIMON_JINDOSDK_C_MACOS_X86_64_BUILD_SHA256_CHECKSUM}")
278+
if(DEFINED ENV{PAIMON_JINDOSDK_C_MACOS_X86_64_URL})
279+
set(JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_MACOS_X86_64_URL}")
280+
else()
281+
set_urls(JINDOSDK_C_SOURCE_URL
282+
"https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-macos-11_0-x86_64.tar.gz"
283+
)
284+
endif()
285+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
286+
set(JINDOSDK_C_BUILD_SHA256_CHECKSUM
287+
"${PAIMON_JINDOSDK_C_MACOS_AARCH64_BUILD_SHA256_CHECKSUM}")
288+
if(DEFINED ENV{PAIMON_JINDOSDK_C_MACOS_AARCH64_URL})
289+
set(JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_MACOS_AARCH64_URL}")
290+
else()
291+
set_urls(JINDOSDK_C_SOURCE_URL
292+
"https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-macos-11_0-aarch64.tar.gz"
293+
)
294+
endif()
295+
endif()
273296
else()
274-
if(EXISTS "${THIRDPARTY_DIR}/${PAIMON_JINDOSDK_C_PKG_NAME}")
275-
set_urls(JINDOSDK_C_SOURCE_URL "${THIRDPARTY_DIR}/${PAIMON_JINDOSDK_C_PKG_NAME}")
276-
else()
277-
set_urls(JINDOSDK_C_SOURCE_URL
278-
"https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-linux.tar.gz"
279-
)
297+
set(JINDOSDK_C_DYNAMIC_LIB_NAME "jindosdk_c")
298+
set(JINDOSDK_C_DYNAMIC_LIB_FILE "lib${JINDOSDK_C_DYNAMIC_LIB_NAME}.so")
299+
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
300+
set(JINDOSDK_C_BUILD_SHA256_CHECKSUM
301+
"${PAIMON_JINDOSDK_C_LINUX_X86_64_BUILD_SHA256_CHECKSUM}")
302+
if(DEFINED ENV{PAIMON_JINDOSDK_C_LINUX_X86_64_URL})
303+
set(JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_LINUX_X86_64_URL}")
304+
else()
305+
set_urls(JINDOSDK_C_SOURCE_URL
306+
"https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-linux.tar.gz"
307+
)
308+
endif()
309+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
310+
set(JINDOSDK_C_BUILD_SHA256_CHECKSUM
311+
"${PAIMON_JINDOSDK_C_LINUX_AARCH64_BUILD_SHA256_CHECKSUM}")
312+
if(DEFINED ENV{PAIMON_JINDOSDK_C_LINUX_AARCH64_URL})
313+
set(JINDOSDK_C_SOURCE_URL "$ENV{PAIMON_JINDOSDK_C_LINUX_AARCH64_URL}")
314+
else()
315+
set_urls(JINDOSDK_C_SOURCE_URL
316+
"https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/${PAIMON_JINDOSDK_C_BUILD_VERSION}/jindosdk-${PAIMON_JINDOSDK_C_BUILD_VERSION}-linux-el7-aarch64.tar.gz"
317+
)
318+
endif()
280319
endif()
281320
endif()
282321

283322
set(EP_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
284323
set(EP_C_FLAGS "${CMAKE_C_FLAGS}")
285324
string(REPLACE "-Wglobal-constructors" "" EP_CXX_FLAGS ${EP_CXX_FLAGS})
286325
string(REPLACE "-Wglobal-constructors" "" EP_C_FLAGS ${EP_C_FLAGS})
326+
# Remove coverage flags from third-party dependencies to avoid gcov dependency
327+
string(REPLACE "--coverage" "" EP_CXX_FLAGS ${EP_CXX_FLAGS})
328+
string(REPLACE "--coverage" "" EP_C_FLAGS ${EP_C_FLAGS})
329+
string(REPLACE "-DCOVERAGE_BUILD" "" EP_CXX_FLAGS ${EP_CXX_FLAGS})
330+
string(REPLACE "-DCOVERAGE_BUILD" "" EP_C_FLAGS ${EP_C_FLAGS})
287331
if(NOT MSVC_TOOLCHAIN)
288332
# Set -fPIC on all external projects
289333
string(APPEND EP_CXX_FLAGS
@@ -311,6 +355,10 @@ set(EP_COMMON_CMAKE_ARGS
311355
-DCMAKE_C_FLAGS=${EP_C_FLAGS}
312356
-DCMAKE_INSTALL_LIBDIR=lib)
313357

358+
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.30")
359+
list(APPEND EP_COMMON_CMAKE_ARGS -DCMAKE_POLICY_VERSION_MINIMUM=3.5)
360+
endif()
361+
314362
macro(build_lucene)
315363
message(STATUS "Building lucene from source")
316364

@@ -720,19 +768,19 @@ macro(build_jindosdk_c)
720768
set(JINDOSDK_C_HOME "${JINDOSDK_C_PREFIX}")
721769
set(JINDOSDK_C_INCLUDE_DIR "${JINDOSDK_C_PREFIX}/include")
722770
set(JINDOSDK_C_LIB_DIR "${JINDOSDK_C_PREFIX}/lib/native")
723-
set(JINDOSDK_C_DYNAMIC_LIB "${JINDOSDK_C_LIB_DIR}/libjindosdk_c.so")
771+
set(JINDOSDK_C_DYNAMIC_LIB "${JINDOSDK_C_LIB_DIR}/${JINDOSDK_C_DYNAMIC_LIB_FILE}")
724772

725773
# Extract and install jindosdk from precompiled package
726774
externalproject_add(jindosdk_ep
727775
URL ${JINDOSDK_C_SOURCE_URL}
728-
URL_HASH "SHA256=${PAIMON_JINDOSDK_C_BUILD_SHA256_CHECKSUM}"
776+
URL_HASH "SHA256=${JINDOSDK_C_BUILD_SHA256_CHECKSUM}"
729777
${THIRDPARTY_LOG_OPTIONS}
730778
CONFIGURE_COMMAND ""
731779
BUILD_COMMAND ""
732780
INSTALL_COMMAND bash -c
733781
"cp -r <SOURCE_DIR>/include/* ${JINDOSDK_C_INCLUDE_DIR}"
734782
COMMAND bash -c
735-
"cp -r <SOURCE_DIR>/lib/native/libjindosdk_c.so* ${JINDOSDK_C_LIB_DIR}"
783+
"cp -r <SOURCE_DIR>/lib/native/${JINDOSDK_C_DYNAMIC_LIB_FILE}* ${JINDOSDK_C_LIB_DIR}"
736784
BUILD_BYPRODUCTS "${JINDOSDK_C_DYNAMIC_LIB}")
737785

738786
# The include directory must exist before it is referenced by a target.
@@ -750,7 +798,7 @@ macro(build_jindosdk_c)
750798
install(DIRECTORY "${JINDOSDK_C_LIB_DIR}/"
751799
DESTINATION ${CMAKE_INSTALL_LIBDIR}
752800
FILES_MATCHING
753-
PATTERN "libjindosdk_c.so*")
801+
PATTERN "${JINDOSDK_C_DYNAMIC_LIB_FILE}*")
754802

755803
endmacro()
756804

@@ -780,7 +828,8 @@ macro(build_jindosdk_nextarch)
780828
"-DCMAKE_INSTALL_PREFIX=${JINDOSDK_NEXTARCH_PREFIX}"
781829
"-DCMAKE_CXX_FLAGS=${JINDOSDK_NEXTARCH_CMAKE_CXX_FLAGS}"
782830
"-DCMAKE_C_FLAGS=${JINDOSDK_NEXTARCH_CMAKE_C_FLAGS}"
783-
-DJINDOSDK_ROOT=${JINDOSDK_C_DIR_ROOT})
831+
-DJINDOSDK_ROOT=${JINDOSDK_C_DIR_ROOT}
832+
-DJINDOSDK_LIBRARY_NAME=${JINDOSDK_C_DYNAMIC_LIB_NAME})
784833

785834
externalproject_add(jindosdk-nextarch_ep
786835
SOURCE_DIR ${JINDOSDK_NEXTARCH_SOURCE_DIR}
@@ -1048,7 +1097,6 @@ macro(build_arrow)
10481097
file(MAKE_DIRECTORY "${ARROW_INCLUDE_DIR}")
10491098

10501099
set(ARROW_BUILD_DIR "${CMAKE_BINARY_DIR}/arrow")
1051-
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
10521100
set(ARROW_STATIC_LIB
10531101
"${ARROW_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}arrow${CMAKE_STATIC_LIBRARY_SUFFIX}"
10541102
)
@@ -1097,7 +1145,8 @@ macro(build_arrow)
10971145
-DZSTD_ROOT=${ARROW_ZSTD_ROOT}
10981146
-DZLIB_ROOT=${ARROW_ZLIB_ROOT}
10991147
-DSnappy_ROOT=${ARROW_SNAPPY_ROOT}
1100-
-DLZ4_ROOT=${ARROW_LZ4_ROOT})
1148+
-DLZ4_ROOT=${ARROW_LZ4_ROOT}
1149+
-DBUILD_WARNING_LEVEL=PRODUCTION) # ignore warnings under gcc8
11011150

11021151
set(ARROW_CONFIGURE SOURCE_SUBDIR "cpp" CMAKE_ARGS ${ARROW_CMAKE_ARGS})
11031152
set(PATCH_FILE "${CMAKE_CURRENT_LIST_DIR}/arrow.diff")
@@ -1121,38 +1170,38 @@ macro(build_arrow)
11211170
PROPERTIES IMPORTED_LOCATION "${ARROW_PREFIX}/lib/libarrow.a"
11221171
INTERFACE_INCLUDE_DIRECTORIES "${ARROW_INCLUDE_DIR}"
11231172
INTERFACE_LINK_DIRECTORIES
1124-
"${ARROW_BUILD_DIR}/${CMAKE_BUILD_TYPE_LOWER}")
1173+
"${ARROW_BUILD_DIR}/${LOWERCASE_BUILD_TYPE}")
11251174

11261175
add_library(arrow_dataset STATIC IMPORTED)
11271176
set_target_properties(arrow_dataset
11281177
PROPERTIES IMPORTED_LOCATION
11291178
"${ARROW_PREFIX}/lib/libarrow_dataset.a"
11301179
INTERFACE_INCLUDE_DIRECTORIES "${ARROW_INCLUDE_DIR}"
11311180
INTERFACE_LINK_DIRECTORIES
1132-
"${ARROW_BUILD_DIR}/${CMAKE_BUILD_TYPE_LOWER}")
1181+
"${ARROW_BUILD_DIR}/${LOWERCASE_BUILD_TYPE}")
11331182

11341183
add_library(arrow_acero STATIC IMPORTED)
11351184
set_target_properties(arrow_acero
11361185
PROPERTIES IMPORTED_LOCATION
11371186
"${ARROW_PREFIX}/lib/libarrow_acero.a"
11381187
INTERFACE_INCLUDE_DIRECTORIES "${ARROW_INCLUDE_DIR}"
11391188
INTERFACE_LINK_DIRECTORIES
1140-
"${ARROW_BUILD_DIR}/${CMAKE_BUILD_TYPE_LOWER}")
1189+
"${ARROW_BUILD_DIR}/${LOWERCASE_BUILD_TYPE}")
11411190

11421191
add_library(parquet STATIC IMPORTED)
11431192
set_target_properties(parquet
11441193
PROPERTIES IMPORTED_LOCATION "${ARROW_PREFIX}/lib/libparquet.a"
11451194
INTERFACE_INCLUDE_DIRECTORIES "${ARROW_INCLUDE_DIR}"
11461195
INTERFACE_LINK_DIRECTORIES
1147-
"${ARROW_BUILD_DIR}/${CMAKE_BUILD_TYPE_LOWER}")
1196+
"${ARROW_BUILD_DIR}/${LOWERCASE_BUILD_TYPE}")
11481197

11491198
add_library(arrow_bundled_dependencies STATIC IMPORTED)
11501199
set_target_properties(arrow_bundled_dependencies
11511200
PROPERTIES IMPORTED_LOCATION
11521201
"${ARROW_PREFIX}/lib/libarrow_bundled_dependencies.a"
11531202
INTERFACE_INCLUDE_DIRECTORIES "${ARROW_INCLUDE_DIR}"
11541203
INTERFACE_LINK_DIRECTORIES
1155-
"${ARROW_BUILD_DIR}/${CMAKE_BUILD_TYPE_LOWER}")
1204+
"${ARROW_BUILD_DIR}/${LOWERCASE_BUILD_TYPE}")
11561205

11571206
add_dependencies(arrow arrow_ep)
11581207
add_dependencies(parquet arrow_ep)
@@ -1195,7 +1244,7 @@ macro(build_gtest)
11951244
# Library and runtime same on non-Windows
11961245
set(_GTEST_LIBRARY_DIR "${_GTEST_RUNTIME_DIR}")
11971246

1198-
if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
1247+
if(LOWERCASE_BUILD_TYPE STREQUAL "debug")
11991248
set(GTEST_STATIC_LIB "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtestd.a")
12001249
set(GMOCK_STATIC_LIB "${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gmockd.a")
12011250
set(GTEST_MAIN_STATIC_LIB
@@ -1258,7 +1307,7 @@ macro(build_tbb)
12581307

12591308
set(TBB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/tbb_ep-install")
12601309

1261-
if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
1310+
if(LOWERCASE_BUILD_TYPE STREQUAL "debug")
12621311
set(TBB_STATIC_LIB "${TBB_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}tbb_debug.a")
12631312
else()
12641313
set(TBB_STATIC_LIB "${TBB_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}tbb.a")
@@ -1269,8 +1318,6 @@ macro(build_tbb)
12691318

12701319
set(TBB_BUILD_DIR "${CMAKE_BINARY_DIR}/tbb")
12711320

1272-
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
1273-
12741321
set(TBB_CMAKE_ARGS
12751322
${EP_COMMON_CMAKE_ARGS}
12761323
"-DCMAKE_INSTALL_PREFIX=${TBB_PREFIX}"
@@ -1290,7 +1337,7 @@ macro(build_tbb)
12901337
PROPERTIES IMPORTED_LOCATION "${TBB_STATIC_LIB}"
12911338
INTERFACE_INCLUDE_DIRECTORIES "${TBB_INCLUDE_DIR}"
12921339
INTERFACE_LINK_DIRECTORIES
1293-
"${TBB_BUILD_DIR}/${CMAKE_BUILD_TYPE_LOWER}")
1340+
"${TBB_BUILD_DIR}/${LOWERCASE_BUILD_TYPE}")
12941341
add_dependencies(tbb tbb_ep)
12951342

12961343
endmacro(build_tbb)

0 commit comments

Comments
 (0)