This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new 9106671b36 GH-48980: [C++] Use COMPILE_OPTIONS instead of deprecated 
COMPILE_FLAGS (#48981)
9106671b36 is described below

commit 9106671b36284b77ab44683df9cccc1843374aaf
Author: Hyukjin Kwon <[email protected]>
AuthorDate: Fri Jan 30 17:45:03 2026 +0900

    GH-48980: [C++] Use COMPILE_OPTIONS instead of deprecated COMPILE_FLAGS 
(#48981)
    
    ### Rationale for this change
    
    Arrow requires CMake 3.25 but was still using deprecated `COMPILE_FLAGS` 
property. Recommanded to use `COMPILE_OPTIONS` (introduced in CMake 3.11).
    
    ### What changes are included in this PR?
    
    Replaced `COMPILE_FLAGS` with `COMPILE_OPTIONS` across `CMakeLists.txt` 
files, converted space separated strings to semicolon-separated lists, and 
removed obsolete TODO comments.
    
    ### Are these changes tested?
    
    Yes, through CI build and existing tests.
    
    ### Are there any user-facing changes?
    
    No.
    * GitHub Issue: #48980
    
    Authored-by: Hyukjin Kwon <[email protected]>
    Signed-off-by: Sutou Kouhei <[email protected]>
---
 cpp/cmake_modules/SetupCxxFlags.cmake   | 14 ++++++++------
 cpp/examples/parquet/CMakeLists.txt     |  4 ++--
 cpp/src/arrow/CMakeLists.txt            | 14 ++++++++------
 cpp/src/arrow/flight/sql/CMakeLists.txt |  2 +-
 cpp/src/parquet/CMakeLists.txt          | 19 +++++++------------
 5 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake 
b/cpp/cmake_modules/SetupCxxFlags.cmake
index f4ff0bded3..bbd74284f5 100644
--- a/cpp/cmake_modules/SetupCxxFlags.cmake
+++ b/cpp/cmake_modules/SetupCxxFlags.cmake
@@ -54,26 +54,27 @@ if(ARROW_CPU_FLAG STREQUAL "x86")
     # sets available, but they are not set by MSVC (unlike other compilers).
     # See https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4265
     add_definitions(-D__SSE2__ -D__SSE4_1__ -D__SSE4_2__)
-    set(ARROW_AVX2_FLAG "/arch:AVX2")
+    set(ARROW_AVX2_FLAGS "/arch:AVX2")
     # MSVC has no specific flag for BMI2, it seems to be enabled with AVX2
-    set(ARROW_BMI2_FLAG "/arch:AVX2")
+    set(ARROW_BMI2_FLAGS "/arch:AVX2")
     set(ARROW_AVX512_FLAG "/arch:AVX512")
     set(CXX_SUPPORTS_SSE4_2 TRUE)
   else()
     set(ARROW_SSE4_2_FLAG "-msse4.2")
-    set(ARROW_AVX2_FLAG "-march=haswell")
+    set(ARROW_AVX2_FLAGS "-march=haswell")
     set(ARROW_BMI2_FLAG "-mbmi2")
     # skylake-avx512 consists of AVX512F,AVX512BW,AVX512VL,AVX512CD,AVX512DQ
     set(ARROW_AVX512_FLAG "-march=skylake-avx512")
     # Append the avx2/avx512 subset option also, fix issue ARROW-9877 for 
homebrew-cpp
-    set(ARROW_AVX2_FLAG "${ARROW_AVX2_FLAG} -mavx2")
+    list(APPEND ARROW_AVX2_FLAGS "-mavx2")
     set(ARROW_AVX512_FLAG
         "${ARROW_AVX512_FLAG} -mavx512f -mavx512cd -mavx512vl -mavx512dq 
-mavx512bw")
     check_cxx_compiler_flag(${ARROW_SSE4_2_FLAG} CXX_SUPPORTS_SSE4_2)
   endif()
   if(CMAKE_SIZEOF_VOID_P EQUAL 8)
     # Check for AVX extensions on 64-bit systems only, as 32-bit support seems 
iffy
-    check_cxx_compiler_flag(${ARROW_AVX2_FLAG} CXX_SUPPORTS_AVX2)
+    list(JOIN ARROW_AVX2_FLAGS " " ARROW_AVX2_FLAGS_COMMAND_LINE)
+    check_cxx_compiler_flag("${ARROW_AVX2_FLAGS_COMMAND_LINE}" 
CXX_SUPPORTS_AVX2)
     if(MINGW)
       # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65782
       message(STATUS "Disable AVX512 support on MINGW for now")
@@ -494,7 +495,8 @@ if(ARROW_CPU_FLAG STREQUAL "x86")
     if(NOT CXX_SUPPORTS_AVX2)
       message(FATAL_ERROR "AVX2 required but compiler doesn't support it.")
     endif()
-    set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} ${ARROW_AVX2_FLAG}")
+    list(JOIN ARROW_AVX2_FLAGS " " ARROW_AVX2_FLAGS_COMMAND_LINE)
+    string(APPEND CXX_COMMON_FLAGS " ${ARROW_AVX2_FLAGS_COMMAND_LINE}")
     add_definitions(-DARROW_HAVE_AVX2 -DARROW_HAVE_BMI2 -DARROW_HAVE_SSE4_2)
   elseif(ARROW_SIMD_LEVEL STREQUAL "SSE4_2")
     if(NOT CXX_SUPPORTS_SSE4_2)
diff --git a/cpp/examples/parquet/CMakeLists.txt 
b/cpp/examples/parquet/CMakeLists.txt
index 7dcf6a92bd..b55b4066bc 100644
--- a/cpp/examples/parquet/CMakeLists.txt
+++ b/cpp/examples/parquet/CMakeLists.txt
@@ -43,8 +43,8 @@ endif()
 if(UNIX)
   foreach(FILE ${PARQUET_EXAMPLES_WARNING_SUPPRESSIONS})
     set_property(SOURCE ${FILE}
-                 APPEND_STRING
-                 PROPERTY COMPILE_FLAGS "-Wno-unused-variable")
+                 APPEND
+                 PROPERTY COMPILE_OPTIONS "-Wno-unused-variable")
   endforeach()
 endif()
 
diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
index df9b783d53..d9f04a627b 100644
--- a/cpp/src/arrow/CMakeLists.txt
+++ b/cpp/src/arrow/CMakeLists.txt
@@ -322,22 +322,24 @@ endfunction()
 macro(append_runtime_avx2_src SRCS SRC)
   if(ARROW_HAVE_RUNTIME_AVX2)
     list(APPEND ${SRCS} ${SRC})
-    set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS 
${ARROW_AVX2_FLAG})
+    set_source_files_properties(${SRC} PROPERTIES COMPILE_OPTIONS 
"${ARROW_AVX2_FLAGS}")
   endif()
 endmacro()
 
 macro(append_runtime_avx2_bmi2_src SRCS SRC)
   if(ARROW_HAVE_RUNTIME_AVX2 AND ARROW_HAVE_RUNTIME_BMI2)
     list(APPEND ${SRCS} ${SRC})
-    set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS
-                                                  "${ARROW_AVX2_FLAG} 
${ARROW_BMI2_FLAG}")
+    set_source_files_properties(${SRC}
+                                PROPERTIES COMPILE_OPTIONS
+                                           
"${ARROW_AVX2_FLAGS};${ARROW_BMI2_FLAG}")
   endif()
 endmacro()
 
 macro(append_runtime_avx512_src SRCS SRC)
   if(ARROW_HAVE_RUNTIME_AVX512)
     list(APPEND ${SRCS} ${SRC})
-    set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS 
${ARROW_AVX512_FLAG})
+    separate_arguments(AVX512_FLAG_LIST NATIVE_COMMAND "${ARROW_AVX512_FLAG}")
+    set_source_files_properties(${SRC} PROPERTIES COMPILE_OPTIONS 
"${AVX512_FLAG_LIST}")
   endif()
 endmacro()
 
@@ -912,8 +914,8 @@ if(ARROW_FILESYSTEM)
     # Suppress documentation warnings from google-cloud-cpp headers
     if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang")
       set_source_files_properties(filesystem/gcsfs.cc 
filesystem/gcsfs_internal.cc
-                                  PROPERTIES COMPILE_FLAGS
-                                             "-Wno-documentation 
-Wno-documentation-deprecated-sync"
+                                  PROPERTIES COMPILE_OPTIONS
+                                             
"-Wno-documentation;-Wno-documentation-deprecated-sync"
       )
     endif()
   endif()
