Skip to content

Commit 9313634

Browse files
authored
Merge pull request #190 from wravery/v3.x
Backport compatible changes from v4.0.0 to v3.7.0
2 parents 615f800 + 98afa30 commit 9313634

File tree

179 files changed

+1534
-1073
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+1534
-1073
lines changed

PEGTL

Submodule PEGTL updated 98 files

cmake/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,10 @@ install(FILES
1111
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-config.cmake
1212
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
1313
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR}/${PROJECT_NAME})
14+
15+
install(FILES
16+
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-functions.cmake
17+
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-update-schema-files.cmake
18+
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-update-client-files.cmake
19+
CONFIGURATIONS ${GRAPHQL_INSTALL_CONFIGURATIONS}
20+
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR}/${PROJECT_NAME})

cmake/ClientGen.rc.in renamed to cmake/Generator.rc.in

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
#include <winver.h>
55

6-
#define CLIENTGEN_RC_VERSION @CLIENTGEN_RC_VERSION@
7-
#define CLIENTGEN_RC_VERSION_STR "@CLIENTGEN_RC_VERSION_STR@"
6+
#define GRAPHQL_RC_VERSION @GRAPHQL_RC_VERSION@
7+
#define GRAPHQL_RC_VERSION_STR "@GRAPHQL_RC_VERSION_STR@"
88

99
#ifndef DEBUG
1010
#define VER_DEBUG 0
@@ -13,8 +13,8 @@
1313
#endif
1414

1515
VS_VERSION_INFO VERSIONINFO
16-
FILEVERSION CLIENTGEN_RC_VERSION
17-
PRODUCTVERSION CLIENTGEN_RC_VERSION
16+
FILEVERSION GRAPHQL_RC_VERSION
17+
PRODUCTVERSION GRAPHQL_RC_VERSION
1818
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
1919
FILEFLAGS VER_DEBUG
2020
FILEOS VOS__WINDOWS32
@@ -27,12 +27,12 @@ BEGIN
2727
BEGIN
2828
VALUE "CompanyName", "Microsoft Corporation"
2929
VALUE "FileDescription", "Code generator for https://github.com/microsoft/cppgraphqlgen"
30-
VALUE "FileVersion", CLIENTGEN_RC_VERSION_STR
31-
VALUE "InternalName", "clientgen"
30+
VALUE "FileVersion", GRAPHQL_RC_VERSION_STR
31+
VALUE "InternalName", "@GRAPHQL_RC_FILENAME@"
3232
VALUE "LegalCopyright", "Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License."
33-
VALUE "OriginalFilename", "clientgen.exe"
33+
VALUE "OriginalFilename", "@GRAPHQL_RC_FILENAME@.exe"
3434
VALUE "ProductName", "CppGraphQLGen"
35-
VALUE "ProductVersion", CLIENTGEN_RC_VERSION_STR
35+
VALUE "ProductVersion", GRAPHQL_RC_VERSION_STR
3636
END
3737
END
3838

File renamed without changes.

cmake/SchemaGen.rc.in

Lines changed: 0 additions & 43 deletions
This file was deleted.

cmake/cppgraphqlgen-config.cmake

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
cppgraphqlgen
66
-------------
77
8-
The following import targets are created
8+
The following import targets are created:
99
1010
::
1111
@@ -15,8 +15,20 @@ The following import targets are created
1515
cppgraphqlgen::graphqlintrospection
1616
cppgraphqlgen::graphqljson
1717
cppgraphqlgen::schemagen
18+
cppgraphqlgen::clientgen
19+
20+
The following functions are defined to help with code generation and build targets:
21+
22+
::
23+
24+
update_graphql_schema_files
25+
add_graphql_schema_target
26+
add_graphql_schema_no_introspection_target
27+
update_graphql_client_files
28+
add_graphql_client_target
1829
#]=======================================================================]
1930

2031
include(CMakeFindDependencyMacro)
2132
find_package(Threads REQUIRED)
2233
include("${CMAKE_CURRENT_LIST_DIR}/cppgraphqlgen-targets.cmake")
34+
include("${CMAKE_CURRENT_LIST_DIR}/cppgraphqlgen-functions.cmake")

