MAJ terminée. Nous sommes passés en version 14.6.2 . Pour consulter les "releases notes" associées c'est ici :

https://about.gitlab.com/releases/2022/01/11/security-release-gitlab-14-6-2-released/
https://about.gitlab.com/releases/2022/01/04/gitlab-14-6-1-released/

Makefile 4.43 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# This is the main Makefile that is shipped as part of the source package.
# Keep in mind that the hierarchy that is shipped is not identical to the
# hierarchy within the svn repository: some sub-directories are not shipped;
# the documentation is pre-built.

# The hierarchy that is shipped includes:
#   demos
#   menhir.1
#   manual.pdf
#   src
#   Makefile (this one)

# ----------------------------------------------------------------------------

fpottier's avatar
fpottier committed
15
16
17
18
19
20
21
22
23
24
25
26
# The following variables must/can be configured.

ifndef PREFIX
  $(error Please define PREFIX)
endif

ifndef TARGET
  TARGET := native
endif

# ----------------------------------------------------------------------------

POTTIER Francois's avatar
Typo.    
POTTIER Francois committed
27
# By default, we attempt to use ocamlfind (if present in the PATH), but it
28
29
30
31
32
33
# is possible to prevent that externally by setting USE_OCAMLFIND to false.

ifndef USE_OCAMLFIND
  USE_OCAMLFIND = ocamlfind ocamlc -v >/dev/null 2>&1
endif

34
35
36
# ----------------------------------------------------------------------------
# Installation paths.

37
38
39
40
bindir          := $(PREFIX)/bin
docdir		:= $(PREFIX)/share/doc/menhir
libdir	        := $(PREFIX)/share/menhir
mandir          := $(PREFIX)/share/man/man1
41
42
43
44
MANS            := menhir.1
DOCS            := manual.pdf demos
MLYLIB          := src/standard.mly

45
46
47
48
# ----------------------------------------------------------------------------

# A few settings differ on Windows versus Unix.

49
50
51
# If the compiler is MSVC, then the name of the executable file ends in .exe,
# and object file names end in .obj instead of .o.

fpottier's avatar
fpottier committed
52
ifeq "$(shell ocamlc -config | grep ccomp_type)" "ccomp_type: msvc"
53
54
  MENHIREXE    := menhir.exe
  OBJ          := obj
fpottier's avatar
fpottier committed
55
56
# LIBSUFFIX    := lib
else
57
58
  MENHIREXE    := menhir
  OBJ          := o
fpottier's avatar
fpottier committed
59
60
# LIBSUFFIX    := a
endif
61

62
# The path $(libdir), which is recorded in src/installation.ml (see below),
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# must sometimes be translated using cygpath.

# This one is tricky. To summarize, if I understood correctly, we can assume
# that Cygwin always exists when Menhir is compiled and installed (because
# executing a Makefile, like this one, requires Cygwin), but we cannot assume
# that Menhir will be executed under Cygwin. If the OCaml compiler is
# configured to produce a Cygwin executable, then, yes, Cygwin is there at
# execution time, so path translation is not necessary (and should not be
# performed). On the other hand, if the OCaml compiler is configured to
# produce a native Windows executable, then Cygwin is not there at execution
# time and path translation is required. In summary, path translation must be
# performed if "os_type" is "Win32" or "Win64", and must not performed if
# "os_type" is "Cygwin" or "Unix".

ifneq (,$(findstring "os_type: Win", "$(shell ocamlc -config | grep os_type)"))
78
libdir        := $(shell cygpath -m $(libdir))
79
endif
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

# -------------------------------------------------------------------------

# Building menhirLib.

ifeq ($(TARGET),byte)
MENHIRLIB       := menhirLib.cmi menhirLib.cmo
else
MENHIRLIB       := menhirLib.cmi menhirLib.cmo menhirLib.cmx menhirLib.$(OBJ)
endif

# ----------------------------------------------------------------------------
# Compilation.

# Installation time settings are recorded within src/installation.ml.
# This file is recreated every time so as to avoid becoming stale.

.PHONY: all install uninstall

all:
	rm -f src/installation.ml
101
	echo "let libdir = \"$(libdir)\"" > src/installation.ml
102
103
104
105
106
	if $(USE_OCAMLFIND) ; then \
	  echo "let ocamlfind = true" >> src/installation.ml ; \
	else \
	  echo "let ocamlfind = false" >> src/installation.ml ; \
	fi
fpottier's avatar
fpottier committed
107
	$(MAKE) -C src library bootstrap
108
109
110
111

# ----------------------------------------------------------------------------
# Installation.

fpottier's avatar
fpottier committed
112
113
114
# The directory where things have been built (by make all, above).
BUILDDIR := src/_stage2

115
install:
116
117
118
119
	mkdir -p $(bindir)
	mkdir -p $(libdir)
	mkdir -p $(docdir)
	mkdir -p $(mandir)
120
	install $(BUILDDIR)/menhir.$(TARGET) $(bindir)/$(MENHIREXE)
121
122
123
	install -m 644 $(MLYLIB) $(libdir)
	cp -r $(DOCS) $(docdir)
	cp -r $(MANS) $(mandir)
fpottier's avatar
fpottier committed
124
	@if $(USE_OCAMLFIND) ; then \
125
	  echo Installing MenhirLib via ocamlfind. ; \
fpottier's avatar
fpottier committed
126
	  ocamlfind install menhirLib src/META $(patsubst %,$(BUILDDIR)/%,$(MENHIRLIB)) ; \
127
128
	else \
	  echo Installing MenhirLib manually. ; \
fpottier's avatar
fpottier committed
129
	  install -m 644 $(patsubst %,$(BUILDDIR)/%,$(MENHIRLIB)) $(libdir) ; \
130
131
132
133
134
135
136
137
138
139
140
	fi

uninstall:
	rm -rf $(bindir)/$(MENHIREXE)
	rm -rf $(libdir)
	rm -rf $(docdir)
	rm -rf $(mandir)/$(MANS)
	@if $(USE_OCAMLFIND) ; then \
	  echo Un-installing MenhirLib via ocamlfind. ; \
	  ocamlfind remove menhirLib ; \
	fi