forked from reasonml/reason
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
111 lines (89 loc) · 4.25 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# Portions Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
SHELL=bash -o pipefail
default: build test
setup_convenient_bin_links:
mkdir -p $(shell pwd)/_build/bin
ln -fs $(shell pwd)/_build/src/refmt_impl.native $(shell pwd)/_build/bin/refmt
ln -fs $(shell pwd)/_build/_reasonbuild/_build/myocamlbuild $(shell pwd)/_build/bin/reasonbuild
ln -fs $(shell pwd)/_build/src/ocamlmerlin_reason.native $(shell pwd)/_build/bin/ocamlmerlin-reason
ln -fs $(shell pwd)/_build/src/reason_format_type.native $(shell pwd)/_build/bin/refmttype
ln -fs $(shell pwd)/_build/src/rebuild.sh $(shell pwd)/_build/bin/rebuild
ln -fs $(shell pwd)/_build/src/redoc.sh $(shell pwd)/_build/bin/redoc
ln -fs $(shell pwd)/_build/src/refmt_impl.native $(shell pwd)/_build/bin/refmt
ln -fs $(shell pwd)/_build/src/refmt_merlin_impl.sh $(shell pwd)/_build/bin/refmt_merlin
ln -fs $(shell pwd)/_build/src/reopt.sh $(shell pwd)/_build/bin/reopt
ln -fs $(shell pwd)/_build/src/rec.sh $(shell pwd)/_build/bin/rec
ln -fs $(shell pwd)/_build/src/share.sh $(shell pwd)/_build/bin/share
ln -fs $(shell pwd)/_build/src/reup.sh $(shell pwd)/_build/bin/reup
precompile:
cp pkg/META.in pkg/META
ocamlbuild -package topkg pkg/build.native
build_without_utop: compile_error setup_convenient_bin_links precompile
./build.native build --utop false
chmod +x $(shell pwd)/_build/src/*.sh
ln -fs $(shell pwd)/_build/src/refmt_merlin_impl.sh refmt_merlin_impl.sh
build: compile_error setup_convenient_bin_links precompile
./build.native build --utop true
chmod +x $(shell pwd)/_build/src/*.sh
ln -fs $(shell pwd)/_build/src/refmt_merlin_impl.sh refmt_merlin_impl.sh
install:
opam pin add reason . -y
./refmt_impl.native --help=groff > $(shell opam config var man)/man1/refmt.1
run: build
rlwrap ocaml \
$(shell ocamlfind query -predicates byte,toploop -r -a-format \
findlib compiler-libs.common unix) \
_build/src/reason.cma _build/src/reason_toploop.cmo
run_utop: build
utop \
$(shell ocamlfind query -predicates byte,toploop -r -a-format \
compiler-libs.common) \
_build/src/reason.cma _build/src/reason_utop.cmo
test: build clean-tests
./miscTests/rtopIntegrationTest.sh
./miscTests/jsxPpxTest.sh
cd formatTest; ./test.sh
clean-tests:
rm -rf ./formatTest/**/actual_output
rm -f ./formatTest/failed_tests
clean: clean-tests
ocamlbuild -clean
# Compile error messages into ml file, checks if the error messages are complete and not redundent
compile_error: update_error
menhir --explain --strict --unused-tokens src/reason_parser.mly --compile-errors src/reason_parser.messages > src/reason_parser_message.ml
all_errors:
@ echo "Regenerate all the possible error states for Menhir."
@ echo "Warning: This will take a while and use a lot of CPU and memory."
@ echo "---"
menhir --explain --strict --unused-tokens src/reason_parser.mly --list-errors > src/reason_parser.all.messages
# Update error messages based on new grammar
update_error:
@ cp -f src/reason_parser.messages src/reason_parser.messages.bak
@ if ! menhir --explain --strict --unused-tokens src/reason_parser.mly --update-errors src/reason_parser.messages.bak | sed -e 's/[[:space:]]*$$//g' > src/reason_parser.messages ; then \
cp src/reason_parser.messages.bak src/reason_parser.messages ; \
exit 1 ; \
fi
@ echo "The auto-generated comments in src/reason_parser.messages have been re-generated. The old messages file has been backed up at src/reason_parser.messages.bak"
.PHONY: build clean update_error compile_error
ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
SUBSTS:=$(ROOT_DIR)/pkg/substs
pre_release:
ifndef version
$(error enviorment variable 'version' is undefined)
endif
export git_version="$(shell git rev-parse --verify HEAD)"; \
export git_short_version="$(shell git rev-parse --short HEAD)"; \
$(SUBSTS) $(ROOT_DIR)/package.json.in; \
$(SUBSTS) $(ROOT_DIR)/package.ml.in; \
$(SUBSTS) $(ROOT_DIR)/opam.in
.PHONY: pre_release
release_check:
./scripts/release-check.sh
release: release_check pre_release
git add package.json package.ml opam
git commit -m "Version $(version)"
git tag -a $(version) -m "Version $(version)."
git push "git@github.com:facebook/Reason.git" tag $(version)
git clean -fdx
npm publish --access public
.PHONY: release