nvim-treesitter/scripts/compile_parsers.makefile
kylo252 67f5acb882 refactor(installer): more modular makefile
- support both scanner.cc and scanner.c
- allow complete override for (CFLAGS,CXXFLAGS,LDFLAGS)
- add `clean` target
- add `install` target
- add windows support
2022-01-25 09:04:57 +01:00

50 lines
834 B
Makefile

#
# compile_parsers.makefile
#
CFLAGS ?= -std=c99 -fPIC
CXXFLAGS ?= -std=c++14 -fPIC
LDFLAGS ?= -Os -shared
SRC_DIR ?= ./src
DEST_DIR ?= ./dest
ifeq ($(OS),Windows_NT)
MKDIR ?= mkdir
RM ?= cmd /C rmdir /Q /S
CP ?= copy
TARGET ?= parser.dll
else
MKDIR ?= mkdir -p
RM ?= rm -rf
CP ?= cp
TARGET ?= parser.so
endif
ifneq ($(wildcard src/*.cc),)
LDFLAGS += -lstdc++
endif
OBJECTS := parser.o scanner.o
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS)
%.o: src/%.c
$(CC) -c $(CFLAGS) -I$(SRC_DIR) -o $@ $<
%.o: src/%.cc
$(CC) -c $(CXXFLAGS) -I$(SRC_DIR) -o $@ $<
clean:
$(RM) $(OBJECTS) $(TARGET)
install: $(TARGET)
$(MKDIR) $(DEST_DIR)
$(CP) $^ $(DEST_DIR)
uninstall:
$(RM) $(DEST_DIR)/$(TARGET)
.PHONY: clean uninstall