101 lines
3.2 KiB
Diff
Executable File
101 lines
3.2 KiB
Diff
Executable File
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index c4c8b3e..3373d82 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -3,9 +3,26 @@ 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)
|
|
@@ -21,7 +38,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()
|
|
@@ -31,7 +48,7 @@ FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/c)
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
-ADD_LIBRARY(graphqlparser SHARED
|
|
+ADD_LIBRARY(graphqlparser
|
|
JsonVisitor.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}/Ast.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/Ast.cpp
|
|
@@ -87,7 +104,9 @@ ADD_SUBDIRECTORY(python)
|
|
|
|
OPTION(test "Build tests." OFF)
|
|
|
|
-INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c DESTINATION include/graphqlparser
|
|
+INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c
|
|
+ DESTINATION include/graphqlparser
|
|
+ CONFIGURATIONS Release
|
|
FILES_MATCHING PATTERN "*.h"
|
|
PATTERN "build" EXCLUDE)
|
|
|
|
@@ -103,9 +122,13 @@ INSTALL(FILES
|
|
position.hh
|
|
stack.hh
|
|
syntaxdefs.h
|
|
- DESTINATION include/graphqlparser)
|
|
+ DESTINATION include/graphqlparser
|
|
+ CONFIGURATIONS Release)
|
|
+
|
|
INSTALL(TARGETS graphqlparser
|
|
- LIBRARY DESTINATION lib)
|
|
+ ARCHIVE DESTINATION lib
|
|
+ LIBRARY DESTINATION lib
|
|
+ RUNTIME DESTINATION bin)
|
|
|
|
if (UNIX)
|
|
# generate pkgconfig file
|
|
@@ -116,6 +139,11 @@ 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)
|
|
@@ -126,6 +154,8 @@ IF (test)
|
|
ADD_CUSTOM_TARGET(memcheck
|
|
valgrind --leak-check=full --suppressions=./test/valgrind.supp --dsymutil=yes --error-exitcode=1 ./test/runTests >/dev/null
|
|
)
|
|
+ else()
|
|
+ ADD_CUSTOM_TARGET(runTests
|
|
+ ./test/runTests >/dev/null)
|
|
endif()
|
|
-
|
|
ENDIF()
|