| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # Although flex option nounistd works fine for the generated cpp file, we need |
| # to make sure this is also set for the header. |
| set_property( |
| DIRECTORY |
| APPEND PROPERTY COMPILE_DEFINITIONS YY_NO_UNISTD_H |
| ) |
| |
| find_package(BISON) |
| if (BISON_FOUND) |
| if (BISON_VERSION VERSION_GREATER 2.4 OR BISON_VERSION VERSION_EQUAL 2.4) |
| set(RUN_BISON TRUE) |
| else() |
| set(RUN_BISON FALSE) |
| message(WARNING "You are using a version of bison which is too old to build quickstep's " |
| "parser. A preprocessed copy of the parser sources will be used.") |
| endif() |
| else() |
| set(RUN_BISON FALSE) |
| message(WARNING "Unable to find bison. A preprocessed copy of the parser sources will be used.") |
| endif() |
| |
| find_package(FLEX) |
| if (FLEX_FOUND) |
| # TODO(chasseur): This might not be the exact version to test for. |
| if (FLEX_VERSION VERSION_GREATER 2.5.38) |
| set(RUN_FLEX TRUE) |
| else() |
| set(RUN_FLEX FALSE) |
| message(WARNING "You are using a version of flex which is too old to build quickstep's lexer. " |
| "A preprocessed copy of the lexer sources will be used.") |
| endif() |
| else() |
| set(RUN_FLEX FALSE) |
| message(WARNING "Unable to find flex. A preprocessed copy of the lexer sources will be used.") |
| endif() |
| |
| |
| if (RUN_BISON) |
| BISON_TARGET(SqlParser SqlParser.ypp ${CMAKE_CURRENT_BINARY_DIR}/SqlParser_gen.cpp) |
| else() |
| file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/preprocessed/SqlParser_gen.hpp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/preprocessed/SqlParser_gen.cpp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| set(BISON_SqlParser_OUTPUTS |
| ${CMAKE_CURRENT_BINARY_DIR}/SqlParser_gen.cpp |
| ${CMAKE_CURRENT_BINARY_DIR}/SqlParser_gen.hpp) |
| endif() |
| |
| if (RUN_FLEX) |
| FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.hpp" LEXER_HEADER_FILE) |
| FLEX_TARGET(SqlLexer SqlLexer.lpp ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.cpp |
| COMPILE_FLAGS "-i -I --header-file=${LEXER_HEADER_FILE}") |
| if (RUN_BISON) |
| ADD_FLEX_BISON_DEPENDENCY(SqlLexer SqlParser) |
| endif() |
| else() |
| file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/preprocessed/SqlLexer_gen.hpp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/preprocessed/SqlLexer_gen.cpp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) |
| set(FLEX_SqlLexer_OUTPUTS |
| ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.cpp |
| ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.hpp) |
| if (RUN_BISON) |
| set_source_files_properties( |
| ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.hpp |
| ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.cpp |
| PROPERTIES OBJECT_DEPENDS ${BISON_SqlParser_OUTPUT_HEADER}) |
| endif() |
| endif() |
| |
| # Declare micro-libs: |
| add_library(quickstep_parser_ParseAssignment ../empty_src.cpp ParseAssignment.hpp) |
| add_library(quickstep_parser_ParseAttributeDefinition ParseAttributeDefinition.cpp ParseAttributeDefinition.hpp) |
| add_library(quickstep_parser_ParseBasicExpressions ParseBasicExpressions.cpp ParseBasicExpressions.hpp) |
| add_library(quickstep_parser_ParseBlockProperties ParseBlockProperties.cpp ParseBlockProperties.hpp) |
| add_library(quickstep_parser_ParseCaseExpressions ParseCaseExpressions.cpp ParseCaseExpressions.hpp) |
| add_library(quickstep_parser_ParseExpression ../empty_src.cpp ParseExpression.hpp) |
| add_library(quickstep_parser_ParseGeneratorTableReference ParseGeneratorTableReference.cpp ParseGeneratorTableReference.hpp) |
| add_library(quickstep_parser_ParseGroupBy ParseGroupBy.cpp ParseGroupBy.hpp) |
| add_library(quickstep_parser_ParseHaving ParseHaving.cpp ParseHaving.hpp) |
| add_library(quickstep_parser_ParseIndexProperties ParseIndexProperties.cpp ParseIndexProperties.hpp) |
| add_library(quickstep_parser_ParseJoinedTableReference ParseJoinedTableReference.cpp ParseJoinedTableReference.hpp) |
| add_library(quickstep_parser_ParseKeyValue ../empty_src.cpp ParseKeyValue.hpp) |
| add_library(quickstep_parser_ParseLimit ParseLimit.cpp ParseLimit.hpp) |
| add_library(quickstep_parser_ParseLiteralValue ParseLiteralValue.cpp ParseLiteralValue.hpp) |
| add_library(quickstep_parser_ParseOrderBy ParseOrderBy.cpp ParseOrderBy.hpp) |
| add_library(quickstep_parser_ParsePartitionClause ../empty_src.cpp ParsePartitionClause.hpp) |
| add_library(quickstep_parser_ParsePredicate ParsePredicate.cpp ParsePredicate.hpp) |
| add_library(quickstep_parser_ParsePredicateExists ../empty_src.cpp ParsePredicateExists.hpp) |
| add_library(quickstep_parser_ParsePredicateInTableQuery ../empty_src.cpp ParsePredicateInTableQuery.hpp) |
| add_library(quickstep_parser_ParsePriority ../empty_src.cpp ParsePriority.hpp) |
| add_library(quickstep_parser_ParseSample ParseSample.cpp ParseSample.hpp) |
| add_library(quickstep_parser_ParseSelect ../empty_src.cpp ParseSelect.hpp) |
| add_library(quickstep_parser_ParseSelectionClause ParseSelectionClause.cpp ParseSelectionClause.hpp) |
| add_library(quickstep_parser_ParseSetOperation ../empty_src.cpp ParseSetOperation.hpp) |
| add_library(quickstep_parser_ParseSimpleTableReference ParseSimpleTableReference.cpp ParseSimpleTableReference.hpp) |
| add_library(quickstep_parser_ParseStatement ../empty_src.cpp ParseStatement.hpp) |
| add_library(quickstep_parser_ParseString ParseString.cpp ParseString.hpp) |
| add_library(quickstep_parser_ParseSubqueryExpression ParseSubqueryExpression.cpp ParseSubqueryExpression.hpp) |
| add_library(quickstep_parser_ParseSubqueryTableReference ParseSubqueryTableReference.cpp ParseSubqueryTableReference.hpp) |
| add_library(quickstep_parser_ParseTableReference ParseTableReference.cpp ParseTableReference.hpp) |
| add_library(quickstep_parser_ParseTreeNode ../empty_src.cpp ParseTreeNode.hpp) |
| add_library(quickstep_parser_ParseWindow ../empty_src.cpp ParseWindow.hpp) |
| add_library(quickstep_parser_ParserUtil ParserUtil.cpp ParserUtil.hpp) |
| add_library(quickstep_parser_SqlParserWrapper SqlParserWrapper.cpp SqlParserWrapper.hpp) |
| add_library(quickstep_parser_SqlParser ${BISON_SqlParser_OUTPUTS}) |
| add_library(quickstep_parser_SqlLexer ${FLEX_SqlLexer_OUTPUTS}) |
| |
| # Link dependencies: |
| target_link_libraries(quickstep_parser_ParseAssignment |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseAttributeDefinition |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_types_Type |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseBasicExpressions |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_parser_ParseWindow |
| quickstep_types_operations_binaryoperations_BinaryOperation |
| quickstep_types_operations_unaryoperations_UnaryOperation |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseBlockProperties |
| glog |
| quickstep_parser_ParseKeyValue |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList |
| quickstep_utility_StringUtil) |
| target_link_libraries(quickstep_parser_ParseCaseExpressions |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrVector) |
| target_link_libraries(quickstep_parser_ParseExpression |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseGeneratorTableReference |
| quickstep_parser_ParseBasicExpressions |
| quickstep_parser_ParseTableReference |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseGroupBy |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseHaving |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseIndexProperties |
| glog |
| quickstep_parser_ParseKeyValue |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_storage_StorageBlockLayout_proto |
| quickstep_utility_Macros |
| quickstep_utility_PtrList |
| quickstep_utility_StringUtil) |
| target_link_libraries(quickstep_parser_ParseJoinedTableReference |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParseTableReference |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseLimit |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseLiteralValue |
| glog |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_types_DatetimeIntervalType |
| quickstep_types_DoubleType |
| quickstep_types_IntType |
| quickstep_types_LongType |
| quickstep_types_NullType |
| quickstep_types_Type |
| quickstep_types_TypedValue |
| quickstep_types_VarCharType |
| quickstep_types_YearMonthIntervalType |
| quickstep_utility_Macros |
| quickstep_utility_SqlError) |
| target_link_libraries(quickstep_parser_ParseOrderBy |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParsePartitionClause |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParsePredicate |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseTreeNode |
| quickstep_types_operations_comparisons_Comparison |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParsePredicateExists |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParseSubqueryExpression |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParsePredicateInTableQuery |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParseSubqueryExpression |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParsePriority |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseSample |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseSelect |
| glog |
| quickstep_parser_ParseGroupBy |
| quickstep_parser_ParseHaving |
| quickstep_parser_ParseLimit |
| quickstep_parser_ParseOrderBy |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParseSelectionClause |
| quickstep_parser_ParseTableReference |
| quickstep_parser_ParseTreeNode |
| quickstep_parser_ParseWindow |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseSelectionClause |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseSetOperation |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseSimpleTableReference |
| quickstep_parser_ParseSample |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTableReference |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseStatement |
| glog |
| quickstep_parser_ParseAssignment |
| quickstep_parser_ParseAttributeDefinition |
| quickstep_parser_ParseBasicExpressions |
| quickstep_parser_ParseBlockProperties |
| quickstep_parser_ParseIndexProperties |
| quickstep_parser_ParseKeyValue |
| quickstep_parser_ParsePartitionClause |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParsePriority |
| quickstep_parser_ParseSelect |
| quickstep_parser_ParseSetOperation |
| quickstep_parser_ParseString |
| quickstep_parser_ParseSubqueryTableReference |
| quickstep_parser_ParseTreeNode |
| quickstep_storage_StorageBlockInfo |
| quickstep_utility_Macros |
| quickstep_utility_PtrList |
| quickstep_utility_PtrVector) |
| target_link_libraries(quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseKeyValue |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseSubqueryExpression |
| glog |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseSetOperation |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseSubqueryTableReference |
| quickstep_parser_ParseSubqueryExpression |
| quickstep_parser_ParseTableReference |
| quickstep_utility_Macros) |
| target_link_libraries(quickstep_parser_ParseTableReference |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_ParseTreeNode |
| quickstep_utility_Macros |
| quickstep_utility_TreeStringSerializable) |
| target_link_libraries(quickstep_parser_ParserUtil |
| quickstep_utility_SqlError) |
| target_link_libraries(quickstep_parser_ParseWindow |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseOrderBy |
| quickstep_parser_ParseString |
| quickstep_parser_ParseTreeNode |
| quickstep_utility_PtrList) |
| target_link_libraries(quickstep_parser_SqlLexer |
| quickstep_parser_ParseJoinedTableReference |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParserUtil |
| quickstep_parser_ParseString |
| quickstep_parser_SqlParser |
| quickstep_utility_PtrList |
| quickstep_utility_PtrVector) |
| target_link_libraries(quickstep_parser_SqlParser |
| quickstep_catalog_PartitionSchemeHeader |
| quickstep_parser_ParseAssignment |
| quickstep_parser_ParseAttributeDefinition |
| quickstep_parser_ParseBasicExpressions |
| quickstep_parser_ParseBlockProperties |
| quickstep_parser_ParseCaseExpressions |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseGeneratorTableReference |
| quickstep_parser_ParseGroupBy |
| quickstep_parser_ParseHaving |
| quickstep_parser_ParseJoinedTableReference |
| quickstep_parser_ParseKeyValue |
| quickstep_parser_ParseLimit |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseOrderBy |
| quickstep_parser_ParsePartitionClause |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParsePredicateExists |
| quickstep_parser_ParsePredicateInTableQuery |
| quickstep_parser_ParsePriority |
| quickstep_parser_ParseSample |
| quickstep_parser_ParseSelect |
| quickstep_parser_ParseSelectionClause |
| quickstep_parser_ParseSetOperation |
| quickstep_parser_ParseSimpleTableReference |
| quickstep_parser_ParseStatement |
| quickstep_parser_ParseString |
| quickstep_parser_ParseSubqueryExpression |
| quickstep_parser_ParseSubqueryTableReference |
| quickstep_parser_ParseTableReference |
| quickstep_parser_ParseWindow |
| quickstep_parser_ParserUtil |
| quickstep_storage_StorageBlockInfo |
| quickstep_types_Type |
| quickstep_types_TypeFactory |
| quickstep_types_TypeID |
| quickstep_types_operations_binaryoperations_BinaryOperation |
| quickstep_types_operations_binaryoperations_BinaryOperationFactory |
| quickstep_types_operations_binaryoperations_BinaryOperationID |
| quickstep_types_operations_comparisons_Comparison |
| quickstep_types_operations_comparisons_ComparisonFactory |
| quickstep_types_operations_comparisons_ComparisonID |
| quickstep_types_operations_unaryoperations_UnaryOperation |
| quickstep_types_operations_unaryoperations_UnaryOperationFactory |
| quickstep_types_operations_unaryoperations_UnaryOperationID |
| quickstep_utility_PtrList |
| quickstep_utility_PtrVector) |
| target_link_libraries(quickstep_parser_SqlParserWrapper |
| glog |
| quickstep_parser_ParseJoinedTableReference |
| quickstep_parser_ParseStatement |
| quickstep_parser_SqlLexer |
| quickstep_parser_SqlParser |
| quickstep_utility_Macros |
| quickstep_utility_SqlError) |
| |
| # Dependencies on generated sources. |
| set_property(SOURCE SqlParserWrapper.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SqlParser_gen.hpp) |
| # The dependency is on the header, but this picks up the generated sources |
| # from the CMake environment. |
| set_property(SOURCE SqlParserWrapper.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.cpp) |
| set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/SqlParser_gen.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SqlLexer_gen.cpp) |
| |
| # Lexers generated by some versions of Flex use the C "register" keyword. This |
| # supresses warnings about that for the lexer ONLY. |
| include(CheckCXXCompilerFlag) |
| CHECK_CXX_COMPILER_FLAG("-Wno-deprecated-register" COMPILER_HAS_WNO_DEPRECATED_REGISTER) |
| if (COMPILER_HAS_WNO_DEPRECATED_REGISTER) |
| set_target_properties(quickstep_parser_SqlLexer PROPERTIES COMPILE_FLAGS "-Wno-deprecated-register") |
| endif() |
| |
| # GCC will make a warning for unsigned-signed comparisons which are inherent |
| # in the lexer. For this, we turn off the sign compare. |
| set_target_properties(quickstep_parser_SqlLexer PROPERTIES COMPILE_FLAGS "-Wno-sign-compare") |
| |
| add_subdirectory(tests) |
| |
| # Module all-in-one library: |
| add_library(quickstep_parser ../empty_src.cpp ParserModule.hpp) |
| target_link_libraries(quickstep_parser |
| quickstep_parser_ParseAssignment |
| quickstep_parser_ParseAttributeDefinition |
| quickstep_parser_ParseBasicExpressions |
| quickstep_parser_ParseBlockProperties |
| quickstep_parser_ParseCaseExpressions |
| quickstep_parser_ParseExpression |
| quickstep_parser_ParseGeneratorTableReference |
| quickstep_parser_ParseGroupBy |
| quickstep_parser_ParseHaving |
| quickstep_parser_ParseIndexProperties |
| quickstep_parser_ParseJoinedTableReference |
| quickstep_parser_ParseLimit |
| quickstep_parser_ParseLiteralValue |
| quickstep_parser_ParseOrderBy |
| quickstep_parser_ParsePartitionClause |
| quickstep_parser_ParsePredicate |
| quickstep_parser_ParsePredicateExists |
| quickstep_parser_ParsePredicateInTableQuery |
| quickstep_parser_ParsePriority |
| quickstep_parser_ParserUtil |
| quickstep_parser_ParseSample |
| quickstep_parser_ParseSelect |
| quickstep_parser_ParseSelectionClause |
| quickstep_parser_ParseSetOperation |
| quickstep_parser_ParseSimpleTableReference |
| quickstep_parser_ParseStatement |
| quickstep_parser_ParseString |
| quickstep_parser_ParseKeyValue |
| quickstep_parser_ParseSubqueryExpression |
| quickstep_parser_ParseSubqueryTableReference |
| quickstep_parser_ParseTableReference |
| quickstep_parser_ParseTreeNode |
| quickstep_parser_ParseWindow |
| quickstep_parser_SqlLexer |
| quickstep_parser_SqlParser |
| quickstep_parser_SqlParserWrapper) |