cmake_minimum_required(VERSION 3.13) project(tree-sitter-sql VERSION "0.1.1" DESCRIPTION "Tree-sitter Grammar for SQL" HOMEPAGE_URL "git+https://github.com/relativelyunknown/tree-sitter-sql-polyglot.git" LANGUAGES C) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) option(TREE_SITTER_REUSE_ALLOCATOR "Reuse the library allocator" OFF) option(TREE_SITTER_SQL_FULL "Enable every dialect extension" OFF) set(TREE_SITTER_ABI_VERSION 14 CACHE STRING "Tree-sitter ABI version") if(NOT ${TREE_SITTER_ABI_VERSION} MATCHES "^[0-9]+$") unset(TREE_SITTER_ABI_VERSION CACHE) message(FATAL_ERROR "TREE_SITTER_ABI_VERSION must be an integer") endif() find_program(TREE_SITTER_CLI tree-sitter DOC "Tree-sitter CLI") include(GNUInstallDirs) # ── base grammar (always built) ───────────────────────────────────────────── add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Generating grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Generating parser.c") add_library(tree-sitter-sql src/parser.c) if(EXISTS src/scanner.c) target_sources(tree-sitter-sql PRIVATE src/scanner.c) endif() target_include_directories(tree-sitter-sql PRIVATE src INTERFACE $ $) target_compile_definitions(tree-sitter-sql PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql.pc" @ONLY) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bindings/c/tree_sitter" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" FILES_MATCHING PATTERN "*.h") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") # ── dialect extensions: one CMake option each, off by default ────────────── # Mirrors Cargo.toml's [features]: no dialect is enabled by default (a plain # `cmake -B build` builds base only); enable one or more with # `-DTREE_SITTER_SQL_=ON`, or every dialect at once with # `-DTREE_SITTER_SQL_FULL=ON`. Generated by scripts/generate-bindings.js - # do not hand-edit this section; it's rewritten whenever that script runs. option(TREE_SITTER_SQL_SPARK "Enable the spark_sql dialect extension" OFF) if(TREE_SITTER_SQL_SPARK OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/spark/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/spark" COMMENT "Generating spark/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/spark/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/spark" COMMENT "Generating spark/parser.c") add_library(tree-sitter-sql-spark spark/src/parser.c) if(EXISTS spark/src/scanner.c) target_sources(tree-sitter-sql-spark PRIVATE spark/src/scanner.c) endif() target_include_directories(tree-sitter-sql-spark PRIVATE spark/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-spark PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-spark PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-spark.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-spark.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-spark.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-spark LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_POSTGRES "Enable the postgres_sql dialect extension" OFF) if(TREE_SITTER_SQL_POSTGRES OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/postgres/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/postgres" COMMENT "Generating postgres/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/postgres/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/postgres" COMMENT "Generating postgres/parser.c") add_library(tree-sitter-sql-postgres postgres/src/parser.c) if(EXISTS postgres/src/scanner.c) target_sources(tree-sitter-sql-postgres PRIVATE postgres/src/scanner.c) endif() target_include_directories(tree-sitter-sql-postgres PRIVATE postgres/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-postgres PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-postgres PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-postgres.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-postgres.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-postgres.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-postgres LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_MYSQL "Enable the mysql_sql dialect extension" OFF) if(TREE_SITTER_SQL_MYSQL OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/mysql/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/mysql" COMMENT "Generating mysql/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/mysql/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/mysql" COMMENT "Generating mysql/parser.c") add_library(tree-sitter-sql-mysql mysql/src/parser.c) if(EXISTS mysql/src/scanner.c) target_sources(tree-sitter-sql-mysql PRIVATE mysql/src/scanner.c) endif() target_include_directories(tree-sitter-sql-mysql PRIVATE mysql/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-mysql PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-mysql PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-mysql.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-mysql.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-mysql.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-mysql LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_DATABRICKS "Enable the databricks_sql dialect extension" OFF) if(TREE_SITTER_SQL_DATABRICKS OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/databricks/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/databricks" COMMENT "Generating databricks/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/databricks/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/databricks" COMMENT "Generating databricks/parser.c") add_library(tree-sitter-sql-databricks databricks/src/parser.c) if(EXISTS databricks/src/scanner.c) target_sources(tree-sitter-sql-databricks PRIVATE databricks/src/scanner.c) endif() target_include_directories(tree-sitter-sql-databricks PRIVATE databricks/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-databricks PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-databricks PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-databricks.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-databricks.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-databricks.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-databricks LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_SNOWFLAKE "Enable the snowflake_sql dialect extension" OFF) if(TREE_SITTER_SQL_SNOWFLAKE OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/snowflake" COMMENT "Generating snowflake/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/snowflake/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/snowflake" COMMENT "Generating snowflake/parser.c") add_library(tree-sitter-sql-snowflake snowflake/src/parser.c) if(EXISTS snowflake/src/scanner.c) target_sources(tree-sitter-sql-snowflake PRIVATE snowflake/src/scanner.c) endif() target_include_directories(tree-sitter-sql-snowflake PRIVATE snowflake/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-snowflake PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-snowflake PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-snowflake.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-snowflake.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-snowflake.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-snowflake LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_BIGQUERY "Enable the bigquery_sql dialect extension" OFF) if(TREE_SITTER_SQL_BIGQUERY OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bigquery" COMMENT "Generating bigquery/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/bigquery/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bigquery" COMMENT "Generating bigquery/parser.c") add_library(tree-sitter-sql-bigquery bigquery/src/parser.c) if(EXISTS bigquery/src/scanner.c) target_sources(tree-sitter-sql-bigquery PRIVATE bigquery/src/scanner.c) endif() target_include_directories(tree-sitter-sql-bigquery PRIVATE bigquery/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-bigquery PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-bigquery PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-bigquery.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-bigquery.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-bigquery.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-bigquery LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_MARIADB "Enable the mariadb_sql dialect extension" OFF) if(TREE_SITTER_SQL_MARIADB OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/mariadb" COMMENT "Generating mariadb/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/mariadb/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/mariadb" COMMENT "Generating mariadb/parser.c") add_library(tree-sitter-sql-mariadb mariadb/src/parser.c) if(EXISTS mariadb/src/scanner.c) target_sources(tree-sitter-sql-mariadb PRIVATE mariadb/src/scanner.c) endif() target_include_directories(tree-sitter-sql-mariadb PRIVATE mariadb/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-mariadb PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-mariadb PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-mariadb.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-mariadb.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-mariadb.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-mariadb LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_SQLITE "Enable the sqlite_sql dialect extension" OFF) if(TREE_SITTER_SQL_SQLITE OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sqlite" COMMENT "Generating sqlite/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sqlite" COMMENT "Generating sqlite/parser.c") add_library(tree-sitter-sql-sqlite sqlite/src/parser.c) if(EXISTS sqlite/src/scanner.c) target_sources(tree-sitter-sql-sqlite PRIVATE sqlite/src/scanner.c) endif() target_include_directories(tree-sitter-sql-sqlite PRIVATE sqlite/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-sqlite PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-sqlite PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-sqlite.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-sqlite.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-sqlite.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-sqlite LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_HIVE "Enable the hive_sql dialect extension" OFF) if(TREE_SITTER_SQL_HIVE OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/hive/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/hive" COMMENT "Generating hive/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/hive/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/hive" COMMENT "Generating hive/parser.c") add_library(tree-sitter-sql-hive hive/src/parser.c) if(EXISTS hive/src/scanner.c) target_sources(tree-sitter-sql-hive PRIVATE hive/src/scanner.c) endif() target_include_directories(tree-sitter-sql-hive PRIVATE hive/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-hive PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-hive PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-hive.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-hive.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-hive.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-hive LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_ORACLE "Enable the oracle_sql dialect extension" OFF) if(TREE_SITTER_SQL_ORACLE OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/oracle/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/oracle" COMMENT "Generating oracle/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/oracle/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/oracle" COMMENT "Generating oracle/parser.c") add_library(tree-sitter-sql-oracle oracle/src/parser.c) if(EXISTS oracle/src/scanner.c) target_sources(tree-sitter-sql-oracle PRIVATE oracle/src/scanner.c) endif() target_include_directories(tree-sitter-sql-oracle PRIVATE oracle/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-oracle PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-oracle PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-oracle.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-oracle.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-oracle.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-oracle LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_DB2 "Enable the db2_sql dialect extension" OFF) if(TREE_SITTER_SQL_DB2 OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/db2/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/db2" COMMENT "Generating db2/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/db2/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/db2" COMMENT "Generating db2/parser.c") add_library(tree-sitter-sql-db2 db2/src/parser.c) if(EXISTS db2/src/scanner.c) target_sources(tree-sitter-sql-db2 PRIVATE db2/src/scanner.c) endif() target_include_directories(tree-sitter-sql-db2 PRIVATE db2/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-db2 PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-db2 PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-db2.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-db2.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-db2.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-db2 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_TSQL "Enable the tsql dialect extension" OFF) if(TREE_SITTER_SQL_TSQL OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tsql/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tsql" COMMENT "Generating tsql/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tsql/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tsql" COMMENT "Generating tsql/parser.c") add_library(tree-sitter-sql-tsql tsql/src/parser.c) if(EXISTS tsql/src/scanner.c) target_sources(tree-sitter-sql-tsql PRIVATE tsql/src/scanner.c) endif() target_include_directories(tree-sitter-sql-tsql PRIVATE tsql/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-tsql PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-tsql PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-tsql.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-tsql.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-tsql.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-tsql LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_DUCKDB "Enable the duckdb_sql dialect extension" OFF) if(TREE_SITTER_SQL_DUCKDB OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/duckdb" COMMENT "Generating duckdb/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/duckdb/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/duckdb" COMMENT "Generating duckdb/parser.c") add_library(tree-sitter-sql-duckdb duckdb/src/parser.c) if(EXISTS duckdb/src/scanner.c) target_sources(tree-sitter-sql-duckdb PRIVATE duckdb/src/scanner.c) endif() target_include_directories(tree-sitter-sql-duckdb PRIVATE duckdb/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-duckdb PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-duckdb PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-duckdb.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-duckdb.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-duckdb.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-duckdb LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_TRINO "Enable the trino_sql dialect extension" OFF) if(TREE_SITTER_SQL_TRINO OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/trino/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/trino" COMMENT "Generating trino/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/trino/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/trino" COMMENT "Generating trino/parser.c") add_library(tree-sitter-sql-trino trino/src/parser.c) if(EXISTS trino/src/scanner.c) target_sources(tree-sitter-sql-trino PRIVATE trino/src/scanner.c) endif() target_include_directories(tree-sitter-sql-trino PRIVATE trino/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-trino PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-trino PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-trino.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-trino.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-trino.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-trino LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_ATHENA "Enable the athena_sql dialect extension" OFF) if(TREE_SITTER_SQL_ATHENA OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/athena/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/athena" COMMENT "Generating athena/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/athena/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/athena" COMMENT "Generating athena/parser.c") add_library(tree-sitter-sql-athena athena/src/parser.c) if(EXISTS athena/src/scanner.c) target_sources(tree-sitter-sql-athena PRIVATE athena/src/scanner.c) endif() target_include_directories(tree-sitter-sql-athena PRIVATE athena/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-athena PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-athena PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-athena.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-athena.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-athena.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-athena LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_REDSHIFT "Enable the redshift_sql dialect extension" OFF) if(TREE_SITTER_SQL_REDSHIFT OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/redshift/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/redshift" COMMENT "Generating redshift/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/redshift/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/redshift" COMMENT "Generating redshift/parser.c") add_library(tree-sitter-sql-redshift redshift/src/parser.c) if(EXISTS redshift/src/scanner.c) target_sources(tree-sitter-sql-redshift PRIVATE redshift/src/scanner.c) endif() target_include_directories(tree-sitter-sql-redshift PRIVATE redshift/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-redshift PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-redshift PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-redshift.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-redshift.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-redshift.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-redshift LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_CLICKHOUSE "Enable the clickhouse_sql dialect extension" OFF) if(TREE_SITTER_SQL_CLICKHOUSE OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse" COMMENT "Generating clickhouse/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/clickhouse" COMMENT "Generating clickhouse/parser.c") add_library(tree-sitter-sql-clickhouse clickhouse/src/parser.c) if(EXISTS clickhouse/src/scanner.c) target_sources(tree-sitter-sql-clickhouse PRIVATE clickhouse/src/scanner.c) endif() target_include_directories(tree-sitter-sql-clickhouse PRIVATE clickhouse/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-clickhouse PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-clickhouse PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-clickhouse.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-clickhouse.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-clickhouse.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-clickhouse LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_FLINK "Enable the flink_sql dialect extension" OFF) if(TREE_SITTER_SQL_FLINK OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/flink/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/flink" COMMENT "Generating flink/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/flink/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/flink" COMMENT "Generating flink/parser.c") add_library(tree-sitter-sql-flink flink/src/parser.c) if(EXISTS flink/src/scanner.c) target_sources(tree-sitter-sql-flink PRIVATE flink/src/scanner.c) endif() target_include_directories(tree-sitter-sql-flink PRIVATE flink/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-flink PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-flink PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-flink.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-flink.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-flink.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-flink LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_COCKROACHDB "Enable the cockroachdb_sql dialect extension" OFF) if(TREE_SITTER_SQL_COCKROACHDB OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb" COMMENT "Generating cockroachdb/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/cockroachdb" COMMENT "Generating cockroachdb/parser.c") add_library(tree-sitter-sql-cockroachdb cockroachdb/src/parser.c) if(EXISTS cockroachdb/src/scanner.c) target_sources(tree-sitter-sql-cockroachdb PRIVATE cockroachdb/src/scanner.c) endif() target_include_directories(tree-sitter-sql-cockroachdb PRIVATE cockroachdb/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-cockroachdb PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-cockroachdb PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-cockroachdb.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-cockroachdb.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-cockroachdb.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-cockroachdb LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_SPANNER "Enable the spanner_sql dialect extension" OFF) if(TREE_SITTER_SQL_SPANNER OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/spanner/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/spanner" COMMENT "Generating spanner/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/spanner/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/spanner" COMMENT "Generating spanner/parser.c") add_library(tree-sitter-sql-spanner spanner/src/parser.c) if(EXISTS spanner/src/scanner.c) target_sources(tree-sitter-sql-spanner PRIVATE spanner/src/scanner.c) endif() target_include_directories(tree-sitter-sql-spanner PRIVATE spanner/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-spanner PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-spanner PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-spanner.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-spanner.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-spanner.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-spanner LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_TERADATA "Enable the teradata_sql dialect extension" OFF) if(TREE_SITTER_SQL_TERADATA OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/teradata/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/teradata" COMMENT "Generating teradata/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/teradata/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/teradata" COMMENT "Generating teradata/parser.c") add_library(tree-sitter-sql-teradata teradata/src/parser.c) if(EXISTS teradata/src/scanner.c) target_sources(tree-sitter-sql-teradata PRIVATE teradata/src/scanner.c) endif() target_include_directories(tree-sitter-sql-teradata PRIVATE teradata/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-teradata PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-teradata PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-teradata.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-teradata.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-teradata.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-teradata LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() option(TREE_SITTER_SQL_HANA "Enable the hana_sql dialect extension" OFF) if(TREE_SITTER_SQL_HANA OR TREE_SITTER_SQL_FULL) add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/grammar.json" "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/node-types.json" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/hana/grammar.js" COMMAND "${TREE_SITTER_CLI}" generate grammar.js --no-parser WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/hana" COMMENT "Generating hana/grammar.json") add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/parser.c" BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/tree_sitter/parser.h" "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/tree_sitter/alloc.h" "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/tree_sitter/array.h" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/hana/src/grammar.json" COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json --abi=${TREE_SITTER_ABI_VERSION} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/hana" COMMENT "Generating hana/parser.c") add_library(tree-sitter-sql-hana hana/src/parser.c) if(EXISTS hana/src/scanner.c) target_sources(tree-sitter-sql-hana PRIVATE hana/src/scanner.c) endif() target_include_directories(tree-sitter-sql-hana PRIVATE hana/src INTERFACE $ $) target_compile_definitions(tree-sitter-sql-hana PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> $<$:TREE_SITTER_DEBUG>) set_target_properties(tree-sitter-sql-hana PROPERTIES C_STANDARD 11 POSITION_INDEPENDENT_CODE ON SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" DEFINE_SYMBOL "") configure_file(bindings/c/tree-sitter-sql-hana.pc.in "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-hana.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-sql-hana.pc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig") install(TARGETS tree-sitter-sql-hana LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() add_custom_target(ts-test "${TREE_SITTER_CLI}" test WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "tree-sitter test") # vim:ft=cmake: