Skip to content

Commit 4c94d19

Browse files
committed
fix(ci): reenable gcc-14 by turning off modules
1 parent b52d9a3 commit 4c94d19

File tree

9 files changed

+185
-197
lines changed

9 files changed

+185
-197
lines changed

.github/workflows/linux.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ name: Linux
33
on: [push, pull_request]
44

55
jobs:
6-
clang-18:
6+
Linux:
77
strategy:
88
fail-fast: false
99
matrix:
10+
compiler: [gcc-14, clang-18]
1011
config: [debug, release]
1112

1213
runs-on: ubuntu-24.04
@@ -34,10 +35,10 @@ jobs:
3435
run: cmake -E make_directory build
3536

3637
- name: Configure CMake
37-
run: cmake --preset clang-18-${{ matrix.config }} -DCMAKE_TOOLCHAIN_FILE=
38+
run: cmake --preset ${{ matrix.compiler }}-${{ matrix.config }} -DCMAKE_TOOLCHAIN_FILE=
3839

3940
- name: Build
40-
run: cmake --build --preset clang-18-${{ matrix.config }} -j -v
41+
run: cmake --build --preset ${{ matrix.compiler }}-${{ matrix.config }} -j -v
4142

4243
- name: Test
43-
run: ctest --preset clang-18-${{ matrix.config }} --output-on-failure
44+
run: ctest --preset ${{ matrix.compiler }}-${{ matrix.config }} --output-on-failure

CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git")
3333
endif()
3434
endif()
3535

36+
option(GRAPHQL_BUILD_MODULES "Build the C++20 module interface libraries." ON)
3637
option(GRAPHQL_BUILD_SCHEMAGEN "Build the schemagen tool." ON)
3738
option(GRAPHQL_BUILD_CLIENTGEN "Build the clientgen tool." ON)
3839
option(GRAPHQL_BUILD_TESTS "Build the tests and sample schema library." ON)
@@ -102,11 +103,6 @@ else()
102103
add_compile_options(-Wall -Wextra -pedantic -Werror)
103104
endif()
104105

105-
# Workaround name mangling compatibility in GCC.
106-
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
107-
add_compile_options(-fabi-compat-version=19)
108-
endif()
109-
110106
function(add_bigobj_flag target)
111107
if(MSVC)
112108
# MSVC requires the /bigobj flag if the number of sections gets too big.

