-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
69 lines (52 loc) · 2.12 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
IMAGE_NAME=yql-antlr-parser:latest
CURRENT_DIR := $(shell pwd)
ANTLR_VERSION = 4.13.1
COMMIT_HASH ?= 5aec4caba5b112b6f5e519f465890a784032e05e
.PHONY: build-image clean go ts js python dotnet java all go_clean py_clean
all: go ts js python dotnet java
go: build-image
docker run --rm -v "$(CURRENT_DIR)/go":/workspace/go $(IMAGE_NAME) \
java -jar /antlr-${ANTLR_VERSION}-complete.jar -Dlanguage=Go -package yql_antlr4_parser -o go YQL.g4
ts: build-image
docker run --rm -v "$(CURRENT_DIR)/ts":/workspace/ts $(IMAGE_NAME) \
java -jar /antlr-${ANTLR_VERSION}-complete.jar -Dlanguage=TypeScript -package yql_antlr4_parser -o ts YQL.g4
js: build-image
docker run --rm -v "$(CURRENT_DIR)/js":/workspace/js $(IMAGE_NAME) \
java -jar /antlr-${ANTLR_VERSION}-complete.jar -Dlanguage=JavaScript -package yql_antlr4_parser -o js YQL.g4
python: build-image
docker run --rm -v "$(CURRENT_DIR)/python":/workspace/python $(IMAGE_NAME) \
java -jar /antlr-${ANTLR_VERSION}-complete.jar -Dlanguage=Python3 -o python YQL.g4
printf "from YQLParser import *\nfrom YQLLexer import *\nfrom YQLListener import *\n" > python/__init__.py
dotnet: build-image
docker run --rm -v "$(CURRENT_DIR)/dotnet":/workspace/dotnet $(IMAGE_NAME) \
java -jar /antlr-${ANTLR_VERSION}-complete.jar -Dlanguage=CSharp -package YQLAntlr4Parser -o dotnet YQL.g4
java: build-image
docker run --rm -v "$(CURRENT_DIR)/java":/workspace/java $(IMAGE_NAME) \
java -jar /antlr-${ANTLR_VERSION}-complete.jar -Dlanguage=Java -package yql.antlr4.parser -o java YQL.g4
build-image:
docker build --build-arg ANTLR_VERSION=$(ANTLR_VERSION) --build-arg COMMIT_HASH=$(COMMIT_HASH) -t $(IMAGE_NAME) .
clean: go_clean python_clean dotnet_clean java_clean
go_clean:
rm -rf go/*.go
rm -rf go/*.interp
rm -rf go/*.tokens
ts_clean:
rm -rf go/*.ts
rm -rf go/*.interp
rm -rf go/*.tokens
js_clean:
rm -rf go/*.ts
rm -rf go/*.interp
rm -rf go/*.tokens
python_clean:
rm -rf python/*.py
rm -rf python/*.interp
rm -rf python/*.tokens
dotnet_clean:
rm -rf dotnet/*.cs
rm -rf dotnet/*.interp
rm -rf dotnet/*.tokens
java_clean:
rm -rf java/*.java
rm -rf java/*.interp
rm -rf java/*.tokens