diff --git a/CMakeLists.txt b/CMakeLists.txt index 56298767..7a94f3ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,19 @@ INCLUDE (CheckLibraryExists) PROJECT (cares C) +# This is for libtool compatibility, and specified in a form that is easily +# translatable from libtool (even if the actual form doesn't make sense). +# For instance, in an autotools project, in Makefile.am there is a line that +# contains something like: +# -version-info 4:0:2 +# This breaks down into sections of current:revision:age +# This then generates a version of "(current-age).age.revision" with an +# interface version of "(current-age)" +# For example, a version of 4:0:2 would generate output such as: +# libname.so -> libname.so.2 +# libname.so.2 -> libname.so.2.2.0 +SET (CARES_LIB_VERSIONINFO "4:0:2") + OPTION (CARES_STATIC "Build as a static library" OFF) OPTION (CARES_SHARED "Build as a shared library" ON) @@ -523,7 +536,19 @@ SET (CARES_SOURCES IF (${CARES_SHARED}) ADD_LIBRARY (${PROJECT_NAME} SHARED ${CARES_SOURCES}) SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H=1 -DCARES_BUILDING_LIBRARY") - SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES SOVERSION 3.0.1) + + # Convert CARES_LIB_VERSIONINFO libtool version format into VERSION and SOVERSION + # Convert from ":" separated into CMake list format using ";" + STRING (REPLACE ":" ";" CARES_LIB_VERSIONINFO ${CARES_LIB_VERSIONINFO}) + LIST (GET CARES_LIB_VERSIONINFO 0 CARES_LIB_VERSION_CURRENT) + LIST (GET CARES_LIB_VERSIONINFO 1 CARES_LIB_VERSION_REVISION) + LIST (GET CARES_LIB_VERSIONINFO 2 CARES_LIB_VERSION_AGE) + MATH (EXPR CARES_LIB_VERSION_MAJOR "${CARES_LIB_VERSION_CURRENT} - ${CARES_LIB_VERSION_AGE}") + SET (CARES_LIB_VERSION_MINOR "${CARES_LIB_VERSION_AGE}") + SET (CARES_LIB_VERSION_RELEASE "${CARES_LIB_VERSION_REVISION}") + SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES VERSION "${CARES_LIB_VERSION_MAJOR}.${CARES_LIB_VERSION_MINOR}.${CARES_LIB_VERSION_RELEASE}") + SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES SOVERSION "${CARES_LIB_VERSION_MAJOR}") + TARGET_LINK_LIBRARIES (${PROJECT_NAME} ${CARES_DEPENDENT_LIBS}) IF (${CARES_INSTALL}) INSTALL (TARGETS ${PROJECT_NAME} DESTINATION ${CARES_INSTALL_LOCATION_LIBS}) @@ -537,7 +562,6 @@ ENDIF () IF (${CARES_STATIC}) ADD_LIBRARY (${PROJECT_NAME}${STATIC_SUFFIX} STATIC ${CARES_SOURCES}) SET_TARGET_PROPERTIES (${PROJECT_NAME}${STATIC_SUFFIX} PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H=1 -DCARES_STATICLIB" OUTPUT_NAME ${PROJECT_NAME}) - SET_TARGET_PROPERTIES (${PROJECT_NAME}${STATIC_SUFFIX} PROPERTIES SOVERSION 3.0.1) IF (${CARES_STATIC_PIC}) SET_TARGET_PROPERTIES (${PROJECT_NAME}${STATIC_SUFFIX} PROPERTIES POSITION_INDEPENDENT_CODE True) ENDIF ()