Skip to content

Commit 3a697ab

Browse files
committed
set SONAME and use symbolic link at install (issue #9 and #58)
1 parent 33f4ec4 commit 3a697ab

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

CMakeLists.txt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ endif()
133133

134134
# shared library
135135
add_library(mimalloc SHARED ${mi_sources})
136-
set_target_properties(mimalloc PROPERTIES VERSION ${mi_version} NO_SONAME "YES" OUTPUT_NAME ${mi_basename} )
136+
set_target_properties(mimalloc PROPERTIES VERSION ${mi_version} OUTPUT_NAME ${mi_basename} )
137137
target_compile_definitions(mimalloc PRIVATE ${mi_defines} MI_SHARED_LIB MI_SHARED_LIB_EXPORT)
138138
target_compile_options(mimalloc PRIVATE ${mi_cflags})
139139
target_link_libraries(mimalloc PUBLIC ${mi_libraries})
@@ -168,15 +168,22 @@ else()
168168
endif()
169169

170170
# install static and shared library, and the include files
171-
install(TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_dir} LIBRARY NAMELINK_SKIP)
171+
install(TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_dir} LIBRARY)
172172
install(TARGETS mimalloc-static EXPORT mimalloc DESTINATION ${mi_install_dir})
173173
install(FILES include/mimalloc.h DESTINATION ${mi_install_dir}/include)
174174
install(FILES include/mimalloc-override.h DESTINATION ${mi_install_dir}/include)
175175
install(FILES include/mimalloc-new-delete.h DESTINATION ${mi_install_dir}/include)
176176
install(FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_dir}/cmake)
177177
install(FILES cmake/mimalloc-config-version.cmake DESTINATION ${mi_install_dir}/cmake)
178178
install(EXPORT mimalloc DESTINATION ${mi_install_dir}/cmake)
179-
install(FILES "$<TARGET_FILE:mimalloc>" DESTINATION lib) # duplicate the .so in the lib directory (unversioned)
179+
180+
if(NOT WIN32)
181+
# install a symlink in the /usr/local/lib to the versioned library
182+
set(mi_symlink "${CMAKE_SHARED_MODULE_PREFIX}${mi_basename}${CMAKE_SHARED_LIBRARY_SUFFIX}")
183+
set(mi_soname "mimalloc-${mi_version}/${mi_symlink}.${mi_version}")
184+
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${mi_soname} ${mi_symlink} WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${mi_install_dir}/..)")
185+
install(CODE "MESSAGE(\"-- Symbolic link: ${CMAKE_INSTALL_PREFIX}/lib/${mi_symlink} -> ${mi_soname}\")")
186+
endif()
180187

181188
# single object file for more predictable static overriding
182189
add_library(mimalloc-obj OBJECT src/static.c)

0 commit comments

Comments
 (0)