kou opened a new issue, #36150:
URL: https://github.com/apache/arrow/issues/36150

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   Other conditional build component that use `add_definition()` in 
`CMakeLists.txt` like `ARROW_WITH_LZ4=ON` don't work too:
   
   ```text
   [1173/1187] Building CXX object 
src/skyhook/CMakeFiles/skyhook-cls-test.dir/cls/cls_skyhook_test.cc.o
   FAILED: 
src/skyhook/CMakeFiles/skyhook-cls-test.dir/cls/cls_skyhook_test.cc.o 
   /bin/ccache /bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_HAVE_RUNTIME_AVX2 
-DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 
-DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_MIMALLOC 
-DARROW_WITH_RE2 -DARROW_WITH_TIMING_TESTS -DARROW_WITH_UTF8PROC 
-DBOOST_ALL_NO_LIB -I/home/kou/work/cpp/arrow.kou/cpp.build/src 
-I/home/kou/work/cpp/arrow.kou/cpp/src 
-I/home/kou/work/cpp/arrow.kou/cpp/src/generated -isystem 
/home/kou/work/cpp/arrow.kou/cpp/thirdparty/flatbuffers/include -isystem 
/home/kou/work/cpp/arrow.kou/cpp/thirdparty/hadoop/include -isystem 
/home/kou/work/cpp/arrow.kou/cpp.build/google_cloud_cpp_ep-install/include 
-isystem /home/kou/work/cpp/arrow.kou/cpp.build/crc32c_ep-install/include 
-isystem /home/kou/work/cpp/arrow.kou/cpp.build/orc_ep-install/include -isystem 
/home/kou/work/cpp/arrow.kou/cpp.build/awssdk_ep-install/include -isystem 
/home/kou/work/cpp/arrow.kou/cpp.build/xsimd_ep/src/xsimd_ep-install/include 
-isystem /home/kou/work/cpp/arrow.kou/cpp.build/jemall
 oc_ep-prefix/src -isystem 
/home/kou/work/cpp/arrow.kou/cpp.build/mimalloc_ep/src/mimalloc_ep/include/mimalloc-2.0
 -Wno-noexcept-type  -fdiagnostics-color=always  -Wall -Wno-conversion 
-Wno-sign-conversion -Wunused-result -Wdate-time -fno-semantic-interposition 
-msse4.2  -g -Werror -O0 -ggdb -fPIE -DGTEST_HAS_PTHREAD=1 -std=c++17 
-Winvalid-pch -include 
/home/kou/work/cpp/arrow.kou/cpp.build/src/arrow/CMakeFiles/arrow-array-test.dir/cmake_pch.hxx
 -MD -MT src/skyhook/CMakeFiles/skyhook-cls-test.dir/cls/cls_skyhook_test.cc.o 
-MF src/skyhook/CMakeFiles/skyhook-cls-test.dir/cls/cls_skyhook_test.cc.o.d -o 
src/skyhook/CMakeFiles/skyhook-cls-test.dir/cls/cls_skyhook_test.cc.o -c 
/home/kou/work/cpp/arrow.kou/cpp/src/skyhook/cls/cls_skyhook_test.cc
   cc1plus: error: 
/home/kou/work/cpp/arrow.kou/cpp.build/src/arrow/CMakeFiles/arrow-array-test.dir/cmake_pch.hxx.gch:
 not used because `ARROW_WITH_LZ4' not defined [-Werror=invalid-pch]
   cc1plus: all warnings being treated as errors
   ```
   
   Because `ARROW_HDFS`/`ARROW_WITH_LZ4`/... may be defined or not.
   
   We should use `cpp/src/arrow/util/config.h.cmake` instead of 
`add_definitions()`:
   
   ```diff
   diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
   index 00cf89934..be4fab030 100644
   --- a/cpp/src/arrow/CMakeLists.txt
   +++ b/cpp/src/arrow/CMakeLists.txt
   @@ -468,10 +468,6 @@ if(ARROW_COMPUTE)
    endif()
    
    if(ARROW_FILESYSTEM)
   -  if(ARROW_HDFS)
   -    add_definitions(-DARROW_HDFS)
   -  endif()
   -
      list(APPEND
           ARROW_SRCS
           filesystem/filesystem.cc
   diff --git a/cpp/src/arrow/util/config.h.cmake 
b/cpp/src/arrow/util/config.h.cmake
   index f6fad2016..ec95ddf55 100644
   --- a/cpp/src/arrow/util/config.h.cmake
   +++ b/cpp/src/arrow/util/config.h.cmake
   @@ -43,6 +43,7 @@
    #cmakedefine ARROW_FILESYSTEM
    #cmakedefine ARROW_FLIGHT
    #cmakedefine ARROW_FLIGHT_SQL
   +#cmakedefine ARROW_HDFS
    #cmakedefine ARROW_IPC
    #cmakedefine ARROW_JEMALLOC
    #cmakedefine ARROW_JEMALLOC_VENDORED
   ```
   
   ### Component(s)
   
   C++


-- 
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]

Reply via email to