diff options
author | Steve Youngs <steve@sxemacs.org> | 2021-07-04 17:29:35 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2021-07-08 15:00:13 +0300 |
commit | 5d22c15f62e211e49dc0e3eaacd617ec8160e261 (patch) | |
tree | 2dcbdcce5d8450f9ffbbbacc870d5e8c2a1ac55d /CMakeLists.txt | |
parent | fe4ed5af3ab9b370cf03497d3796a65089f1bbe5 (diff) | |
download | bdwgc-5d22c15f62e211e49dc0e3eaacd617ec8160e261.tar.gz |
Set so-version for installed shared libraries (CMake)
Issue #356 (bdwgc).
* CMakeLists.txt (LIBCORD_VER_INFO): Define variable (same value as of
that in cord/cord.am).
* CMakeLists.txt (LIBGC_VER_INFO, LIBGCCPP_VER_INFO): Define variable
(same value as of that in Makefile.am).
* CMakeLists.txt [BUILD_SHARED_LIBS] (cord_cur, cord_rev, cord_age,
CORD_SOVERSION, CORD_VERSION, gc_cur, gc_rev, gc_age, GC_SOVERSION,
GC_VERSION, gccpp_cur, gccpp_rev, gccpp_age, GCCPP_SOVERSION,
GCCPP_VERSION): Define variable (based on LIBCORD_VER_INFO and
LIBGC[CPP]_VER_INFO).
* CMakeLists.txt [BUILD_SHARED_LIBS] (CORD_VERSION, GC_VERSION,
GCCPP_VERSION): Output value in status message.
* CMakeLists.txt [build_cord && BUILD_SHARED_LIBS] (cord): Set
[SO]VERSION target property.
* CMakeLists.txt [BUILD_SHARED_LIBS] (gc): Likewise.
* CMakeLists.txt [enable_cplusplus && BUILD_SHARED_LIBS] (gccpp):
Likewise.
* CMakeLists.txt [enable_cplusplus && enable_throw_bad_alloc_library
&& BUILD_SHARED_LIBS] (gctba): Likewise.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ee4f926f..b6be6e09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,12 @@ set(PACKAGE_VERSION 8.1.0) # Version must match that in AC_INIT of configure.ac and that in README. # Version must conform to: [0-9]+[.][0-9]+[.][0-9]+ +# Info (current:revision:age) for the Libtool versioning system. +# These values should match those in cord/cord.am and Makefile.am. +set(LIBCORD_VER_INFO 5:0:4) +set(LIBGC_VER_INFO 6:0:5) +set(LIBGCCPP_VER_INFO 5:0:4) + option(enable_cplusplus "C++ support" OFF) if (enable_cplusplus) project(gc) @@ -73,6 +79,31 @@ option(enable_handle_fork "Attempt to ensure a usable collector after fork()" ON option(disable_handle_fork "Prohibit installation of pthread_atfork() handlers" OFF) option(install_headers "Install header and pkg-config metadata files" ON) +# Convert VER_INFO values to [SO]VERSION ones. +if (BUILD_SHARED_LIBS) + # cord: + string(REGEX REPLACE "(.+):.+:.+" "\\1" cord_cur ${LIBCORD_VER_INFO}) + string(REGEX REPLACE ".+:(.+):.+" "\\1" cord_rev ${LIBCORD_VER_INFO}) + string(REGEX REPLACE ".+:.+:(.+)$" "\\1" cord_age ${LIBCORD_VER_INFO}) + math(EXPR CORD_SOVERSION "${cord_cur} - ${cord_age}") + set(CORD_VERSION "${CORD_SOVERSION}.${cord_age}.${cord_rev}") + message(STATUS "CORD_VERSION = ${CORD_VERSION}") + # gc: + string(REGEX REPLACE "(.+):.+:.+" "\\1" gc_cur ${LIBGC_VER_INFO}) + string(REGEX REPLACE ".+:(.+):.+" "\\1" gc_rev ${LIBGC_VER_INFO}) + string(REGEX REPLACE ".+:.+:(.+)$" "\\1" gc_age ${LIBGC_VER_INFO}) + math(EXPR GC_SOVERSION "${gc_cur} - ${gc_age}") + set(GC_VERSION "${GC_SOVERSION}.${gc_age}.${gc_rev}") + message(STATUS "GC_VERSION = ${GC_VERSION}") + # gccpp and gctba: + string(REGEX REPLACE "(.+):.+:.+" "\\1" gccpp_cur ${LIBGCCPP_VER_INFO}) + string(REGEX REPLACE ".+:(.+):.+" "\\1" gccpp_rev ${LIBGCCPP_VER_INFO}) + string(REGEX REPLACE ".+:.+:(.+)$" "\\1" gccpp_age ${LIBGCCPP_VER_INFO}) + math(EXPR GCCPP_SOVERSION "${gccpp_cur} - ${gccpp_age}") + set(GCCPP_VERSION "${GCCPP_SOVERSION}.${gccpp_age}.${gccpp_rev}") + message(STATUS "GCCPP_VERSION = ${GCCPP_VERSION}") +endif(BUILD_SHARED_LIBS) + add_definitions("-DALL_INTERIOR_POINTERS -DNO_EXECUTE_PERMISSION") # Set struct packing alignment to word (instead of 1-byte). @@ -443,6 +474,10 @@ if (build_cord) set(CORD_SRC cord/cordbscs.c cord/cordprnt.c cord/cordxtra.c) add_library(cord ${CORD_SRC}) target_link_libraries(cord PRIVATE gc) + if (BUILD_SHARED_LIBS) + set_property(TARGET cord PROPERTY VERSION ${CORD_VERSION}) + set_property(TARGET cord PROPERTY SOVERSION ${CORD_SOVERSION}) + endif() install(TARGETS cord EXPORT cordExports LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" @@ -465,6 +500,10 @@ if (BUILD_SHARED_LIBS AND HAVE_FLAG_WL_NO_UNDEFINED) endif(build_cord) endif() +if (BUILD_SHARED_LIBS) + set_property(TARGET gc PROPERTY VERSION ${GC_VERSION}) + set_property(TARGET gc PROPERTY SOVERSION ${GC_SOVERSION}) +endif() install(TARGETS gc EXPORT gcExports LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" @@ -472,12 +511,20 @@ install(TARGETS gc EXPORT gcExports INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") if (enable_cplusplus) + if (BUILD_SHARED_LIBS) + set_property(TARGET gccpp PROPERTY VERSION ${GCCPP_VERSION}) + set_property(TARGET gccpp PROPERTY SOVERSION ${GCCPP_SOVERSION}) + endif() install(TARGETS gccpp EXPORT gccppExports LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") if (enable_throw_bad_alloc_library) + if (BUILD_SHARED_LIBS) + set_property(TARGET gctba PROPERTY VERSION ${GCCPP_VERSION}) + set_property(TARGET gctba PROPERTY SOVERSION ${GCCPP_SOVERSION}) + endif() install(TARGETS gctba EXPORT gctbaExports LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" |