File: Makefile.dev

package info (click to toggle)
ocaml 5.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 44,372 kB
  • sloc: ml: 370,196; ansic: 52,820; sh: 27,419; asm: 5,462; makefile: 3,684; python: 974; awk: 278; javascript: 273; perl: 59; fortran: 21; cs: 9
file content (57 lines) | stat: -rw-r--r-- 2,530 bytes parent folder | download
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
#**************************************************************************
#*                                                                        *
#*                                 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))

# Note: some shells do not support command-lines that contain the full
# list of source files ("too many argument"). We ensure that
# AST_FILES is only passed inside a shell command in explicit targets
# from this Makefile, and not in targets common to other makefiles
# that would be executed unconditionally. We previously had
# a `partialclean::` target performing `clean-all-asts` and that
# resulted in annoying failures for some users, see #13817.

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 := \
  $(OCAMLRUN) ./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

.PHONY: clean-all-asts
clean-all-asts:
	@rm -f $(AST_FILES)