CMakePresets.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
},
3333
"cacheVariables": {
3434
"CMAKE_C_COMPILER": "/usr/bin/gcc-14",
35-
"CMAKE_CXX_COMPILER": "/usr/bin/g++-14"
35+
"CMAKE_CXX_COMPILER": "/usr/bin/g++-14",
36+
"GRAPHQL_BUILD_MODULES": false
3637
}
3738
},
3839
{

cmake/cppgraphqlgen-functions.cmake

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -44,24 +44,21 @@ function(add_graphql_schema_target SCHEMA_TARGET)
4444

4545
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_TARGET}_schema_files)
4646
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_TARGET}_schema_files SCHEMA_FILES)
47-
file(GLOB SCHEMA_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
48-
file(GLOB SCHEMA_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/*.ixx)
4947
add_library(${SCHEMA_TARGET}_schema STATIC ${SCHEMA_FILES})
5048
add_dependencies(${SCHEMA_TARGET}_schema ${SCHEMA_TARGET}_update_schema)
5149
target_compile_features(${SCHEMA_TARGET}_schema PUBLIC cxx_std_20)
5250
target_include_directories(${SCHEMA_TARGET}_schema PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
5351
target_link_libraries(${SCHEMA_TARGET}_schema PUBLIC cppgraphqlgen::graphqlservice)
54-
target_sources(${SCHEMA_TARGET}_schema
55-
PUBLIC FILE_SET HEADERS
56-
BASE_DIRS
57-
${CMAKE_CURRENT_SOURCE_DIR}
58-
FILES
59-
${SCHEMA_HEADERS}
60-
PUBLIC FILE_SET CXX_MODULES
61-
BASE_DIRS
62-
${CMAKE_CURRENT_SOURCE_DIR}
63-
FILES
64-
${SCHEMA_MODULES})
52+
file(GLOB SCHEMA_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
53+
target_sources(${SCHEMA_TARGET}_schema PUBLIC FILE_SET HEADERS
54+
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
55+
FILES ${SCHEMA_HEADERS})
56+
if(GRAPHQL_BUILD_MODULES)
57+
file(GLOB SCHEMA_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/*.ixx)
58+
target_sources(${SCHEMA_TARGET}_schema PUBLIC FILE_SET CXX_MODULES
59+
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
60+
FILES ${SCHEMA_MODULES})
61+
endif()
6562
endif()
6663
endfunction()
6764

@@ -100,23 +97,20 @@ function(add_graphql_client_target CLIENT_TARGET)
10097

10198
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${CLIENT_TARGET}_client_files)
10299
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/${CLIENT_TARGET}_client_files CLIENT_FILES)
103-
file(GLOB CLIENT_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
104-
file(GLOB CLIENT_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/*.ixx)
105100
add_library(${CLIENT_TARGET}_client STATIC ${CLIENT_FILES})
106101
add_dependencies(${CLIENT_TARGET}_client ${CLIENT_TARGET}_update_client)
107102
target_compile_features(${CLIENT_TARGET}_client PUBLIC cxx_std_20)
108103
target_include_directories(${CLIENT_TARGET}_client PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
109104
target_link_libraries(${CLIENT_TARGET}_client PUBLIC cppgraphqlgen::graphqlclient)
110-
target_sources(${CLIENT_TARGET}_client
111-
PUBLIC FILE_SET HEADERS
112-
BASE_DIRS
113-
${CMAKE_CURRENT_SOURCE_DIR}
114-
FILES
115-
${CLIENT_HEADERS}
116-
PUBLIC FILE_SET CXX_MODULES
117-
BASE_DIRS
118-
${CMAKE_CURRENT_SOURCE_DIR}
119-
FILES
120-
${CLIENT_MODULES})
105+
file(GLOB CLIENT_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
106+
target_sources(${CLIENT_TARGET}_client PUBLIC FILE_SET HEADERS
107+
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
108+
FILES ${CLIENT_HEADERS})
109+
if(GRAPHQL_BUILD_MODULES)
110+
file(GLOB CLIENT_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/*.ixx)
111+
target_sources(${CLIENT_TARGET}_client PUBLIC FILE_SET CXX_MODULES
112+
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
113+
FILES ${CLIENT_MODULES})
114+
endif()
121115
endif()
122116
endfunction()

samples/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ cmake_minimum_required(VERSION 3.28)
55

66
add_subdirectory(client)
77
add_subdirectory(learn)
8-
add_subdirectory(today)
98
add_subdirectory(validation)
109

10+
if(GRAPHQL_BUILD_MODULES)
11+
add_subdirectory(today)
12+
endif()
13+
1114
if(GRAPHQL_BUILD_HTTP_SAMPLE)
1215
find_package(boost_beast CONFIG QUIET)
1316
if(Boost_FOUND)

samples/client/CMakeLists.txt

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,32 @@ add_subdirectory(multiple)
1111

1212
add_subdirectory(benchmark)
1313

14-
# client_benchmark
15-
add_executable(client_benchmark benchmark.cpp)
16-
target_link_libraries(client_benchmark PRIVATE
17-
todaygraphql
18-
benchmark_client)
14+
if(GRAPHQL_BUILD_MODULES)
15+
# client_benchmark
16+
add_executable(client_benchmark benchmark.cpp)
17+
target_link_libraries(client_benchmark PRIVATE
18+
todaygraphql
19+
benchmark_client)
1920

20-
if(WIN32 AND BUILD_SHARED_LIBS)
21-
add_custom_command(OUTPUT copied_sample_dlls
22-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
23-
$<TARGET_FILE:graphqlservice>
24-
$<TARGET_FILE:graphqljson>
25-
$<TARGET_FILE:graphqlpeg>
26-
$<TARGET_FILE:graphqlresponse>
27-
$<TARGET_FILE:graphqlclient>
28-
${CMAKE_CURRENT_BINARY_DIR}
29-
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/copied_sample_dlls
30-
DEPENDS
31-
graphqlservice
32-
graphqljson
33-
graphqlpeg
34-
graphqlresponse
35-
graphqlclient)
21+
if(WIN32 AND BUILD_SHARED_LIBS)
22+
add_custom_command(OUTPUT copied_sample_dlls
23+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
24+
$<TARGET_FILE:graphqlservice>
25+
$<TARGET_FILE:graphqljson>
26+
$<TARGET_FILE:graphqlpeg>
27+
$<TARGET_FILE:graphqlresponse>
28+
$<TARGET_FILE:graphqlclient>
29+
${CMAKE_CURRENT_BINARY_DIR}
30+
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/copied_sample_dlls
31+
DEPENDS
32+
graphqlservice
33+
graphqljson
34+
graphqlpeg
35+
graphqlresponse
36+
graphqlclient)
3637

37-
add_custom_target(copy_client_sample_dlls DEPENDS copied_sample_dlls)
38+
add_custom_target(copy_client_sample_dlls DEPENDS copied_sample_dlls)
3839

39-
add_dependencies(client_benchmark copy_client_sample_dlls)
40+
add_dependencies(client_benchmark copy_client_sample_dlls)
41+
endif()
4042
endif()

samples/today/CMakeLists.txt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,28 @@ add_subdirectory(schema)
88
add_library(todaygraphql STATIC TodayMock.cpp)
99
target_compile_features(todaygraphql PUBLIC cxx_std_20)
1010
target_link_libraries(todaygraphql PUBLIC today_schema)
11-
target_sources(todaygraphql
12-
PUBLIC FILE_SET HEADERS
13-
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
14-
FILES ${CMAKE_CURRENT_SOURCE_DIR}/TodayMock.h
15-
PUBLIC FILE_SET CXX_MODULES
11+
target_sources(todaygraphql PUBLIC FILE_SET HEADERS
12+
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
13+
FILES ${CMAKE_CURRENT_SOURCE_DIR}/TodayMock.h)
14+
if(GRAPHQL_BUILD_MODULES)
15+
target_sources(todaygraphql PUBLIC FILE_SET CXX_MODULES
1616
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
1717
FILES ${CMAKE_CURRENT_SOURCE_DIR}/TodayMock.ixx)
18+
endif()
1819

1920
# todaygraphql_nointrospection
2021
add_subdirectory(nointrospection)
2122
add_library(todaygraphql_nointrospection STATIC TodayMock.cpp)
2223
target_compile_features(todaygraphql_nointrospection PUBLIC cxx_std_20)
2324
target_link_libraries(todaygraphql_nointrospection PUBLIC today_nointrospection_schema)
24-
target_sources(todaygraphql_nointrospection
25-
PUBLIC FILE_SET HEADERS
26-
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
27-
FILES ${CMAKE_CURRENT_SOURCE_DIR}/TodayMock.h
28-
PUBLIC FILE_SET CXX_MODULES
25+
target_sources(todaygraphql_nointrospection PUBLIC FILE_SET HEADERS
26+
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
27+
FILES ${CMAKE_CURRENT_SOURCE_DIR}/TodayMock.h)
28+
if(GRAPHQL_BUILD_MODULES)
29+
target_sources(todaygraphql_nointrospection PUBLIC FILE_SET CXX_MODULES
2930
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
3031
FILES ${CMAKE_CURRENT_SOURCE_DIR}/TodayMock.ixx)
32+
endif()
3133

3234
if(MSVC)
3335
# warning C4702: unreachable code

0 commit comments

Comments
 (0)