Skip to content

Commit e5c2c4e

Browse files
authored
Merge pull request #262 from modbw/cmake_fix_soversion
Fix cmake soversion
2 parents 5ba7092 + e02d1f0 commit e5c2c4e

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

lib/CMakeLists.txt

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
function(set_version_info_from_makefile MAKEFILE_PATH TARGET_NAME)
2+
file(READ "${MAKEFILE_PATH}" MAKEFILE_CONTENTS)
3+
4+
string(REGEX MATCH "VERINFO *= *-version-info +([0-9]+):([0-9]+):([0-9]+)" _ "${MAKEFILE_CONTENTS}")
5+
6+
if(NOT CMAKE_MATCH_1)
7+
message(FATAL_ERROR "No valid VERINFO line found in ${MAKEFILE_PATH}")
8+
endif()
9+
10+
set(CURRENT ${CMAKE_MATCH_1})
11+
set(REVISION ${CMAKE_MATCH_2})
12+
set(AGE ${CMAKE_MATCH_3})
13+
14+
math(EXPR SOVERSION "${CURRENT} - ${AGE}")
15+
set(VERSION "${SOVERSION}.${AGE}.${REVISION}")
16+
17+
set_target_properties(${TARGET_NAME} PROPERTIES
18+
VERSION ${VERSION}
19+
SOVERSION ${SOVERSION}
20+
)
21+
22+
message(STATUS "Set version info for ${TARGET_NAME}: VERSION=${VERSION}, SOVERSION=${SOVERSION}")
23+
endfunction()
24+
125
set(libinc
226
libconfig.h)
327

@@ -47,17 +71,16 @@ target_include_directories(${libname}++ PUBLIC
4771

4872
set_target_properties(${libname}
4973
PROPERTIES LINKER_LANGUAGE C
50-
SOVERSION "${libconfig_VERSION_MAJOR}"
51-
VERSION "${libconfig_VERSION}"
5274
DEFINE_SYMBOL LIBCONFIG_EXPORTS
5375
PUBLIC_HEADER "${libinc}")
5476
set_target_properties(${libname}++
5577
PROPERTIES LINKER_LANGUAGE CXX
56-
SOVERSION "${libconfig_VERSION_MAJOR}"
5778
DEFINE_SYMBOL LIBCONFIGXX_EXPORTS
58-
VERSION "${libconfig_VERSION}"
5979
PUBLIC_HEADER "${libinc_cpp}")
6080

81+
set_version_info_from_makefile("Makefile.am" ${libname})
82+
set_version_info_from_makefile("Makefile.am" ${libname}++)
83+
6184
if(BUILD_SHARED_LIBS)
6285
target_compile_definitions(${libname}++ PRIVATE LIBCONFIG_STATIC)
6386
else()

0 commit comments

Comments
 (0)