| SHELL := /usr/bin/env bash -euo pipefail | |
| # MORE_DEPS: rebuild the stdlib whenever the compiler has changed | |
| LEANMAKE_OPTS+=\ | |
| OUT="${LIB}"\ | |
| LIB_OUT="${LIB}/lean"\ | |
| OLEAN_OUT="${LIB}/lean"\ | |
| LEANC_OPTS="${LEANC_OPTS}"\ | |
| MORE_DEPS="${LEAN_BIN}/lean${CMAKE_EXECUTABLE_SUFFIX}"\ | |
| CMAKE_LIKE_OUTPUT=1 | |
| stdlib: | |
| ifeq ($(patsubst %.5,.5,${STAGE}), .5) | |
| # In the case of stage n.5, we simply copy .olean files and libInit.a from stage n (but not libleancpp.a, | |
| # which is different from stage 0). | |
| mkdir -p "${LIB}/lean" | |
| cp -rf $$(find "${PREV_STAGE}/lib/lean" -mindepth 1 -maxdepth 1 -not -name libleancpp.a) "${LIB}/lean" | |
| else | |
| # Use `+` to use the Make jobserver with `leanmake` for parallelized builds | |
| +"${LEAN_BIN}/leanmake" lib PKG=Init $(LEANMAKE_OPTS) | |
| +"${LEAN_BIN}/leanmake" lib PKG=Std $(LEANMAKE_OPTS) | |
| +"${LEAN_BIN}/leanmake" lib PKG=Lean $(LEANMAKE_OPTS) | |
| endif |