Skip to content

Commit 4e766d9

Browse files
committed
simplify ThirdpartyToolchain.cmake
1 parent b750758 commit 4e766d9

File tree

3 files changed

+22
-29
lines changed

3 files changed

+22
-29
lines changed

README.md

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,27 @@ C++ implementation of [Apache Iceberg™](https://iceberg.apache.org/).
3232

3333
```bash
3434
cd iceberg-cpp
35-
mkdir build && cd build
36-
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_STATIC=ON -DICEBERG_BUILD_SHARED=ON
37-
cmake --build .
38-
cmake --install .
35+
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_STATIC=ON -DICEBERG_BUILD_SHARED=ON
36+
cmake --build build
37+
cmake --install build
3938
```
4039

4140
### Build and Install Iceberg Arrow Library
4241

4342
#### Vendored Apache Arrow (default)
4443

4544
```bash
46-
cd iceberg-cpp/src/arrow
47-
mkdir build && cd build
48-
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_ARROW=ON
49-
cmake --build .
50-
cmake --install .
45+
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_ARROW=ON
46+
cmake --build build
47+
cmake --install build
5148
```
5249

5350
#### Provided Apache Arrow
5451

5552
```bash
56-
cd iceberg-cpp/src/arrow
57-
mkdir build && cd build
58-
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_PREFIX_PATH=/path/to/arrow -DICEBERG_ARROW=ON
59-
cmake --build .
60-
cmake --install .
53+
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_PREFIX_PATH=/path/to/arrow -DICEBERG_ARROW=ON
54+
cmake --build build
55+
cmake --install build
6156
```
6257

6358
### Build Examples
@@ -66,9 +61,8 @@ After installing the core libraries, you can build the examples:
6661

6762
```bash
6863
cd iceberg-cpp/example
69-
mkdir build && cd build
70-
cmake .. -DCMAKE_PREFIX_PATH=/path/to/install
71-
cmake --build .
64+
cmake -S . -B build -DCMAKE_PREFIX_PATH=/path/to/install
65+
cmake --build build
7266
```
7367

7468
If you are using provided Apache Arrow, you need to include `/path/to/arrow` in `CMAKE_PREFIX_PATH` as below.

cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,13 @@ set(ICEBERG_ARROW_INSTALL_INTERFACE_LIBS)
2727
set(ICEBERG_ARROW_BUILD_VERSION "18.1.0")
2828
set(ICEBERG_ARROW_BUILD_SHA256_CHECKSUM
2929
"2dc8da5f8796afe213ecc5e5aba85bb82d91520eff3cf315784a52d0fa61d7fc")
30-
set(ARROW_VENDORED TRUE)
3130

3231
if(DEFINED ENV{ICEBERG_ARROW_URL})
3332
set(ARROW_SOURCE_URL "$ENV{ICEBERG_ARROW_URL}")
3433
else()
3534
set(ARROW_SOURCE_URL
3635
"https://www.apache.org/dyn/closer.cgi?action=download&filename=/arrow/arrow-${ICEBERG_ARROW_BUILD_VERSION}/apache-arrow-${ICEBERG_ARROW_BUILD_VERSION}.tar.gz"
3736
"https://downloads.apache.org/arrow/arrow-${ICEBERG_ARROW_BUILD_VERSION}/apache-arrow-${ICEBERG_ARROW_BUILD_VERSION}.tar.gz"
38-
"https://github.com/apache/arrow/releases/download/apache-arrow-${ICEBERG_ARROW_BUILD_VERSION}/apache-arrow-${ICEBERG_ARROW_BUILD_VERSION}.tar.gz"
3937
)
4038
endif()
4139

@@ -101,18 +99,18 @@ function(resolve_arrow_dependency)
10199

102100
fetchcontent_makeavailable(Arrow)
103101

104-
if(NOT TARGET Arrow::arrow_static)
105-
add_library(Arrow::arrow_static INTERFACE IMPORTED)
106-
target_link_libraries(Arrow::arrow_static INTERFACE arrow_static)
107-
target_include_directories(Arrow::arrow_static INTERFACE ${arrow_SOURCE_DIR}/cpp/src
108-
${arrow_BINARY_DIR}/src)
109-
endif()
110-
111-
fetchcontent_getproperties(Arrow)
112102
if(arrow_SOURCE_DIR)
103+
if(NOT TARGET Arrow::arrow_static)
104+
add_library(Arrow::arrow_static INTERFACE IMPORTED)
105+
target_link_libraries(Arrow::arrow_static INTERFACE arrow_static)
106+
target_include_directories(Arrow::arrow_static
107+
INTERFACE ${arrow_BINARY_DIR}/src
108+
${arrow_SOURCE_DIR}/cpp/src)
109+
endif()
110+
113111
set(ARROW_VENDORED TRUE)
114112
install(TARGETS arrow_static
115-
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
113+
RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR}"
116114
ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR}"
117115
LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR}")
118116

src/config.cmake.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ macro(iceberg_find_components components)
6565

6666
foreach(comp ${components})
6767
string(TOLOWER "${comp}" _comp_lower_case)
68-
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/iceberg-${_comp_lower_case}-targets.cmake")
68+
if(TARGET "Iceberg::iceberg_${_comp_lower_case}_shared" OR
69+
TARGET "Iceberg::iceberg_${_comp_lower_case}_static")
6970
set(Iceberg_${comp}_FOUND TRUE)
7071
else()
7172
set(Iceberg_${comp}_FOUND FALSE)

0 commit comments

Comments
 (0)