diff --git a/CMakeLists.txt b/CMakeLists.txt index e0fac59..a95b238 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,9 +30,17 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/scanner.c) endif() target_include_directories(tree-sitter-yaml PRIVATE src) +set(YAML_SCHEMA core CACHE STRING "YAML schema") +set(YAML_SCHEMA_VALUES core json legacy CACHE INTERNAL "Allowed schemas") +set_property(CACHE YAML_SCHEMA PROPERTY STRINGS ${YAML_SCHEMA_VALUES}) +if(NOT YAML_SCHEMA IN_LIST YAML_SCHEMA_VALUES) + message(FATAL_ERROR "YAML_SCHEMA must be one of ${YAML_SCHEMA_VALUES}") +endif() + target_compile_definitions(tree-sitter-yaml PRIVATE $<$:TREE_SITTER_REUSE_ALLOCATOR> - $<$:TREE_SITTER_DEBUG>) + $<$:TREE_SITTER_DEBUG> + YAML_SCHEMA=${YAML_SCHEMA}) set_target_properties(tree-sitter-yaml PROPERTIES diff --git a/Makefile b/Makefile index f924e2f..35cac8c 100644 --- a/Makefile +++ b/Makefile @@ -20,12 +20,18 @@ PCLIBDIR ?= $(LIBDIR)/pkgconfig # source/object files PARSER := $(SRC_DIR)/parser.c -EXTRAS := $(filter-out $(PARSER),$(wildcard $(SRC_DIR)/*.c)) +EXTRAS := $(SRC_DIR)/scanner.c OBJS := $(patsubst %.c,%.o,$(PARSER) $(EXTRAS)) +# schema +YAML_SCHEMA := core +ifeq ($(filter $(YAML_SCHEMA),core json legacy),) +$(error YAML_SCHEMA must be one of core/json/legacy) +endif + # flags ARFLAGS ?= rcs -override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC +override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC -DYAML_SCHEMA=$(YAML_SCHEMA) # ABI versioning SONAME_MAJOR = $(shell sed -n 's/\#define LANGUAGE_VERSION //p' $(PARSER))