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()