build: use c11 everywhere
And improve the makefiles
This commit is contained in:
parent
e75a36232b
commit
799833f9cf
11 changed files with 41 additions and 40 deletions
55
Makefile
55
Makefile
|
|
@ -18,15 +18,19 @@ endif
|
|||
OBJ := $(SRC:.c=.o)
|
||||
|
||||
# define default flags, and override to append mandatory flags
|
||||
override CFLAGS := -O3 -std=gnu11 -fPIC -fvisibility=hidden -Wall -Wextra -Wshadow -pedantic $(CFLAGS)
|
||||
ARFLAGS := rcs
|
||||
CFLAGS := -O3 -Wall -Wextra -Wshadow -pedantic
|
||||
override CFLAGS += -std=c11 -fPIC -fvisibility=hidden
|
||||
override CFLAGS += -Ilib/src -Ilib/src/wasm -Ilib/include
|
||||
|
||||
# ABI versioning
|
||||
SONAME_MAJOR := 0
|
||||
SONAME_MINOR := 0
|
||||
SONAME_MAJOR := $(word 1,$(subst ., ,$(VERSION)))
|
||||
SONAME_MINOR := $(word 2,$(subst ., ,$(VERSION)))
|
||||
|
||||
# OS-specific bits
|
||||
ifeq ($(shell uname),Darwin)
|
||||
ifeq ($(OS),Windows_NT)
|
||||
$(error "Windows is not supported")
|
||||
else ifeq ($(shell uname),Darwin)
|
||||
SOEXT = dylib
|
||||
SOEXTVER_MAJOR = $(SONAME_MAJOR).dylib
|
||||
SOEXTVER = $(SONAME_MAJOR).$(SONAME_MINOR).dylib
|
||||
|
|
@ -37,43 +41,38 @@ else
|
|||
SOEXTVER = so.$(SONAME_MAJOR).$(SONAME_MINOR)
|
||||
LINKSHARED += -shared -Wl,-soname,libtree-sitter.so.$(SONAME_MAJOR)
|
||||
endif
|
||||
ifneq (,$(filter $(shell uname),FreeBSD NetBSD DragonFly))
|
||||
ifneq ($(filter $(shell uname),FreeBSD NetBSD DragonFly),)
|
||||
PCLIBDIR := $(PREFIX)/libdata/pkgconfig
|
||||
endif
|
||||
|
||||
all: libtree-sitter.a libtree-sitter.$(SOEXTVER)
|
||||
all: libtree-sitter.a libtree-sitter.$(SOEXT) tree-sitter.pc
|
||||
|
||||
libtree-sitter.a: $(OBJ)
|
||||
$(AR) rcs $@ $^
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
|
||||
libtree-sitter.$(SOEXTVER): $(OBJ)
|
||||
libtree-sitter.$(SOEXT): $(OBJ)
|
||||
$(CC) $(LDFLAGS) $(LINKSHARED) $^ $(LDLIBS) -o $@
|
||||
ln -sf $@ libtree-sitter.$(SOEXT)
|
||||
ln -sf $@ libtree-sitter.$(SOEXTVER_MAJOR)
|
||||
ifneq ($(STRIP),)
|
||||
$(STRIP) $@
|
||||
endif
|
||||
|
||||
install: all
|
||||
sed -e 's|@LIBDIR@|$(LIBDIR)|;s|@INCLUDEDIR@|$(INCLUDEDIR)|;s|@VERSION@|$(VERSION)|' \
|
||||
-e 's|=$(PREFIX)|=$${prefix}|' \
|
||||
-e 's|@PREFIX@|$(PREFIX)|' \
|
||||
tree-sitter.pc.in > tree-sitter.pc
|
||||
|
||||
install -d '$(DESTDIR)$(LIBDIR)'
|
||||
install -m644 libtree-sitter.a '$(DESTDIR)$(LIBDIR)'/
|
||||
install -m755 libtree-sitter.$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/
|
||||
ln -sf libtree-sitter.$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/libtree-sitter.$(SOEXTVER_MAJOR)
|
||||
ln -sf libtree-sitter.$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/libtree-sitter.$(SOEXT)
|
||||
|
||||
install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter
|
||||
install -m644 lib/include/tree_sitter/api.h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/
|
||||
|
||||
install -d '$(DESTDIR)$(PCLIBDIR)'
|
||||
install -m644 tree-sitter.pc '$(DESTDIR)$(PCLIBDIR)'/
|
||||
tree-sitter.pc: tree-sitter.pc.in
|
||||
sed -e 's|@VERSION@|$(VERSION)|' \
|
||||
-e 's|@LIBDIR@|$(LIBDIR)|' \
|
||||
-e 's|@INCLUDEDIR@|$(INCLUDEDIR)|' \
|
||||
-e 's|=$(PREFIX)|=$${prefix}|' \
|
||||
-e 's|@PREFIX@|$(PREFIX)|' $< > $@
|
||||
|
||||
clean:
|
||||
rm -f lib/src/*.o libtree-sitter.a libtree-sitter.$(SOEXT) libtree-sitter.$(SOEXTVER_MAJOR) libtree-sitter.$(SOEXTVER)
|
||||
$(RM) $(OBJ) tree-sitter.pc libtree-sitter.a libtree-sitter.$(SOEXT)
|
||||
|
||||
install: all
|
||||
install -Dm644 lib/include/tree_sitter/api.h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/api.h
|
||||
install -Dm644 tree-sitter.pc '$(DESTDIR)$(PCLIBDIR)'/tree-sitter.pc
|
||||
install -Dm644 libtree-sitter.a '$(DESTDIR)$(LIBDIR)'/libtree-sitter.a
|
||||
install -m755 libtree-sitter.$(SOEXT) '$(DESTDIR)$(LIBDIR)'/libtree-sitter.$(SOEXTVER)
|
||||
ln -sf libtree-sitter.$(SOEXTVER) '$(DESTDIR)$(LIBDIR)'/libtree-sitter.$(SOEXTVER_MAJOR)
|
||||
ln -sf libtree-sitter.$(SOEXTVER_MAJOR) '$(DESTDIR)$(LIBDIR)'/libtree-sitter.$(SOEXT)
|
||||
|
||||
.PHONY: all install clean
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ let package = Package(
|
|||
name: "TreeSitter",
|
||||
targets: ["TreeSitter"]),
|
||||
],
|
||||
cLanguageStandard: .c11,
|
||||
targets: [
|
||||
.target(name: "TreeSitter",
|
||||
path: "lib",
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ pub fn build(b: *std.Build) void {
|
|||
});
|
||||
|
||||
lib.linkLibC();
|
||||
lib.addCSourceFile(.{ .file = .{ .path = "lib/src/lib.c" }, .flags = &.{} });
|
||||
lib.addCSourceFile(.{ .file = .{ .path = "lib/src/lib.c" }, .flags = &.{"-std=c11"} });
|
||||
lib.addIncludePath(.{ .path = "lib/include" });
|
||||
lib.addIncludePath(.{ .path = "lib/src" });
|
||||
|
||||
|
|
|
|||
|
|
@ -587,7 +587,7 @@ impl Loader {
|
|||
|
||||
if let Some(scanner_path) = scanner_path.as_ref() {
|
||||
if scanner_path.extension() == Some("c".as_ref()) {
|
||||
command.arg("-xc").arg("-std=c99").arg(scanner_path);
|
||||
command.arg("-xc").arg("-std=c11").arg(scanner_path);
|
||||
} else {
|
||||
eprintln!("Warning: Using a C++ scanner is now deprecated. Please migrate your scanner code to C, as C++ support will be removed in the near future.");
|
||||
command.arg(scanner_path);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ OBJS := $(patsubst %.c,%.o,$(wildcard $(SRC_DIR)/*.c))
|
|||
|
||||
# flags
|
||||
ARFLAGS := rcs
|
||||
override CFLAGS += -I$(SRC_DIR) -std=c11
|
||||
override CFLAGS += -I$(SRC_DIR) -std=c11 -fPIC
|
||||
|
||||
# OS-specific bits
|
||||
ifeq ($(shell uname),Darwin)
|
||||
|
|
@ -60,14 +60,11 @@ endif
|
|||
|
||||
all: lib$(LANGUAGE_NAME).a lib$(LANGUAGE_NAME).$(SOEXT) $(LANGUAGE_NAME).pc
|
||||
|
||||
$(SRC_DIR)/%.o: $(SRC_DIR)/%.c
|
||||
$(CC) -c $^ -o $@
|
||||
|
||||
lib$(LANGUAGE_NAME).a: $(OBJS)
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
|
||||
lib$(LANGUAGE_NAME).$(SOEXT): $(OBJS)
|
||||
$(CC) -fPIC $(LDFLAGS) $(LINKSHARED) $^ $(LDLIBS) -o $@
|
||||
$(CC) $(LDFLAGS) $(LINKSHARED) $^ $(LDLIBS) -o $@
|
||||
|
||||
$(LANGUAGE_NAME).pc:
|
||||
sed > $@ bindings/c/$(LANGUAGE_NAME).pc.in \
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ fn main() {
|
|||
}
|
||||
|
||||
config
|
||||
.flag_if_supported("-std=c99")
|
||||
.flag_if_supported("-std=c11")
|
||||
.flag_if_supported("-fvisibility=hidden")
|
||||
.flag_if_supported("-Wshadow")
|
||||
.flag_if_supported("-Wno-unused-parameter")
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
-std=c99
|
||||
-std=c11
|
||||
-Isrc/wasm
|
||||
-Iinclude
|
||||
-D TREE_SITTER_FEATURE_WASM
|
||||
-D TREE_SITTER_FEATURE_WASM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
#define _POSIX_C_SOURCE 200112L
|
||||
|
||||
#include <time.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
#define _POSIX_C_SOURCE 200112L
|
||||
|
||||
#include "tree_sitter/api.h"
|
||||
#include "./array.h"
|
||||
#include "./get_changed_ranges.h"
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ for lang in ${languages[@]}; do
|
|||
$CXX $CXXFLAGS -g -O1 "-I${lang_dir}/src" -c "${lang_scanner}.cc" -o "${lang_scanner}.o"
|
||||
objects+=("${lang_scanner}.o")
|
||||
elif [ -e "${lang_scanner}.c" ]; then
|
||||
$CC $CFLAGS -std=c99 -g -O1 "-I${lang_dir}/src" -c "${lang_scanner}.c" -o "${lang_scanner}.o"
|
||||
$CC $CFLAGS -std=c11 -g -O1 "-I${lang_dir}/src" -c "${lang_scanner}.c" -o "${lang_scanner}.o"
|
||||
objects+=("${lang_scanner}.o")
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ $emcc \
|
|||
-s EXPORTED_RUNTIME_METHODS=$runtime_methods \
|
||||
$emscripten_flags \
|
||||
-fno-exceptions \
|
||||
-std=c99 \
|
||||
-std=c11 \
|
||||
-D 'fprintf(...)=' \
|
||||
-D NDEBUG= \
|
||||
-I ${src_dir} \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue