chore: build leanc with Lake under USE_LAKE (#8336)
Removes the last use of stdlib.make.in in this configuration outside stage 0.
This commit is contained in:
parent
ca9b3eb75f
commit
af7eb01f29
3 changed files with 23 additions and 8 deletions
|
|
@ -689,7 +689,7 @@ add_custom_target(make_stdlib ALL
|
|||
# The actual rule is in a separate makefile because we want to prefix it with '+' to use the Make job server
|
||||
# for a parallelized nested build, but CMake doesn't let us do that.
|
||||
# We use `lean` from the previous stage, but `leanc`, headers, etc. from the current stage
|
||||
COMMAND $(MAKE) -f ${CMAKE_BINARY_DIR}/stdlib.make Init Std Lean
|
||||
COMMAND $(MAKE) -f ${CMAKE_BINARY_DIR}/stdlib.make Init Std Lean Leanc
|
||||
VERBATIM)
|
||||
|
||||
# if we have LLVM enabled, then build `lean.h.bc` which has the LLVM bitcode
|
||||
|
|
@ -768,7 +768,7 @@ if(${STAGE} GREATER 0 AND EXISTS ${LEAN_SOURCE_DIR}/Leanc.lean AND NOT ${CMAKE_S
|
|||
add_custom_target(leanc ALL
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/leanc
|
||||
DEPENDS leanshared
|
||||
COMMAND $(MAKE) -f ${CMAKE_BINARY_DIR}/stdlib.make Leanc
|
||||
COMMAND $(MAKE) -f ${CMAKE_BINARY_DIR}/stdlib.make leanc
|
||||
VERBATIM)
|
||||
endif()
|
||||
|
||||
|
|
@ -823,7 +823,6 @@ endif()
|
|||
|
||||
# Escape for `make`. Yes, twice.
|
||||
string(REPLACE "$" "\\\$$" CMAKE_EXE_LINKER_FLAGS_MAKE "${CMAKE_EXE_LINKER_FLAGS}")
|
||||
string(REPLACE "$" "$$" CMAKE_EXE_LINKER_FLAGS_MAKE_MAKE "${CMAKE_EXE_LINKER_FLAGS_MAKE}")
|
||||
configure_file(${LEAN_SOURCE_DIR}/stdlib.make.in ${CMAKE_BINARY_DIR}/stdlib.make)
|
||||
|
||||
# hacky
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
name = "lean4"
|
||||
bootstrap = true
|
||||
|
||||
defaultTargets = ["Init", "Std", "Lean", "Lake", "LakeMain"]
|
||||
defaultTargets = ["Init", "Std", "Lean", "Lake", "LakeMain", "Leanc"]
|
||||
|
||||
# The root of all the compiler output directories
|
||||
buildDir = "${CMAKE_BINARY_DIR}"
|
||||
|
|
@ -65,3 +65,9 @@ name = "LakeMain"
|
|||
srcDir = "lake"
|
||||
libName = "${LAKE_LIB_PREFIX}LakeMain"
|
||||
defaultFacets = ["static.export"]
|
||||
|
||||
[[lean_lib]]
|
||||
name = "Leanc"
|
||||
srcDir = "${CMAKE_BINARY_DIR}/leanc"
|
||||
libName = "${LAKE_LIB_PREFIX}Leanc"
|
||||
defaultFacets = ["static"]
|
||||
|
|
|
|||
|
|
@ -41,9 +41,9 @@ ifeq "${USE_LAKE} ${STAGE}" "ON 1"
|
|||
|
||||
# build in parallel
|
||||
Init:
|
||||
${PREV_STAGE}/bin/lake build Init Std Lean Lake LakeMain $(LAKE_EXTRA_ARGS)
|
||||
${PREV_STAGE}/bin/lake build $(LAKE_EXTRA_ARGS)
|
||||
|
||||
Std Lean Lake: Init
|
||||
Std Lean Lake Leanc: Init
|
||||
|
||||
else
|
||||
|
||||
|
|
@ -60,6 +60,11 @@ Std: Init
|
|||
Lean: Std
|
||||
+"${LEAN_BIN}/leanmake" lib lib.export PKG=Lean $(LEANMAKE_OPTS)
|
||||
|
||||
Leanc: Lean
|
||||
ifneq "${STAGE}" "0"
|
||||
+"${LEAN_BIN}/leanmake" -C "${CMAKE_BINARY_DIR}/leanc" lib PKG=Leanc $(LEANMAKE_OPTS) OUT="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" LIB_OUT="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
|
||||
endif
|
||||
|
||||
Lake:
|
||||
# lake is in its own subdirectory, so must adjust relative paths...
|
||||
+"${LEAN_BIN}/leanmake" -C lake lib lib.export ../${LIB}/temp/LakeMain.o.export PKG=Lake $(LEANMAKE_OPTS) OUT="../${LIB}" LIB_OUT="../${LIB}/lean" TEMP_OUT="../${LIB}/temp" OLEAN_OUT="../${LIB}/lean" EXTRA_SRC_ROOTS=LakeMain.lean
|
||||
|
|
@ -146,5 +151,10 @@ ${CMAKE_BINARY_DIR}/bin/lean${CMAKE_EXECUTABLE_SUFFIX}: ${CMAKE_LIBRARY_OUTPUT_D
|
|||
|
||||
lean: ${CMAKE_BINARY_DIR}/bin/lean${CMAKE_EXECUTABLE_SUFFIX}
|
||||
|
||||
Leanc:
|
||||
+"${LEAN_BIN}/leanmake" bin PKG=Leanc BIN_NAME=leanc${CMAKE_EXECUTABLE_SUFFIX} $(LEANMAKE_OPTS) LINK_OPTS='${CMAKE_EXE_LINKER_FLAGS_MAKE_MAKE}' OUT="${CMAKE_BINARY_DIR}" OLEAN_OUT="${CMAKE_BINARY_DIR}" LEAN_PATH="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
|
||||
${CMAKE_BINARY_DIR}/bin/leanc${CMAKE_EXECUTABLE_SUFFIX}: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libLeanc.a
|
||||
@echo "[ ] Building $@"
|
||||
# on Windows, must remove file before writing a new one (since the old one may be in use)
|
||||
@rm -f $@
|
||||
"${CMAKE_BINARY_DIR}/leanc.sh" $< ${CMAKE_EXE_LINKER_FLAGS_MAKE} ${LEAN_EXE_LINKER_FLAGS} ${LEANC_OPTS} -o $@
|
||||
|
||||
leanc: ${CMAKE_BINARY_DIR}/bin/leanc${CMAKE_EXECUTABLE_SUFFIX}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue