diff options
Diffstat (limited to 'scripts/compile_parsers.makefile')
| -rw-r--r-- | scripts/compile_parsers.makefile | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/scripts/compile_parsers.makefile b/scripts/compile_parsers.makefile index 4e689841e..1ad3458ea 100644 --- a/scripts/compile_parsers.makefile +++ b/scripts/compile_parsers.makefile @@ -1,13 +1,51 @@ -CC?=cc -CXX_STANDARD?=c++14 +CFLAGS ?= -Os -std=c99 -fPIC +CXXFLAGS ?= -Os -std=c++14 -fPIC +LDFLAGS ?= +SRC_DIR ?= ./src +DEST_DIR ?= ./dest -all: parser.so +ifeq ($(OS),Windows_NT) + SHELL := powershell.exe + .SHELLFLAGS := -NoProfile -command + CP := Copy-Item -Recurse -ErrorAction SilentlyContinue + MKDIR := New-Item -ItemType directory -ErrorAction SilentlyContinue + TARGET := parser.dll + rmf = Write-Output $(1) | foreach { if (Test-Path $$_) { Remove-Item -Force } } +else + CP := cp + MKDIR := mkdir -p + TARGET := parser.so + rmf = rm -rf $(1) +endif -parser.o: src/parser.c - $(CC) -c src/parser.c -std=c99 -Os -fPIC -I./src +ifneq ($(wildcard $(SRC_DIR)/*.cc),) + LDFLAGS += -lstdc++ +endif -scanner.o: src/scanner.cc - $(CC) -c src/scanner.cc -std=$(CXX_STANDARD) -Os -fPIC -I./src +OBJECTS := parser.o -parser.so: parser.o scanner.o - $(CC) parser.o scanner.o -o parser.so -shared -lstdc++ +ifneq ($(wildcard $(SRC_DIR)/scanner.*),) + OBJECTS += scanner.o +endif + +all: $(TARGET) + +$(TARGET): $(OBJECTS) + $(CC) $(OBJECTS) -o $(TARGET) -shared $(LDFLAGS) + +%.o: $(SRC_DIR)/%.c + $(CC) -c $(CFLAGS) -I$(SRC_DIR) -o $@ $< + +%.o: $(SRC_DIR)/%.cc + $(CC) -c $(CXXFLAGS) -I$(SRC_DIR) -o $@ $< + +clean: + $(call rmf,$(TARGET) $(OBJECTS)) + +$(DEST_DIR): + @$(MKDIR) $(DEST_DIR) + +install: $(TARGET) $(DEST_DIR) + $(CP) $(TARGET) $(DEST_DIR)/ + +.PHONY: clean |
