Skip to content

Commit a351dbf

Browse files
committed
fix(CI): Enable CI run success on Mac OS, change C++ standard based on Apache-Arrow version
1 parent 95ac39b commit a351dbf

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ jobs:
201201
run: |
202202
brew bundle --file=cpp/Brewfile
203203
git clone https://github.com/apache/incubator-graphar-testing.git $GAR_TEST_DATA --depth 1
204+
brew list --versions
204205
205206
- name: Build GraphAr
206207
working-directory: "cpp"

cpp/CMakeLists.txt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,13 @@ if(NOT (CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache") AND NOT (CMAKE_C_COMPILER_
104104
endif(ccache_EXECUTABLE)
105105
endif()
106106

107+
set(GAR_CXX_STANDARD 17)
108+
107109
if(MSVC)
108110
# Avoid GCC/Clang-specific flags on MSVC.
109111
# C++17 is already enforced via CMAKE_CXX_STANDARD/target features.
110112
else()
111-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Werror=unused-variable")
113+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror=unused-variable")
112114
endif()
113115

114116
if (APPLE)
@@ -147,7 +149,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
147149
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
148150
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
149151
add_library(${PROJECT_NAME} INTERFACE)
150-
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17)
151152
target_include_directories(
152153
${PROJECT_NAME}
153154
INTERFACE
@@ -295,7 +296,7 @@ macro(build_graphar)
295296
add_library(graphar SHARED ${CORE_SRC_FILES})
296297
endif()
297298
install_graphar_target(graphar)
298-
target_compile_features(graphar PRIVATE cxx_std_17)
299+
target_compile_features(graphar PRIVATE cxx_std_${GAR_CXX_STANDARD})
299300
target_include_directories(graphar PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty)
300301
target_link_libraries(graphar PRIVATE ${CMAKE_DL_LIBS})
301302

@@ -352,7 +353,7 @@ macro(build_graphar_with_arrow_bundled)
352353
add_library(graphar SHARED ${CORE_SRC_FILES})
353354
endif()
354355
install_graphar_target(graphar)
355-
target_compile_features(graphar PRIVATE cxx_std_17)
356+
target_compile_features(graphar PRIVATE cxx_std_${GAR_CXX_STANDARD})
356357
target_include_directories(graphar PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty)
357358
target_include_directories(graphar SYSTEM BEFORE PRIVATE ${GAR_ARROW_INCLUDE_DIR})
358359
target_link_libraries(graphar PRIVATE ${CMAKE_DL_LIBS})
@@ -426,7 +427,13 @@ if (BUILD_ARROW_FROM_SOURCE)
426427
endif()
427428
endif()
428429
find_package(CURL REQUIRED)
429-
430+
if(DEFINED ENV{GRAPHAR_ARROW_VERSION})
431+
if ($ENV{GRAPHAR_ARROW_VERSION} VERSION_GREATER_EQUAL "23.0.0")
432+
set(GAR_CXX_STANDARD 20)
433+
endif()
434+
else()
435+
set(GAR_CXX_STANDARD 20) # Default Arrow version is 23.0.0 need C++20
436+
endif()
430437
include(apache-arrow)
431438
build_arrow()
432439
add_definitions(-DARROW_ORC) # Add macro, otherwise inconsistent in build phase with not from source.
@@ -460,9 +467,17 @@ else()
460467
message(FATAL_ERROR "parquet is required, please install it and retry")
461468
endif()
462469

470+
# Update C++ standard based on detected system Arrow version
471+
if (Arrow_VERSION VERSION_GREATER_EQUAL "23.0.0")
472+
set(GAR_CXX_STANDARD 20)
473+
message(STATUS "Arrow ${Arrow_VERSION} detected")
474+
endif()
475+
463476
build_graphar()
464477
endif()
465478

479+
message(STATUS "[graphar] using C++ standard: ${GAR_CXX_STANDARD}")
480+
466481
# ------------------------------------------------------------------------------
467482
# build examples
468483
# ------------------------------------------------------------------------------
@@ -564,7 +579,7 @@ if (BUILD_TESTS)
564579
set(multiValueArgs SRCS)
565580
cmake_parse_arguments(add_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
566581
add_executable(${target} ${add_test_SRCS})
567-
target_compile_features(${target} PRIVATE cxx_std_17)
582+
target_compile_features(${target} PRIVATE cxx_std_${GAR_CXX_STANDARD})
568583
target_include_directories(${target} PRIVATE ${PROJECT_SOURCE_DIR}/thirdparty)
569584
target_link_libraries(${target} PRIVATE Catch2::Catch2WithMain graphar ${CMAKE_DL_LIBS})
570585
if (BUILD_ARROW_FROM_SOURCE)
@@ -630,7 +645,7 @@ if (BUILD_BENCHMARKS)
630645
set(multiValueArgs SRCS)
631646
cmake_parse_arguments(add_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
632647
add_executable(${target} ${add_test_SRCS})
633-
target_compile_features(${target} PRIVATE cxx_std_17)
648+
target_compile_features(${target} PRIVATE cxx_std_${GAR_CXX_STANDARD})
634649
target_include_directories(${target} PRIVATE ${PROJECT_SOURCE_DIR}/thirdparty)
635650
target_link_libraries(${target} PRIVATE benchmark::benchmark_main graphar ${CMAKE_DL_LIBS})
636651
if (BUILD_ARROW_FROM_SOURCE)

0 commit comments

Comments
 (0)