|
|
|
@ -2,23 +2,13 @@ ifeq ($(OS),Windows_NT) |
|
|
|
$(error Windows is not supported) |
|
|
|
endif |
|
|
|
|
|
|
|
VERSION := 0.23.2 |
|
|
|
|
|
|
|
LANGUAGE_NAME := tree-sitter-cpp |
|
|
|
HOMEPAGE_URL := https://github.com/tree-sitter/tree-sitter-cpp |
|
|
|
VERSION := 0.23.2 |
|
|
|
|
|
|
|
# repository
|
|
|
|
SRC_DIR := src |
|
|
|
|
|
|
|
PARSER_REPO_URL := $(shell git -C $(SRC_DIR) remote get-url origin 2>/dev/null) |
|
|
|
|
|
|
|
ifeq ($(PARSER_URL),) |
|
|
|
PARSER_URL := $(subst .git,,$(PARSER_REPO_URL)) |
|
|
|
ifeq ($(shell echo $(PARSER_URL) | grep '^[a-z][-+.0-9a-z]*://'),) |
|
|
|
PARSER_URL := $(subst :,/,$(PARSER_URL)) |
|
|
|
PARSER_URL := $(subst git@,https://,$(PARSER_URL)) |
|
|
|
endif |
|
|
|
endif |
|
|
|
|
|
|
|
TS ?= tree-sitter |
|
|
|
|
|
|
|
# install directory layout
|
|
|
|
@ -37,28 +27,20 @@ ARFLAGS ?= rcs |
|
|
|
override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC |
|
|
|
|
|
|
|
# ABI versioning
|
|
|
|
SONAME_MAJOR := $(word 1,$(subst ., ,$(VERSION))) |
|
|
|
SONAME_MINOR := $(shell sed -n 's/#define LANGUAGE_VERSION //p' $(PARSER)) |
|
|
|
SONAME_MAJOR = $(shell sed -n 's/\#define LANGUAGE_VERSION //p' $(PARSER)) |
|
|
|
SONAME_MINOR = $(word 1,$(subst ., ,$(VERSION))) |
|
|
|
|
|
|
|
# OS-specific bits
|
|
|
|
ifeq ($(shell uname),Darwin) |
|
|
|
SOEXT = dylib |
|
|
|
SOEXTVER_MAJOR = $(SONAME_MAJOR).$(SOEXT) |
|
|
|
SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).$(SOEXT) |
|
|
|
LINKSHARED := $(LINKSHARED)-dynamiclib -Wl, |
|
|
|
ifneq ($(ADDITIONAL_LIBS),) |
|
|
|
LINKSHARED := $(LINKSHARED)$(ADDITIONAL_LIBS), |
|
|
|
endif |
|
|
|
LINKSHARED := $(LINKSHARED)-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SOEXTVER),-rpath,@executable_path/../Frameworks |
|
|
|
LINKSHARED = -dynamiclib -Wl,-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SOEXTVER),-rpath,@executable_path/../Frameworks |
|
|
|
else |
|
|
|
SOEXT = so |
|
|
|
SOEXTVER_MAJOR = $(SOEXT).$(SONAME_MAJOR) |
|
|
|
SOEXTVER = $(SOEXT).$(SONAME_MAJOR).$(SONAME_MINOR) |
|
|
|
LINKSHARED := $(LINKSHARED)-shared -Wl, |
|
|
|
ifneq ($(ADDITIONAL_LIBS),) |
|
|
|
LINKSHARED := $(LINKSHARED)$(ADDITIONAL_LIBS) |
|
|
|
endif |
|
|
|
LINKSHARED := $(LINKSHARED)-soname,lib$(LANGUAGE_NAME).$(SOEXTVER) |
|
|
|
LINKSHARED = -shared -Wl,-soname,lib$(LANGUAGE_NAME).$(SOEXTVER) |
|
|
|
endif |
|
|
|
ifneq ($(filter $(shell uname),FreeBSD NetBSD DragonFly),) |
|
|
|
PCLIBDIR := $(PREFIX)/libdata/pkgconfig |
|
|
|
@ -76,17 +58,15 @@ ifneq ($(STRIP),) |
|
|
|
endif |
|
|
|
|
|
|
|
$(LANGUAGE_NAME).pc: bindings/c/$(LANGUAGE_NAME).pc.in |
|
|
|
sed -e 's|@URL@|$(PARSER_URL)|' \
|
|
|
|
-e 's|@VERSION@|$(VERSION)|' \
|
|
|
|
-e 's|@LIBDIR@|$(LIBDIR)|' \
|
|
|
|
-e 's|@INCLUDEDIR@|$(INCLUDEDIR)|' \
|
|
|
|
-e 's|@REQUIRES@|$(REQUIRES)|' \
|
|
|
|
-e 's|@ADDITIONAL_LIBS@|$(ADDITIONAL_LIBS)|' \
|
|
|
|
-e 's|=$(PREFIX)|=$${prefix}|' \
|
|
|
|
-e 's|@PREFIX@|$(PREFIX)|' $< > $@ |
|
|
|
sed -e 's|@PROJECT_VERSION@|$(VERSION)|' \
|
|
|
|
-e 's|@CMAKE_INSTALL_LIBDIR@|$(LIBDIR:$(PREFIX)/%=%)|' \
|
|
|
|
-e 's|@CMAKE_INSTALL_INCLUDEDIR@|$(INCLUDEDIR:$(PREFIX)/%=%)|' \
|
|
|
|
-e 's|@PROJECT_DESCRIPTION@|$(DESCRIPTION)|' \
|
|
|
|
-e 's|@PROJECT_HOMEPAGE_URL@|$(HOMEPAGE_URL)|' \
|
|
|
|
-e 's|@CMAKE_INSTALL_PREFIX@|$(PREFIX)|' $< > $@ |
|
|
|
|
|
|
|
$(PARSER): $(SRC_DIR)/grammar.json |
|
|
|
$(TS) generate --no-bindings $^ |
|
|
|
$(TS) generate $^ |
|
|
|
|
|
|
|
install: all |
|
|
|
install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)' |
|
|
|
|