kou commented on code in PR #37821:
URL: https://github.com/apache/arrow/pull/37821#discussion_r1340684781
##########
cpp/CMakePresets.json:
##########
@@ -341,6 +374,26 @@
"displayName": "Release build with CUDA integration",
"cacheVariables": {}
},
+ {
+ "name": "ninja-debug-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-debug",
+ "features-main"
Review Comment:
Do we need to include `features-main` here? `features-emacripten` doesn't
cover it?
Could you use `base-*` -> `features-*` order like others?
```suggestion
"base-debug",
"features-emscripten"
```
##########
cpp/CMakePresets.json:
##########
@@ -368,6 +421,16 @@
"displayName": "Release build with Gandiva",
"cacheVariables": {}
},
+ {
+ "name": "ninja-release-python-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-release",
+ "features-python"
+ ],
+ "displayName": "Release build which builds an emscripten library
suitable for PyArrow",
Review Comment:
```suggestion
"displayName": "Release build which builds an Emscripten library
suitable for PyArrow",
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1825,6 +1896,41 @@ if(ARROW_WITH_PROTOBUF)
set(ARROW_PROTOBUF_PROTOC protobuf::protoc)
endif()
+ if(CMAKE_CROSSCOMPILING)
+ # if we are cross compiling, we need to build protoc for the host
+ # system also, as it is used when building arrow
+ # We do this by calling cmake as a child process
+ # with CXXFLAGS / CFLAGS and cmake flags cleared
Review Comment:
```suggestion
# with CXXFLAGS / CFLAGS and CMake flags cleared.
```
##########
cpp/CMakePresets.json:
##########
@@ -341,6 +374,26 @@
"displayName": "Release build with CUDA integration",
"cacheVariables": {}
},
+ {
+ "name": "ninja-debug-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-debug",
+ "features-main"
+ ],
+ "displayName": "Release build which builds an emscripten library",
Review Comment:
```suggestion
"displayName": "Release build which builds an Emscripten library",
```
##########
cpp/CMakePresets.json:
##########
@@ -341,6 +374,26 @@
"displayName": "Release build with CUDA integration",
"cacheVariables": {}
},
+ {
+ "name": "ninja-debug-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-debug",
+ "features-main"
+ ],
+ "displayName": "Release build which builds an emscripten library",
+ "cacheVariables": {}
+ },
+ {
+ "name": "ninja-release-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-release",
+ "features-main"
+ ],
+ "displayName": "Release build which builds an emscripten library",
Review Comment:
```suggestion
"displayName": "Release build which builds an Emscripten library",
```
##########
cpp/cmake_modules/EmscriptenOverrides.cmake:
##########
@@ -0,0 +1,25 @@
+# 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.
+
+# Force some variables for Emscripten
+# to disable things that won't work there
+
+# # override default in Emscripten which is to not use shared libs
+set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
Review Comment:
Can we move this to #37822 because we don't need to build shared libraries
for Apache Arrow C++?
##########
cpp/CMakePresets.json:
##########
@@ -46,6 +46,39 @@
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
+ {
+ "name": "features-emscripten",
+ "hidden": true,
+ "cacheVariables": {
+ "ARROW_ACERO": "ON",
+ "ARROW_BUILD_SHARED": "OFF",
+ "ARROW_BUILD_STATIC": "ON",
+ "ARROW_BUILD_TESTS": "OFF",
+ "ARROW_CUDA": "OFF",
+ "ARROW_DEPENDENCY_SOURCE": "BUNDLED",
+ "ARROW_DEPENDENCY_USE_SHARED": "OFF",
+ "ARROW_ENABLE_THREADING": "OFF",
+ "ARROW_FLIGHT": "OFF",
+ "ARROW_IPC": "ON",
+ "ARROW_JEMALLOC": "OFF",
+ "ARROW_MIMALLOC": "OFF",
+ "ARROW_ORC": "ON",
+ "ARROW_RUNTIME_SIMD_LEVEL": "NONE",
+ "ARROW_S3": "OFF",
+ "ARROW_SNAPPY_USE_SHARED": "OFF",
Review Comment:
We can remove this because we have `"ARROW_DEPENDENCY_USE_SHARED": "OFF"`.
##########
cpp/CMakePresets.json:
##########
@@ -341,6 +374,26 @@
"displayName": "Release build with CUDA integration",
"cacheVariables": {}
},
+ {
+ "name": "ninja-debug-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-debug",
+ "features-main"
+ ],
+ "displayName": "Release build which builds an emscripten library",
+ "cacheVariables": {}
+ },
+ {
+ "name": "ninja-release-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-release",
+ "features-main"
Review Comment:
ditto.
##########
docs/source/developers/cpp/emscripten.rst:
##########
@@ -0,0 +1,101 @@
+.. 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.
+
+
+.. highlight:: console
+
+.. _developers-cpp-emscripten:
+#################################################
+Cross compiling for WebAssembly with Emscripten
+#################################################
+
+***************
+ Prerequisites
+***************
+You need CMake and compilers etc. installed as per the normal build
instructions. Before building with Emscripten, you also need to install
Emscripten and
+activate it using the commands below (see
https://emscripten.org/docs/getting_started/downloads.html for details).
+
+.. code:: shell
+
+ git clone https://github.com/emscripten-core/emsdk.git
+ cd emsdk
+ # replace <version> with the desired EMSDK version.
+ # e.g. for pyodide 0.24, you need EMSDK version 3.1.45
+ ./emsdk install <version>
+ ./emsdk activate <version>
+ source ./emsdk_env.sh
+
+If you want to build PyArrow for `Pyodide <https://pyodide.org>`_, you
+need ``pyodide-build`` installed via ``pip``, and to be running with the
+same version of Python that Pyodide is built for, along with the same
+versions of emsdk.
+
+.. code:: shell
+
+ # install pyodide build tools.
+ # e.g. for version 0.24 of pyodide:
+ pip install pyodide-build==0.24
+
+Then build with the ``ninja-release-python-emscripten`` cmake preset,
Review Comment:
```suggestion
Then build with the ``ninja-release-python-emscripten`` CMake preset,
```
##########
cpp/CMakePresets.json:
##########
@@ -368,6 +421,16 @@
"displayName": "Release build with Gandiva",
"cacheVariables": {}
},
+ {
+ "name": "ninja-release-python-emscripten",
+ "inherits": [
+ "features-emscripten",
+ "base-release",
+ "features-python"
Review Comment:
How about creating `features-python-emscripten` that inherits from
`features-python` and `features-emscripten` and use it here like others?
```suggestion
"base-release",
"features-python-emscripten"
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -4331,6 +4437,8 @@ macro(build_orc)
get_target_property(ORC_ZSTD_ROOT ${ARROW_ZSTD_LIBZSTD}
INTERFACE_INCLUDE_DIRECTORIES)
get_filename_component(ORC_ZSTD_ROOT "${ORC_ZSTD_ROOT}" DIRECTORY)
+ set(LZ4_TARGET LZ4::lz4)
Review Comment:
We don't need to define this variable. We can use `LZ4::lz4` directly.
##########
docs/source/developers/cpp/emscripten.rst:
##########
@@ -0,0 +1,101 @@
+.. 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.
+
+
+.. highlight:: console
+
+.. _developers-cpp-emscripten:
+#################################################
+Cross compiling for WebAssembly with Emscripten
+#################################################
+
+***************
+ Prerequisites
+***************
+You need CMake and compilers etc. installed as per the normal build
instructions. Before building with Emscripten, you also need to install
Emscripten and
+activate it using the commands below (see
https://emscripten.org/docs/getting_started/downloads.html for details).
+
+.. code:: shell
+
+ git clone https://github.com/emscripten-core/emsdk.git
+ cd emsdk
+ # replace <version> with the desired EMSDK version.
+ # e.g. for pyodide 0.24, you need EMSDK version 3.1.45
+ ./emsdk install <version>
+ ./emsdk activate <version>
+ source ./emsdk_env.sh
+
+If you want to build PyArrow for `Pyodide <https://pyodide.org>`_, you
+need ``pyodide-build`` installed via ``pip``, and to be running with the
+same version of Python that Pyodide is built for, along with the same
+versions of emsdk.
+
+.. code:: shell
+
+ # install pyodide build tools.
+ # e.g. for version 0.24 of pyodide:
+ pip install pyodide-build==0.24
+
+Then build with the ``ninja-release-python-emscripten`` cmake preset,
+like below:
+
+.. code:: shell
+
+ cmake --preset "ninja-release-python-emscripten"
+ ninja install
+
+This will install a built static library version of ``libarrow`` it into the
+Emscripten sysroot cache, meaning you can build things that depend on it
+and they will find ``libarrow``.
+
+e.g. if you want to build for Pyodide, run the commands above, and then
+go to ``arrow/python`` and run
+
+.. code:: shell
+
+ pyodide build
+
+It should make a wheel targeting the currently enabled version of
+pyodide (i.e. the version corresponding to the currently installed
Review Comment:
```suggestion
Pyodide (i.e. the version corresponding to the currently installed
```
##########
docs/source/developers/cpp/emscripten.rst:
##########
@@ -0,0 +1,101 @@
+.. 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.
+
+
+.. highlight:: console
+
+.. _developers-cpp-emscripten:
+#################################################
+Cross compiling for WebAssembly with Emscripten
+#################################################
+
+***************
+ Prerequisites
+***************
+You need CMake and compilers etc. installed as per the normal build
instructions. Before building with Emscripten, you also need to install
Emscripten and
+activate it using the commands below (see
https://emscripten.org/docs/getting_started/downloads.html for details).
+
+.. code:: shell
+
+ git clone https://github.com/emscripten-core/emsdk.git
+ cd emsdk
+ # replace <version> with the desired EMSDK version.
+ # e.g. for pyodide 0.24, you need EMSDK version 3.1.45
+ ./emsdk install <version>
+ ./emsdk activate <version>
+ source ./emsdk_env.sh
+
+If you want to build PyArrow for `Pyodide <https://pyodide.org>`_, you
+need ``pyodide-build`` installed via ``pip``, and to be running with the
+same version of Python that Pyodide is built for, along with the same
+versions of emsdk.
+
+.. code:: shell
+
+ # install pyodide build tools.
+ # e.g. for version 0.24 of pyodide:
+ pip install pyodide-build==0.24
+
+Then build with the ``ninja-release-python-emscripten`` cmake preset,
+like below:
+
+.. code:: shell
+
+ cmake --preset "ninja-release-python-emscripten"
Review Comment:
Do we need to prepend `emcmake`?
```suggestion
emcmake cmake --preset "ninja-release-python-emscripten"
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1825,6 +1896,41 @@ if(ARROW_WITH_PROTOBUF)
set(ARROW_PROTOBUF_PROTOC protobuf::protoc)
endif()
+ if(CMAKE_CROSSCOMPILING)
+ # if we are cross compiling, we need to build protoc for the host
Review Comment:
```suggestion
# If we are cross compiling, we need to build protoc for the host
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1825,6 +1896,41 @@ if(ARROW_WITH_PROTOBUF)
set(ARROW_PROTOBUF_PROTOC protobuf::protoc)
endif()
+ if(CMAKE_CROSSCOMPILING)
+ # if we are cross compiling, we need to build protoc for the host
+ # system also, as it is used when building arrow
Review Comment:
```suggestion
# system also, as it is used when building Arrow.
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -258,6 +258,21 @@ macro(resolve_dependency DEPENDENCY_NAME)
set(ARG_IS_RUNTIME_DEPENDENCY TRUE)
endif()
+ # ensure zlib is built with -fpic
+ # and make sure that the build finds the version in Emscripten ports
+ # - n.b. the actual linking happens because -sUSE_ZLIB=1 is
+ # set in the compiler variables, but cmake expects
+ # it to exist at configuration time if we aren't building it as
+ # bundled. We need to do this for all packages
+ # not just zlib as some depend on zlib, but we don't rebuild
+ # if it exists already
+ if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+ if(NOT EXISTS ${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a)
+ execute_process(COMMAND embuilder --pic --force build zlib)
+ endif()
+ set(ZLIB_LIBRARY ${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a)
+ endif()
Review Comment:
Could you do this in `build_zlib()`?
##########
python/CMakeLists.txt:
##########
Review Comment:
Could you move Python related changes to #37822?
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1365,16 +1398,51 @@ macro(build_brotli)
)
set(BROTLI_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
"-DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}")
- externalproject_add(brotli_ep
- ${EP_COMMON_OPTIONS}
- URL ${BROTLI_SOURCE_URL}
- URL_HASH "SHA256=${ARROW_BROTLI_BUILD_SHA256_CHECKSUM}"
- BUILD_BYPRODUCTS "${BROTLI_STATIC_LIBRARY_ENC}"
- "${BROTLI_STATIC_LIBRARY_DEC}"
- "${BROTLI_STATIC_LIBRARY_COMMON}"
- ${BROTLI_BUILD_BYPRODUCTS}
- CMAKE_ARGS ${BROTLI_CMAKE_ARGS}
- STEP_TARGETS headers_copy)
+ set(BROTLI_INSTALL_OVERRIDE)
Review Comment:
Why is this needed?
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1365,16 +1398,51 @@ macro(build_brotli)
)
set(BROTLI_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
"-DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}")
- externalproject_add(brotli_ep
- ${EP_COMMON_OPTIONS}
- URL ${BROTLI_SOURCE_URL}
- URL_HASH "SHA256=${ARROW_BROTLI_BUILD_SHA256_CHECKSUM}"
- BUILD_BYPRODUCTS "${BROTLI_STATIC_LIBRARY_ENC}"
- "${BROTLI_STATIC_LIBRARY_DEC}"
- "${BROTLI_STATIC_LIBRARY_COMMON}"
- ${BROTLI_BUILD_BYPRODUCTS}
- CMAKE_ARGS ${BROTLI_CMAKE_ARGS}
- STEP_TARGETS headers_copy)
+ set(BROTLI_INSTALL_OVERRIDE)
+
+ if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+ # cmake install is disabled for brotli on emscripten, so we have
+ # to manually copy the libraries to our install directory
+ set(BROTLI_BUILD_DIR
${CMAKE_CURRENT_BINARY_DIR}/brotli_ep-prefix/src/brotli_ep-build)
+ set(BROTLI_BUILD_LIBS
+
"${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc-static${CMAKE_STATIC_LIBRARY_SUFFIX}"
+
"${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec-static${CMAKE_STATIC_LIBRARY_SUFFIX}"
+
"${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon-static${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ )
+
+ set(BROTLI_BUILD_INCLUDE_DIR
+
${CMAKE_CURRENT_BINARY_DIR}/brotli_ep-prefix/src/brotli_ep/c/include/brotli)
+
+ externalproject_add(brotli_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${BROTLI_SOURCE_URL}
+ URL_HASH "SHA256=${ARROW_BROTLI_BUILD_SHA256_CHECKSUM}"
+ BUILD_BYPRODUCTS "${BROTLI_STATIC_LIBRARY_ENC}"
+ "${BROTLI_STATIC_LIBRARY_DEC}"
+ "${BROTLI_STATIC_LIBRARY_COMMON}"
+ ${BROTLI_BUILD_BYPRODUCTS}
+ CMAKE_ARGS ${BROTLI_CMAKE_ARGS}
+ STEP_TARGETS headers_copy
+ INSTALL_COMMAND "")
+ add_custom_command(TARGET brotli_ep
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+
${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}*${CMAKE_STATIC_LIBRARY_SUFFIX}
+ ${BROTLI_LIB_DIR}
+ COMMAND ${CMAKE_COMMAND} -E copy_directory
+ ${BROTLI_BUILD_INCLUDE_DIR}
${BROTLI_INCLUDE_DIR}/brotli)
+ else() # not emscripten - just behave as normal
+ externalproject_add(brotli_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${BROTLI_SOURCE_URL}
+ URL_HASH "SHA256=${ARROW_BROTLI_BUILD_SHA256_CHECKSUM}"
+ BUILD_BYPRODUCTS "${BROTLI_STATIC_LIBRARY_ENC}"
+ "${BROTLI_STATIC_LIBRARY_DEC}"
+ "${BROTLI_STATIC_LIBRARY_COMMON}"
+ ${BROTLI_BUILD_BYPRODUCTS}
+ CMAKE_ARGS ${BROTLI_CMAKE_ARGS}
+ STEP_TARGETS headers_copy)
+ endif()
Review Comment:
I'm trying this with `--preset=ninja-debug-emscripten`. I need at least the
following on Debian GNU/Linux sid:
```diff
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index b50f3f1f1..9cd6e6727 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -936,11 +936,15 @@ set(EP_COMMON_TOOLCHAIN
"-DCMAKE_C_COMPILER=${EP_C_COMPILER}"
"-DCMAKE_CXX_COMPILER=${EP_CXX_COMPILER}")
if(CMAKE_AR)
- list(APPEND EP_COMMON_TOOLCHAIN -DCMAKE_AR=${CMAKE_AR})
+ # Ensure using absolute path.
+ find_program(EP_CMAKE_AR ${CMAKE_AR} REQUIRED)
+ list(APPEND EP_COMMON_TOOLCHAIN -DCMAKE_AR=${EP_CMAKE_AR})
endif()
if(CMAKE_RANLIB)
- list(APPEND EP_COMMON_TOOLCHAIN -DCMAKE_RANLIB=${CMAKE_RANLIB})
+ # Ensure using absolute path.
+ find_program(EP_CMAKE_RANLIB ${CMAKE_RANLIB} REQUIRED)
+ list(APPEND EP_COMMON_TOOLCHAIN -DCMAKE_RANLIB=${EM_CMAKE_RANLIB})
endif()
# External projects are still able to override the following declarations.
```
But I still get the following error:
```text
[34/34] Linking C executable brotli.js
FAILED: brotli.js
: && /bin/emcc -Qunused-arguments -sUSE_ZLIB=1 -sSIDE_MODULE=1 -fPIC
-fexceptions -fPIC -g -Werror -O0 -ggdb -Wno-error
CMakeFiles/brotli.dir/c/tools/brotli.c.o -o brotli.js libbrotlienc-static.a
libbrotlidec-static.a libbrotlicommon-static.a && :
emcc: error: output suffix .js requested, but wasm side modules are just
wasm files; emitting only a .wasm, no .js [-Wemcc] [-Werror]
ninja: build stopped: subcommand failed.
```
Do you know how to solve this?
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1309,6 +1333,14 @@ macro(build_snappy)
${EP_COMMON_CMAKE_ARGS} -DSNAPPY_BUILD_TESTS=OFF
-DSNAPPY_BUILD_BENCHMARKS=OFF
"-DCMAKE_INSTALL_PREFIX=${SNAPPY_PREFIX}")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+ # ignore linker flag errors, as snappy sets
+ # -Werror -Wall, and emscripten doesn't support -soname
+ set(SNAPPY_CMAKE_ARGS
+ ${SNAPPY_CMAKE_ARGS}
Review Comment:
```suggestion
list(APPEND SNAPPY_CMAKE_ARGS
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -1614,6 +1619,9 @@ macro(build_thrift)
if(DEFINED BOOST_ROOT)
list(APPEND THRIFT_CMAKE_ARGS "-DBOOST_ROOT=${BOOST_ROOT}")
endif()
+ if(DEFINED Boost_INCLUDE_DIR)
+ list(APPEND THRIFT_CMAKE_ARGS "-DBoost_INCLUDE_DIR=${Boost_INCLUDE_DIR}")
Review Comment:
Could you also check this?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]