aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/graphqlparser/CONTROL3
-rw-r--r--ports/graphqlparser/portfile.cmake51
-rw-r--r--ports/graphqlparser/win-cmake.patch104
3 files changed, 158 insertions, 0 deletions
diff --git a/ports/graphqlparser/CONTROL b/ports/graphqlparser/CONTROL
new file mode 100644
index 000000000..4a66842c0
--- /dev/null
+++ b/ports/graphqlparser/CONTROL
@@ -0,0 +1,3 @@
+Source: graphqlparser
+Version: v0.7.0
+Description: A GraphQL query parser in C++ with C and C++ APIs
diff --git a/ports/graphqlparser/portfile.cmake b/ports/graphqlparser/portfile.cmake
new file mode 100644
index 000000000..0e1414583
--- /dev/null
+++ b/ports/graphqlparser/portfile.cmake
@@ -0,0 +1,51 @@
+# Common Ambient Variables:
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
+# PORT = current port name (zlib, etc)
+# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
+# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
+# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
+#
+
+include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO graphql/libgraphqlparser
+ REF v0.7.0
+ SHA512 973292b164d0d2cfe453a2f01559dbdb1b9d22b6304f6a3aabf71e2c0a3e24ab69dfd72a086764ad5befecf0005620f8e86f552dacc324f9615a05f31de7cede
+ HEAD_REF master
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/win-cmake.patch
+)
+
+if(UNIX)
+ vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ )
+elseif(WIN32)
+ vcpkg_find_acquire_program(PYTHON2)
+ vcpkg_find_acquire_program(FLEX)
+ vcpkg_find_acquire_program(BISON)
+
+ get_filename_component(VCPKG_DOWNLOADS_PYTHON2_DIR "${PYTHON2}" DIRECTORY)
+ get_filename_component(VCPKG_DOWNLOADS_FLEX_DIR "${FLEX}" DIRECTORY)
+ get_filename_component(VCPKG_DOWNLOADS_BISON_DIR "${BISON}" DIRECTORY)
+
+ vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DVCPKG_DOWNLOADS_PYTHON2_DIR=${VCPKG_DOWNLOADS_PYTHON2_DIR}
+ -DVCPKG_DOWNLOADS_FLEX_DIR=${VCPKG_DOWNLOADS_FLEX_DIR}
+ -DVCPKG_DOWNLOADS_BISON_DIR=${VCPKG_DOWNLOADS_BISON_DIR}
+ )
+endif()
+
+vcpkg_install_cmake()
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/graphqlparser RENAME copyright)
diff --git a/ports/graphqlparser/win-cmake.patch b/ports/graphqlparser/win-cmake.patch
new file mode 100644
index 000000000..c71ba97ff
--- /dev/null
+++ b/ports/graphqlparser/win-cmake.patch
@@ -0,0 +1,104 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c4c8b3e..f19cda3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3,16 +3,37 @@ PROJECT(libgraphqlparser C CXX)
+
+ SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
+
+-INCLUDE(version)
++IF(UNIX)
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
++ SET(FLEX_COMPILE_FLAGS "--header-file=lexer.h")
++ELSEIF(WIN32)
++ # If we're building this with vcpkg on Windows, let portfile.cmake tell us where it
++ # stored these tools. Otherwise these variables should be empty and we'll fall back
++ # to the normal CMake FIND_PACKAGE logic for each of these programs.
++ SET(CMAKE_PROGRAM_PATH
++ "${VCPKG_DOWNLOADS_PYTHON2_DIR}"
++ "${VCPKG_DOWNLOADS_FLEX_DIR}"
++ "${VCPKG_DOWNLOADS_BISON_DIR}"
++ "${CMAKE_PROGRAM_PATH}")
++
++ SET(FLEX_COMPILE_FLAGS "--header-file=lexer.h --wincompat")
++
++ # Let CMake figure out the exports for the SHARED library (DLL) on Windows.
++ SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
++ENDIF()
+
+-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
++INCLUDE(version)
+
+ FIND_PACKAGE(PythonInterp 2 REQUIRED)
+ IF (NOT PYTHON_VERSION_MAJOR EQUAL 2)
+ MESSAGE(FATAL_ERROR "Python 2 is required.")
+ ENDIF()
+
+-FIND_PROGRAM(CTYPESGEN_FOUND ctypesgen.py)
++IF(UNIX)
++ SET(FLEX_COMPILE_FLAGS "--header-file=lexer.h")
++ELSEIF(WIN32)
++ SET(FLEX_COMPILE_FLAGS "--header-file=lexer.h --wincompat")
++ENDIF()
+
+ FIND_PACKAGE(BISON 3)
+ FIND_PACKAGE(FLEX)
+@@ -21,7 +42,7 @@ IF (BISON_FOUND)
+ ENDIF()
+
+ IF(FLEX_FOUND)
+- FLEX_TARGET(GraphQLScanner lexer.lpp ${CMAKE_CURRENT_SOURCE_DIR}/lexer.cpp COMPILE_FLAGS "--header-file=lexer.h")
++ FLEX_TARGET(GraphQLScanner lexer.lpp ${CMAKE_CURRENT_SOURCE_DIR}/lexer.cpp COMPILE_FLAGS ${FLEX_COMPILE_FLAGS})
+ IF (BISON_FOUND)
+ ADD_FLEX_BISON_DEPENDENCY(GraphQLScanner graphqlparser)
+ ENDIF()
+@@ -83,11 +104,8 @@ GENERATE_AST_FILE(cxx_json_visitor_header JsonVisitor.h.inc)
+
+ GENERATE_AST_FILE(cxx_json_visitor_impl JsonVisitor.cpp.inc)
+
+-ADD_SUBDIRECTORY(python)
+-
+-OPTION(test "Build tests." OFF)
+-
+ INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c DESTINATION include/graphqlparser
++ CONFIGURATIONS Release
+ FILES_MATCHING PATTERN "*.h"
+ PATTERN "build" EXCLUDE)
+
+@@ -103,9 +121,12 @@ INSTALL(FILES
+ position.hh
+ stack.hh
+ syntaxdefs.h
+- DESTINATION include/graphqlparser)
++ DESTINATION include/graphqlparser
++ CONFIGURATIONS Release)
++
+ INSTALL(TARGETS graphqlparser
+- LIBRARY DESTINATION lib)
++ LIBRARY DESTINATION lib
++ RUNTIME DESTINATION bin)
+
+ if (UNIX)
+ # generate pkgconfig file
+@@ -116,16 +137,9 @@ if (UNIX)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libgraphqlparser.pc"
+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
+ endif()
++elseif(WIN32)
++ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/graphqlparser.lib
++ DESTINATION lib)
++ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/graphqlparser.pdb
++ DESTINATION bin)
+ endif()
+-
+-IF (test)
+- ADD_SUBDIRECTORY(test)
+-
+- if(UNIX)
+- # setup valgrind
+- ADD_CUSTOM_TARGET(memcheck
+- valgrind --leak-check=full --suppressions=./test/valgrind.supp --dsymutil=yes --error-exitcode=1 ./test/runTests >/dev/null
+- )
+- endif()
+-
+-ENDIF()