49 lines
2.0 KiB
Makefile
49 lines
2.0 KiB
Makefile
#**************************************************************************
|
|
#* *
|
|
#* OCaml *
|
|
#* *
|
|
#* Gabriel Scherer, projet Parsifal, INRIA Saclay *
|
|
#* *
|
|
#* Copyright 2018 Institut National de Recherche en Informatique et *
|
|
#* en Automatique. *
|
|
#* *
|
|
#* All rights reserved. This file is distributed under the terms of *
|
|
#* the GNU Lesser General Public License version 2.1, with the *
|
|
#* special exception on linking described in the file LICENSE. *
|
|
#* *
|
|
#**************************************************************************
|
|
|
|
# Developer-only rules, included in Makefile when a Git repository is detected.
|
|
|
|
# Testing the parser -- see parsing/HACKING.adoc
|
|
|
|
SOURCE_FILES=$(shell git ls-files '*.ml' '*.mli' | grep -v boot/menhir/parser)
|
|
|
|
AST_FILES=$(addsuffix .ast,$(SOURCE_FILES))
|
|
|
|
build-all-asts:
|
|
# Recursive invocation ensures that `git ls-files` is not executed on every
|
|
# invocation of make
|
|
@$(MAKE) --no-print-directory $(AST_FILES)
|
|
|
|
CAMLC_DPARSETREE := \
|
|
$(CAMLRUN) ./ocamlc -nostdlib -nopervasives \
|
|
-stop-after parsing -dparsetree
|
|
|
|
%.ml.ast: %.ml ocamlc
|
|
$(CAMLC_DPARSETREE) $< 2> $@ || exit 0
|
|
# `|| exit 0` : some source files will fail to parse
|
|
# (for example, they are meant as toplevel scripts
|
|
# rather than source files, or are parse-error tests),
|
|
# we ignore the failure in that case
|
|
|
|
%.mli.ast: %.mli ocamlc
|
|
$(CAMLC_DPARSETREE) $< 2> $@ || exit 0
|
|
|
|
.PHONY: list-all-asts
|
|
list-all-asts:
|
|
@for f in $(AST_FILES); do echo "'$$f'"; done
|
|
|
|
partialclean::
|
|
@rm -f $(AST_FILES)
|