Skip to content

Commit 6823082

Browse files
committed
Regenerate Makefile
1 parent c351546 commit 6823082

File tree

1 file changed

+62
-82
lines changed

1 file changed

+62
-82
lines changed

Makefile

+62-82
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,94 @@
1+
ifeq ($(OS),Windows_NT)
2+
$(error Windows is not supported)
3+
endif
4+
5+
LANGUAGE_NAME := tree-sitter-elixir
6+
HOMEPAGE_URL := https://github.com/elixir-lang/tree-sitter-elixir
17
VERSION := 0.3.4
28

3-
# Repository
9+
# repository
410
SRC_DIR := src
511

6-
PARSER_REPO_URL := $(shell git -C $(SRC_DIR) remote get-url origin )
7-
8-
ifeq (, $(PARSER_NAME))
9-
PARSER_NAME := $(shell basename $(PARSER_REPO_URL))
10-
PARSER_NAME := $(subst tree-sitter-,,$(PARSER_NAME))
11-
PARSER_NAME := $(subst .git,,$(PARSER_NAME))
12-
endif
13-
14-
ifeq (, $(PARSER_URL))
15-
PARSER_URL := $(subst :,/,$(PARSER_REPO_URL))
16-
PARSER_URL := $(subst git@,https://,$(PARSER_URL))
17-
PARSER_URL := $(subst .git,,$(PARSER_URL))
18-
endif
19-
20-
UPPER_PARSER_NAME := $(shell echo $(PARSER_NAME) | tr a-z A-Z )
12+
TS ?= tree-sitter
2113

2214
# install directory layout
2315
PREFIX ?= /usr/local
2416
INCLUDEDIR ?= $(PREFIX)/include
2517
LIBDIR ?= $(PREFIX)/lib
2618
PCLIBDIR ?= $(LIBDIR)/pkgconfig
2719

28-
# collect C++ sources, and link if necessary
29-
CPPSRC := $(wildcard $(SRC_DIR)/*.cc)
20+
# source/object files
21+
PARSER := $(SRC_DIR)/parser.c
22+
EXTRAS := $(filter-out $(PARSER),$(wildcard $(SRC_DIR)/*.c))
23+
OBJS := $(patsubst %.c,%.o,$(PARSER) $(EXTRAS))
3024

31-
ifeq (, $(CPPSRC))
32-
ADDITIONALLIBS :=
33-
else
34-
ADDITIONALLIBS := -lc++
35-
endif
36-
37-
# collect sources
38-
SRC := $(wildcard $(SRC_DIR)/*.c)
39-
SRC += $(CPPSRC)
40-
OBJ := $(addsuffix .o,$(basename $(SRC)))
25+
# flags
26+
ARFLAGS ?= rcs
27+
override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC
4128

4229
# ABI versioning
43-
SONAME_MAJOR := 0
44-
SONAME_MINOR := 0
45-
46-
CFLAGS ?= -O3 -Wall -Wextra -I$(SRC_DIR)
47-
CXXFLAGS ?= -O3 -Wall -Wextra -I$(SRC_DIR)
48-
override CFLAGS += -std=gnu99 -fPIC
49-
override CXXFLAGS += -fPIC
30+
SONAME_MAJOR = $(shell sed -n 's/\#define LANGUAGE_VERSION //p' $(PARSER))
31+
SONAME_MINOR = $(word 1,$(subst ., ,$(VERSION)))
5032

5133
# OS-specific bits
5234
ifeq ($(shell uname),Darwin)
5335
SOEXT = dylib
54-
SOEXTVER_MAJOR = $(SONAME_MAJOR).dylib
55-
SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).dylib
56-
LINKSHARED := $(LINKSHARED)-dynamiclib -Wl,
57-
ifneq ($(ADDITIONALLIBS),)
58-
LINKSHARED := $(LINKSHARED)$(ADDITIONALLIBS),
59-
endif
60-
LINKSHARED := $(LINKSHARED)-install_name,$(LIBDIR)/libtree-sitter-$(PARSER_NAME).$(SONAME_MAJOR).dylib,-rpath,@executable_path/../Frameworks
36+
SOEXTVER_MAJOR = $(SONAME_MAJOR).$(SOEXT)
37+
SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).$(SOEXT)
38+
LINKSHARED = -dynamiclib -Wl,-install_name,$(LIBDIR)/lib$(LANGUAGE_NAME).$(SOEXTVER),-rpath,@executable_path/../Frameworks
6139
else
6240
SOEXT = so
63-
SOEXTVER_MAJOR = so.$(SONAME_MAJOR)
64-
SOEXTVER = so.$(SONAME_MAJOR).$(SONAME_MINOR)
65-
LINKSHARED := $(LINKSHARED)-shared -Wl,
66-
ifneq ($(ADDITIONALLIBS),)
67-
LINKSHARED := $(LINKSHARED)$(ADDITIONALLIBS),
68-
endif
69-
LINKSHARED := $(LINKSHARED)-soname,libtree-sitter-$(PARSER_NAME).so.$(SONAME_MAJOR)
41+
SOEXTVER_MAJOR = $(SOEXT).$(SONAME_MAJOR)
42+
SOEXTVER = $(SOEXT).$(SONAME_MAJOR).$(SONAME_MINOR)
43+
LINKSHARED = -shared -Wl,-soname,lib$(LANGUAGE_NAME).$(SOEXTVER)
7044
endif
71-
ifneq (,$(filter $(shell uname),FreeBSD NetBSD DragonFly))
45+
ifneq ($(filter $(shell uname),FreeBSD NetBSD DragonFly),)
7246
PCLIBDIR := $(PREFIX)/libdata/pkgconfig
7347
endif
7448

75-
all: libtree-sitter-$(PARSER_NAME).a libtree-sitter-$(PARSER_NAME).$(SOEXTVER) bindings/c/$(PARSER_NAME).h bindings/c/tree-sitter-$(PARSER_NAME).pc
49+
all: lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT) $(LANGUAGE_NAME).pc
7650

77-
libtree-sitter-$(PARSER_NAME).a: $(OBJ)
78-
$(AR) rcs $@ $^
51+
lib$(LANGUAGE_NAME).a: $(OBJS)
52+
$(AR) $(ARFLAGS) $@ $^
7953

80-
libtree-sitter-$(PARSER_NAME).$(SOEXTVER): $(OBJ)
54+
lib$(LANGUAGE_NAME).$(SOEXT): $(OBJS)
8155
$(CC) $(LDFLAGS) $(LINKSHARED) $^ $(LDLIBS) -o $@
82-
ln -sf $@ libtree-sitter-$(PARSER_NAME).$(SOEXT)
83-
ln -sf $@ libtree-sitter-$(PARSER_NAME).$(SOEXTVER_MAJOR)
84-
85-
bindings/c/$(PARSER_NAME).h:
86-
sed -e 's|@UPPER_PARSERNAME@|$(UPPER_PARSER_NAME)|' \
87-
-e 's|@PARSERNAME@|$(PARSER_NAME)|' \
88-
bindings/c/tree-sitter.h.in > $@
89-
90-
bindings/c/tree-sitter-$(PARSER_NAME).pc:
91-
sed -e 's|@LIBDIR@|$(LIBDIR)|;s|@INCLUDEDIR@|$(INCLUDEDIR)|;s|@VERSION@|$(VERSION)|' \
92-
-e 's|=$(PREFIX)|=$${prefix}|' \
93-
-e 's|@PREFIX@|$(PREFIX)|' \
94-
-e 's|@ADDITIONALLIBS@|$(ADDITIONALLIBS)|' \
95-
-e 's|@PARSERNAME@|$(PARSER_NAME)|' \
96-
-e 's|@PARSERURL@|$(PARSER_URL)|' \
97-
bindings/c/tree-sitter.pc.in > $@
56+
ifneq ($(STRIP),)
57+
$(STRIP) $@
58+
endif
59+
60+
$(LANGUAGE_NAME).pc: bindings/c/$(LANGUAGE_NAME).pc.in
61+
sed -e 's|@PROJECT_VERSION@|$(VERSION)|' \
62+
-e 's|@CMAKE_INSTALL_LIBDIR@|$(LIBDIR:$(PREFIX)/%=%)|' \
63+
-e 's|@CMAKE_INSTALL_INCLUDEDIR@|$(INCLUDEDIR:$(PREFIX)/%=%)|' \
64+
-e 's|@PROJECT_DESCRIPTION@|$(DESCRIPTION)|' \
65+
-e 's|@PROJECT_HOMEPAGE_URL@|$(HOMEPAGE_URL)|' \
66+
-e 's|@CMAKE_INSTALL_PREFIX@|$(PREFIX)|' $< > $@
67+
68+
$(PARSER): $(SRC_DIR)/grammar.json
69+
$(TS) generate $^
9870

9971
install: all
100-
install -d '$(DESTDIR)$(LIBDIR)'
101-
install -m755 libtree-sitter-$(PARSER_NAME).a '$(DESTDIR)$(LIBDIR)'/libtree-sitter-$(PARSER_NAME).a
102-
install -m755 libtree-sitter-$(PARSER_NAME).$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/libtree-sitter-$(PARSER_NAME).$(SOEXTVER)
103-
ln -sf libtree-sitter-$(PARSER_NAME).$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/libtree-sitter-$(PARSER_NAME).$(SOEXTVER_MAJOR)
104-
ln -sf libtree-sitter-$(PARSER_NAME).$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/libtree-sitter-$(PARSER_NAME).$(SOEXT)
105-
install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter
106-
install -m644 bindings/c/$(PARSER_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/
107-
install -d '$(DESTDIR)$(PCLIBDIR)'
108-
install -m644 bindings/c/tree-sitter-$(PARSER_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/
72+
install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)'
73+
install -m644 bindings/c/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h
74+
install -m644 $(LANGUAGE_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
75+
install -m644 lib$(LANGUAGE_NAME).a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a
76+
install -m755 lib$(LANGUAGE_NAME).$(SOEXT) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER)
77+
ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR)
78+
ln -sf lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXT)
79+
80+
uninstall:
81+
$(RM) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a \
82+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER) \
83+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER_MAJOR) \
84+
'$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXT) \
85+
'$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h \
86+
'$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc
10987

11088
clean:
111-
rm -f $(OBJ) libtree-sitter-$(PARSER_NAME).a libtree-sitter-$(PARSER_NAME).$(SOEXT) libtree-sitter-$(PARSER_NAME).$(SOEXTVER_MAJOR) libtree-sitter-$(PARSER_NAME).$(SOEXTVER)
112-
rm -f bindings/c/$(PARSER_NAME).h bindings/c/tree-sitter-$(PARSER_NAME).pc
89+
$(RM) $(OBJS) $(LANGUAGE_NAME).pc lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT)
90+
91+
test:
92+
$(TS) test
11393

114-
.PHONY: all install clean
94+
.PHONY: all install uninstall clean test

0 commit comments

Comments
 (0)