@@ -208,11 +208,13 @@ endif()
208208# -----------------------------------------------------------------------------
209209
210210if (MI_INSTALL_TOPLEVEL)
211- set (mi_install_dir "" )
212- set (mi_install_libdir "lib" )
211+ set (mi_install_libdir "lib" )
212+ set (mi_install_incdir "include" )
213+ set (mi_install_cmakedir "cmake" )
213214else ()
214- set (mi_install_dir "lib/mimalloc-${mi_version} " )
215- set (mi_install_libdir "${mi_install_dir} " )
215+ set (mi_install_libdir "lib/mimalloc-${mi_version} " )
216+ set (mi_install_incdir "include/mimalloc-${mi_version} " )
217+ set (mi_install_cmakedir "share/mimalloc-${mi_version} /cmake" )
216218endif ()
217219
218220if (MI_SECURE)
@@ -246,7 +248,7 @@ if(MI_USE_CXX)
246248else ()
247249 message (STATUS "Compiler : ${CMAKE_C_COMPILER} " )
248250endif ()
249- message (STATUS "Install directory : ${mi_install_dir } " )
251+ message (STATUS "Version : ${mi_version } " )
250252message (STATUS "Build targets : ${mi_build_targets} " )
251253message (STATUS "" )
252254
@@ -263,7 +265,7 @@ if(MI_BUILD_SHARED)
263265 target_link_libraries (mimalloc PUBLIC ${mi_libraries} )
264266 target_include_directories (mimalloc PUBLIC
265267 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
266- $<INSTALL_INTERFACE:${mi_install_dir} / include >
268+ $<INSTALL_INTERFACE:${mi_install_incdir} >
267269 )
268270 if (WIN32 )
269271 # On windows copy the mimalloc redirection dll too.
@@ -280,7 +282,7 @@ if(MI_BUILD_SHARED)
280282 endif ()
281283
282284 install (TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_libdir} LIBRARY)
283- install (EXPORT mimalloc DESTINATION ${mi_install_dir} /cmake )
285+ install (EXPORT mimalloc DESTINATION ${mi_install_cmakedir} )
284286endif ()
285287
286288# static library
@@ -292,7 +294,7 @@ if (MI_BUILD_STATIC)
292294 target_link_libraries (mimalloc-static PUBLIC ${mi_libraries} )
293295 target_include_directories (mimalloc-static PUBLIC
294296 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
295- $<INSTALL_INTERFACE:${mi_install_dir} / include >
297+ $<INSTALL_INTERFACE:${mi_install_incdir} >
296298 )
297299 if (WIN32 )
298300 # When building both static and shared libraries on Windows, a static library should use a
@@ -307,18 +309,21 @@ if (MI_BUILD_STATIC)
307309endif ()
308310
309311# install include files
310- install (FILES include /mimalloc.h DESTINATION ${mi_install_dir} / include )
311- install (FILES include /mimalloc-override.h DESTINATION ${mi_install_dir} / include )
312- install (FILES include /mimalloc-new-delete.h DESTINATION ${mi_install_dir} / include )
313- install (FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_dir} /cmake )
314- install (FILES cmake/mimalloc-config-version .cmake DESTINATION ${mi_install_dir} /cmake )
312+ install (FILES include /mimalloc.h DESTINATION ${mi_install_incdir} )
313+ install (FILES include /mimalloc-override.h DESTINATION ${mi_install_incdir} )
314+ install (FILES include /mimalloc-new-delete.h DESTINATION ${mi_install_incdir} )
315+ install (FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_cmakedir} )
316+ install (FILES cmake/mimalloc-config-version .cmake DESTINATION ${mi_install_cmakedir} )
315317
316318if (NOT WIN32 AND MI_BUILD_SHARED AND NOT MI_INSTALL_TOPLEVEL)
317319 # install a symlink in the /usr/local/lib to the versioned library
320+ # note: use delayed prefix expansion as \${CMAKE_INSTALL_PREFIX}
318321 set (mi_symlink "${CMAKE_SHARED_MODULE_PREFIX}${mi_basename}${CMAKE_SHARED_LIBRARY_SUFFIX} " )
319322 set (mi_soname "mimalloc-${mi_version} /${mi_symlink} .${mi_version} " )
320323 install (CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${mi_soname} ${mi_symlink} WORKING_DIRECTORY \$ {CMAKE_INSTALL_PREFIX}/lib)" )
321324 install (CODE "MESSAGE(\" -- Symbolic link: \$ {CMAKE_INSTALL_PREFIX}/lib/${mi_symlink} -> ${mi_soname} \" )" )
325+ install (CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${mi_soname} ${mi_symlink} .${mi_version} WORKING_DIRECTORY \$ {CMAKE_INSTALL_PREFIX}/lib)" )
326+ install (CODE "MESSAGE(\" -- Symbolic link: \$ {CMAKE_INSTALL_PREFIX}/lib/${mi_symlink} .${mi_version} -> ${mi_soname} \" )" )
322327endif ()
323328
324329# single object file for more predictable static overriding
@@ -329,11 +334,11 @@ if (MI_BUILD_OBJECT)
329334 target_compile_options (mimalloc-obj PRIVATE ${mi_cflags} )
330335 target_include_directories (mimalloc-obj PUBLIC
331336 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
332- $<INSTALL_INTERFACE:${mi_install_dir} / include >
337+ $<INSTALL_INTERFACE:${mi_install_incdir} >
333338 )
334339
335340 # the following seems to lead to cmake warnings/errors on some systems, disable for now :-(
336- # install(TARGETS mimalloc-obj EXPORT mimalloc DESTINATION ${mi_install_dir })
341+ # install(TARGETS mimalloc-obj EXPORT mimalloc DESTINATION ${mi_install_libdir })
337342
338343 # the FILES expression can also be: $<TARGET_OBJECTS:mimalloc-obj>
339344 # but that fails cmake versions less than 3.10 so we leave it as is for now
0 commit comments