diff --git a/cpp/src/arrow/flight/sql/CMakeLists.txt 
b/cpp/src/arrow/flight/sql/CMakeLists.txt
index 9695e0c991..2299bdfe0a 100644
--- a/cpp/src/arrow/flight/sql/CMakeLists.txt
+++ b/cpp/src/arrow/flight/sql/CMakeLists.txt
@@ -95,7 +95,7 @@ endif()
 
 if(MSVC)
   # Suppress warnings caused by Protobuf (casts)
-  set_source_files_properties(protocol_internal.cc PROPERTIES COMPILE_FLAGS 
"/wd4267")
+  set_source_files_properties(protocol_internal.cc PROPERTIES COMPILE_OPTIONS 
"/wd4267")
 endif()
 foreach(LIB_TARGET ${ARROW_FLIGHT_SQL_LIBRARIES})
   target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_FLIGHT_SQL_EXPORTING)
diff --git a/cpp/src/parquet/CMakeLists.txt b/cpp/src/parquet/CMakeLists.txt
index 0bc5dc0647..feeb1805f6 100644
--- a/cpp/src/parquet/CMakeLists.txt
+++ b/cpp/src/parquet/CMakeLists.txt
@@ -144,7 +144,7 @@ 
set_source_files_properties("${PARQUET_THRIFT_SOURCE_DIR}/parquet_types.cpp"
 
 if(NOT MSVC)
   set_source_files_properties(src/parquet/parquet_types.cpp
-                              PROPERTIES COMPILE_FLAGS -Wno-unused-variable)
+                              PROPERTIES COMPILE_OPTIONS -Wno-unused-variable)
 endif()
 
 #
@@ -200,14 +200,12 @@ if(ARROW_HAVE_RUNTIME_AVX2)
   # violation with -DCMAKE_BUILD_TYPE=MinSizeRel. CMAKE_CXX_FLAGS_RELEASE
   # will force inlining as much as possible.
   # See also: ARROW-15664 and ARROW-15678
-  #
-  # TODO: Use COMPILE_OPTIONS instead of COMPILE_FLAGS when we require
-  # CMake 3.11 or later.
-  set(AVX2_FLAGS "${ARROW_AVX2_FLAG}")
+  set(AVX2_FLAGS ${ARROW_AVX2_FLAGS})
   if(NOT MSVC)
-    string(APPEND AVX2_FLAGS " ${CMAKE_CXX_FLAGS_RELEASE}")
+    separate_arguments(RELEASE_FLAGS NATIVE_COMMAND 
"${CMAKE_CXX_FLAGS_RELEASE}")
+    list(APPEND AVX2_FLAGS ${RELEASE_FLAGS})
   endif()
-  set_source_files_properties(level_comparison_avx2.cc PROPERTIES COMPILE_FLAGS
+  set_source_files_properties(level_comparison_avx2.cc PROPERTIES 
COMPILE_OPTIONS
                                                                   
"${AVX2_FLAGS}")
   # WARNING: DO NOT BLINDLY COPY THIS CODE FOR OTHER BMI2 USE CASES.
   # This code is always guarded by runtime dispatch which verifies
@@ -218,14 +216,11 @@ if(ARROW_HAVE_RUNTIME_AVX2)
   # violation with -DCMAKE_BUILD_TYPE=MinSizeRel. CMAKE_CXX_FLAGS_RELEASE
   # will force inlining as much as possible.
   # See also: ARROW-15664 and ARROW-15678
-  #
-  # TODO: Use COMPILE_OPTIONS instead of COMPILE_FLAGS when we require
-  # CMake 3.11 or later.
   if(ARROW_HAVE_RUNTIME_BMI2)
     # Need to pass ARROW_HAVE_BMI2 for level_conversion_inc.h to compile
     # the BMI2 path.
-    set(BMI2_FLAGS "${AVX2_FLAGS} ${ARROW_BMI2_FLAG} -DARROW_HAVE_BMI2")
-    set_source_files_properties(level_conversion_bmi2.cc PROPERTIES 
COMPILE_FLAGS
+    set(BMI2_FLAGS ${AVX2_FLAGS} ${ARROW_BMI2_FLAG} -DARROW_HAVE_BMI2)
+    set_source_files_properties(level_conversion_bmi2.cc PROPERTIES 
COMPILE_OPTIONS
                                                                     
"${BMI2_FLAGS}")
   endif()
 endif()

Reply via email to