cmake/cppgraphqlgen-functions.cmake

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
4+
get_filename_component(GRAPHQL_UPDATE_SCHEMA_FILES_SCRIPT
5+
"${CMAKE_CURRENT_LIST_DIR}/cppgraphqlgen-update-schema-files.cmake"
6+
ABSOLUTE)
7+
8+
get_filename_component(GRAPHQL_UPDATE_CLIENT_FILES_SCRIPT
9+
"${CMAKE_CURRENT_LIST_DIR}/cppgraphqlgen-update-client-files.cmake"
10+
ABSOLUTE)
11+
12+
function(update_graphql_schema_files SCHEMA_TARGET SCHEMA_GRAPHQL SCHEMA_PREFIX SCHEMA_NAMESPACE)
13+
set_property(DIRECTORY APPEND
14+
PROPERTY CMAKE_CONFIGURE_DEPENDS ${SCHEMA_TARGET}_schema_files)
15+
16+
# Collect optional arguments
17+
set(ADDITIONAL_SCHEMAGEN_ARGS "")
18+
if(ARGC GREATER 4)
19+
math(EXPR LAST_ARG "${ARGC} - 1")
20+
foreach(ARGN RANGE 4 ${LAST_ARG})
21+
set(NEXT_ARG "${ARGV${ARGN}}")
22+
list(APPEND ADDITIONAL_SCHEMAGEN_ARGS "${NEXT_ARG}")
23+
endforeach()
24+
endif()
25+
26+
add_custom_command(
27+
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_TARGET}_schema_files
28+
COMMAND
29+
${CMAKE_COMMAND} "-DSCHEMA_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
30+
"-DSCHEMA_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}"
31+
"-DSCHEMAGEN_PROGRAM=$<TARGET_FILE:cppgraphqlgen::schemagen>"
32+
"-DSCHEMA_TARGET=${SCHEMA_TARGET}" "-DSCHEMA_GRAPHQL=${SCHEMA_GRAPHQL}"
33+
"-DSCHEMA_PREFIX=${SCHEMA_PREFIX}" "-DSCHEMA_NAMESPACE=${SCHEMA_NAMESPACE}"
34+
"-DADDITIONAL_SCHEMAGEN_ARGS=${ADDITIONAL_SCHEMAGEN_ARGS}"
35+
-P ${GRAPHQL_UPDATE_SCHEMA_FILES_SCRIPT}
36+
DEPENDS ${SCHEMA_GRAPHQL} ${GRAPHQL_UPDATE_SCHEMA_FILES_SCRIPT} cppgraphqlgen::schemagen
37+
COMMENT "Generating ${SCHEMA_TARGET} GraphQL schema"
38+
VERBATIM)
39+
endfunction()
40+
41+
function(add_graphql_schema_target SCHEMA_TARGET)
42+
add_custom_target(${SCHEMA_TARGET}_update_schema ALL
43+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_TARGET}_schema_files)
44+
45+
file(STRINGS ${SCHEMA_TARGET}_schema_files SCHEMA_FILES)
46+
add_library(${SCHEMA_TARGET}_schema STATIC ${SCHEMA_FILES})
47+
add_dependencies(${SCHEMA_TARGET}_schema ${SCHEMA_TARGET}_update_schema)
48+
target_include_directories(${SCHEMA_TARGET}_schema PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
49+
target_link_libraries(${SCHEMA_TARGET}_schema PUBLIC cppgraphqlgen::graphqlintrospection)
50+
endfunction()
51+
52+
function(add_graphql_schema_no_introspection_target SCHEMA_NO_INTROSPECTION_TARGET)
53+
add_custom_target(${SCHEMA_NO_INTROSPECTION_TARGET}_update_schema ALL
54+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NO_INTROSPECTION_TARGET}_schema_files)
55+
56+
file(STRINGS ${SCHEMA_NO_INTROSPECTION_TARGET}_schema_files SCHEMA_FILES)
57+
add_library(${SCHEMA_NO_INTROSPECTION_TARGET}_schema STATIC ${SCHEMA_FILES})
58+
add_dependencies(${SCHEMA_NO_INTROSPECTION_TARGET}_schema ${SCHEMA_NO_INTROSPECTION_TARGET}_update_schema)
59+
target_include_directories(${SCHEMA_NO_INTROSPECTION_TARGET}_schema PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
60+
target_link_libraries(${SCHEMA_NO_INTROSPECTION_TARGET}_schema PUBLIC cppgraphqlgen::graphqlservice)
61+
endfunction()
62+
63+
function(update_graphql_client_files CLIENT_TARGET SCHEMA_GRAPHQL REQUEST_GRAPHQL CLIENT_PREFIX CLIENT_NAMESPACE)
64+
set_property(DIRECTORY APPEND
65+
PROPERTY CMAKE_CONFIGURE_DEPENDS ${CLIENT_TARGET}_client_files)
66+
67+
# Collect optional arguments
68+
set(ADDITIONAL_CLIENTGEN_ARGS "")
69+
if(ARGC GREATER 5)
70+
math(EXPR LAST_ARG "${ARGC} - 1")
71+
foreach(ARGN RANGE 5 ${LAST_ARG})
72+
set(NEXT_ARG "${ARGV${ARGN}}")
73+
list(APPEND ADDITIONAL_CLIENTGEN_ARGS "${NEXT_ARG}")
74+
endforeach()
75+
endif()
76+
77+
add_custom_command(
78+
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${CLIENT_TARGET}_client_files
79+
COMMAND
80+
${CMAKE_COMMAND} "-DCLIENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
81+
"-DCLIENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}"
82+
"-DCLIENTGEN_PROGRAM=$<TARGET_FILE:cppgraphqlgen::clientgen>" "-DCLIENT_TARGET=${CLIENT_TARGET}"
83+
"-DSCHEMA_GRAPHQL=${SCHEMA_GRAPHQL}" "-DREQUEST_GRAPHQL=${REQUEST_GRAPHQL}"
84+
"-DCLIENT_PREFIX=${CLIENT_PREFIX}" "-DCLIENT_NAMESPACE=${CLIENT_NAMESPACE}"
85+
"-DADDITIONAL_CLIENTGEN_ARGS=${ADDITIONAL_CLIENTGEN_ARGS}"
86+
-P ${GRAPHQL_UPDATE_CLIENT_FILES_SCRIPT}
87+
DEPENDS ${SCHEMA_GRAPHQL} ${REQUEST_GRAPHQL} ${GRAPHQL_UPDATE_CLIENT_FILES_SCRIPT} cppgraphqlgen::clientgen
88+
COMMENT "Generating ${CLIENT_TARGET} client"
89+
VERBATIM)
90+
endfunction()
91+
92+
function(add_graphql_client_target CLIENT_TARGET)
93+
add_custom_target(${CLIENT_TARGET}_update_client ALL
94+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${CLIENT_TARGET}_client_files)
95+
96+
file(STRINGS ${CLIENT_TARGET}_client_files CLIENT_FILES)
97+
add_library(${CLIENT_TARGET}_client STATIC ${CLIENT_FILES})
98+
add_dependencies(${CLIENT_TARGET}_client ${CLIENT_TARGET}_update_client)
99+
target_include_directories(${CLIENT_TARGET}_client PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
100+
target_link_libraries(${CLIENT_TARGET}_client PUBLIC cppgraphqlgen::graphqlclient)
101+
endfunction()
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
4+
# Normalize the filesystem paths
5+
get_filename_component(CLIENT_SOURCE_DIR ${CLIENT_SOURCE_DIR} ABSOLUTE)
6+
get_filename_component(CLIENT_BINARY_DIR ${CLIENT_BINARY_DIR} ABSOLUTE)
7+
get_filename_component(CLIENTGEN_PROGRAM ${CLIENTGEN_PROGRAM} ABSOLUTE)
8+
get_filename_component(SCHEMA_GRAPHQL "${CLIENT_SOURCE_DIR}/${SCHEMA_GRAPHQL}" ABSOLUTE)
9+
get_filename_component(REQUEST_GRAPHQL "${CLIENT_SOURCE_DIR}/${REQUEST_GRAPHQL}" ABSOLUTE)
10+
11+
file(MAKE_DIRECTORY ${CLIENT_BINARY_DIR})
12+
13+
# Cleanup all of the stale files in the binary directory
14+
file(GLOB PREVIOUS_FILES ${CLIENT_BINARY_DIR}/*.h ${CLIENT_BINARY_DIR}/*.cpp
15+
${CLIENT_BINARY_DIR}/${CLIENT_TARGET}_client_files)
16+
foreach(PREVIOUS_FILE ${PREVIOUS_FILES})
17+
file(REMOVE ${PREVIOUS_FILE})
18+
endforeach()
19+
20+
set(CLIENTGEN_ARGS "--schema=${SCHEMA_GRAPHQL}" "--request=${REQUEST_GRAPHQL}" "--prefix=${CLIENT_PREFIX}" "--namespace=${CLIENT_NAMESPACE}")
21+
foreach(CLIENTGEN_ARG ${ADDITIONAL_CLIENTGEN_ARGS})
22+
list(APPEND CLIENTGEN_ARGS ${CLIENTGEN_ARG})
23+
endforeach()
24+
25+
# Regenerate the sources in the binary directory
26+
execute_process(
27+
COMMAND ${CLIENTGEN_PROGRAM} ${CLIENTGEN_ARGS}
28+
OUTPUT_FILE ${CLIENT_TARGET}_client_files
29+
WORKING_DIRECTORY ${CLIENT_BINARY_DIR})
30+
31+
# Get the up-to-date list of files in the binary directory
32+
set(FILE_NAMES "")
33+
file(GLOB NEW_FILES ${CLIENT_BINARY_DIR}/*.h ${CLIENT_BINARY_DIR}/*.cpp)
34+
foreach(NEW_FILE ${NEW_FILES})
35+
get_filename_component(NEW_FILE ${NEW_FILE} NAME)
36+
list(APPEND FILE_NAMES "${NEW_FILE}")
37+
endforeach()
38+
39+
# Don't update the files in the source directory if no files were generated in the binary directory.
40+
if(NOT FILE_NAMES)
41+
message(FATAL_ERROR "Schema generation failed!")
42+
endif()
43+
44+
# Remove stale files in the source directory
45+
cmake_policy(SET CMP0057 NEW)
46+
file(GLOB OLD_FILES ${CLIENT_SOURCE_DIR}/*.h ${CLIENT_SOURCE_DIR}/*.cpp)
47+
foreach(OLD_FILE ${OLD_FILES})
48+
get_filename_component(OLD_FILE ${OLD_FILE} NAME)
49+
if(NOT OLD_FILE IN_LIST FILE_NAMES)
50+
file(REMOVE "${CLIENT_SOURCE_DIR}/${OLD_FILE}")
51+
endif()
52+
endforeach()
53+
54+
# Copy new and modified files from the binary directory to the source directory
55+
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
56+
${CLIENT_BINARY_DIR}/${CLIENT_TARGET}_client_files
57+
${NEW_FILES}
58+
${CLIENT_SOURCE_DIR})
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
4+
# Normalize the filesystem paths
5+
get_filename_component(SCHEMA_SOURCE_DIR ${SCHEMA_SOURCE_DIR} ABSOLUTE)
6+
get_filename_component(SCHEMA_BINARY_DIR ${SCHEMA_BINARY_DIR} ABSOLUTE)
7+
get_filename_component(SCHEMAGEN_PROGRAM ${SCHEMAGEN_PROGRAM} ABSOLUTE)
8+
get_filename_component(SCHEMA_GRAPHQL "${SCHEMA_SOURCE_DIR}/${SCHEMA_GRAPHQL}" ABSOLUTE)
9+
10+
file(MAKE_DIRECTORY ${SCHEMA_BINARY_DIR})
11+
12+
# Cleanup all of the stale files in the binary directory
13+
file(GLOB PREVIOUS_FILES ${SCHEMA_BINARY_DIR}/*.h ${SCHEMA_BINARY_DIR}/*.cpp
14+
${SCHEMA_BINARY_DIR}/${SCHEMA_TARGET}_schema_files)
15+
foreach(PREVIOUS_FILE ${PREVIOUS_FILES})
16+
file(REMOVE ${PREVIOUS_FILE})
17+
endforeach()
18+
19+
set(SCHEMAGEN_ARGS "--schema=${SCHEMA_GRAPHQL}" "--prefix=${SCHEMA_PREFIX}" "--namespace=${SCHEMA_NAMESPACE}")
20+
foreach(SCHEMAGEN_ARG ${ADDITIONAL_SCHEMAGEN_ARGS})
21+
list(APPEND SCHEMAGEN_ARGS ${SCHEMAGEN_ARG})
22+
endforeach()
23+
24+
# Regenerate the sources in the binary directory
25+
execute_process(
26+
COMMAND ${SCHEMAGEN_PROGRAM} ${SCHEMAGEN_ARGS}
27+
OUTPUT_FILE ${SCHEMA_TARGET}_schema_files
28+
WORKING_DIRECTORY ${SCHEMA_BINARY_DIR})
29+
30+
# Get the up-to-date list of files in the binary directory
31+
set(FILE_NAMES "")
32+
file(GLOB NEW_FILES ${SCHEMA_BINARY_DIR}/*.h ${SCHEMA_BINARY_DIR}/*.cpp)
33+
foreach(NEW_FILE ${NEW_FILES})
34+
get_filename_component(NEW_FILE ${NEW_FILE} NAME)
35+
list(APPEND FILE_NAMES "${NEW_FILE}")
36+
endforeach()
37+
38+
# Don't update the files in the source directory if no files were generated in the binary directory.
39+
if(NOT FILE_NAMES)
40+
message(FATAL_ERROR "Schema generation failed!")
41+
endif()
42+
43+
# Remove stale files in the source directory
44+
cmake_policy(SET CMP0057 NEW)
45+
file(GLOB OLD_FILES ${SCHEMA_SOURCE_DIR}/*.h ${SCHEMA_SOURCE_DIR}/*.cpp)
46+
foreach(OLD_FILE ${OLD_FILES})
47+
get_filename_component(OLD_FILE ${OLD_FILE} NAME)
48+
if(NOT OLD_FILE IN_LIST FILE_NAMES)
49+
file(REMOVE "${SCHEMA_SOURCE_DIR}/${OLD_FILE}")
50+
endif()
51+
endforeach()
52+
53+
# Copy new and modified files from the binary directory to the source directory
54+
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
55+
${SCHEMA_BINARY_DIR}/${SCHEMA_TARGET}_schema_files
56+
${NEW_FILES}
57+
${SCHEMA_SOURCE_DIR})

cmake/version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.6.0
1+
3.7.0

0 commit comments

Comments
 (0)