11cmake_minimum_required (VERSION 3.11 )
2+
3+ option (USE_MIMALLOC "use mimalloc" ON )
4+
25# store all variables passed on the command line into CL_ARGS so we can pass them to the stage builds
36# https://stackoverflow.com/a/48555098/161659
47# MUST be done before call to 'project'
@@ -14,8 +17,7 @@ foreach(var ${vars})
1417 if ("${var} " MATCHES "USE_GMP|CHECK_OLEAN_VERSION" )
1518 # must forward options that generate incompatible .olean format
1619 list (APPEND STAGE0_ARGS "-D${var} =${${var} }" )
17- endif ()
18- if ("${var} " MATCHES "LLVM*|PKG_CONFIG|USE_LAKE" )
20+ elseif ("${var} " MATCHES "LLVM*|PKG_CONFIG|USE_LAKE|USE_MIMALLOC" )
1921 list (APPEND STAGE0_ARGS "-D${var} =${${var} }" )
2022 endif ()
2123 elseif (("${var} " MATCHES "CMAKE_.*" ) AND NOT ("${var} " MATCHES "CMAKE_BUILD_TYPE" ) AND NOT ("${var} " MATCHES "CMAKE_HOME_DIRECTORY" ))
@@ -55,11 +57,21 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Emscripten")
5557 BUILD_IN_SOURCE ON
5658 INSTALL_COMMAND "" )
5759 set (CADICAL ${CMAKE_BINARY_DIR} /cadical/cadical${CMAKE_EXECUTABLE_SUFFIX} CACHE FILEPATH "path to cadical binary" FORCE )
58- set ( EXTRA_DEPENDS " cadical" )
60+ list ( APPEND EXTRA_DEPENDS cadical)
5961 endif ()
6062 list (APPEND CL_ARGS -DCADICAL=${CADICAL} )
6163endif ()
6264
65+ if (USE_MIMALLOC)
66+ ExternalProject_add (mimalloc
67+ PREFIX mimalloc
68+ GIT_REPOSITORY https://github.com/microsoft/mimalloc
69+ GIT_TAG v2.2.3
70+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} /mimalloc -DMI_OVERRIDE=OFF
71+ -DMI_INSTALL_TOPLEVEL=ON "-DCMAKE_C_FLAGS=-DMI_SHARED_LIB=1 -DMI_SHARED_LIB_EXPORT=1" )
72+ list (APPEND EXTRA_DEPENDS mimalloc)
73+ endif ()
74+
6375ExternalProject_add (stage0
6476 SOURCE_DIR "${LEAN_SOURCE_DIR} /stage0"
6577 SOURCE_SUBDIR src
0 commit comments