Skip to content

Commit

Permalink
Merge pull request #480 from wilx/2.0.x-cmake-so-version
Browse files Browse the repository at this point in the history
Deal better with SO version in CMake builds. Fixes #479.
  • Loading branch information
wilx committed Nov 8, 2020
2 parents 62cc851 + bf6b27f commit 47f7876
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 10 deletions.
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,12 @@ include (Log4CPlusUtils.cmake)
log4cplus_get_version ("${PROJECT_SOURCE_DIR}/include"
log4cplus_version_major log4cplus_version_minor log4cplus_version_patch)
message("-- Generating build for Log4cplus version ${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}")
set (log4cplus_soversion 0)
set (log4cplus_soversion 3)
set (log4cplus_postfix "")
if (APPLE)
set (log4cplus_macho_current_version 7.0.0)
set (log4cplus_macho_compatibility_version 3.0.0)
endif ()

option(LOG4CPLUS_BUILD_TESTING "Build the test suite." ON)
option(LOG4CPLUS_BUILD_LOGGINGSERVER "Build the logging server." ON)
Expand Down
18 changes: 15 additions & 3 deletions qt4debugappender/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,23 @@ target_link_libraries (${qt4debugappender}
${QT_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT})

set_target_properties (${qt4debugappender} PROPERTIES
VERSION "${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}"
SOVERSION "${log4cplus_soversion}")
if (ANDROID)
# Android does not seem to have SO version support.
elseif (WIN32)
set_target_properties (${qt4debugappender} PROPERTIES
VERSION "${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}")
else ()
set_target_properties (${qt4debugappender} PROPERTIES
SOVERSION "${log4cplus_soversion}")
endif ()
target_compile_definitions (${qt4debugappender} PRIVATE INSIDE_LOG4CPLUS_QT4DEBUGAPPENDER)

if (APPLE)
set_target_properties (${log4cplus} PROPERTIES
MACHO_CURRENT_VERSION "${log4cplus_macho_current_version}"
MACHO_COMPATIBILITY_VERSION "${log4cplus_macho_compatibility_version}")
endif ()

if (WIN32)
set_target_properties (${qt4debugappender} PROPERTIES
DEBUG_POSTFIX "D")
Expand Down
18 changes: 15 additions & 3 deletions qt5debugappender/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,23 @@ target_link_libraries (${qt5debugappender}
${Qt5Widgets_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT})

set_target_properties (${qt5debugappender} PROPERTIES
VERSION "${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}"
SOVERSION "${log4cplus_soversion}")
if (ANDROID)
# Android does not seem to have SO version support.
elseif (WIN32)
set_target_properties (${qt5debugappender} PROPERTIES
VERSION "${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}")
else ()
set_target_properties (${qt5debugappender} PROPERTIES
SOVERSION "${log4cplus_soversion}")
endif ()
target_compile_definitions (${qt5debugappender} PRIVATE INSIDE_LOG4CPLUS_QT5DEBUGAPPENDER)

if (APPLE)
set_target_properties (${log4cplus} PROPERTIES
MACHO_CURRENT_VERSION "${log4cplus_macho_current_version}"
MACHO_COMPATIBILITY_VERSION "${log4cplus_macho_compatibility_version}")
endif ()

qt5_use_modules(${qt5debugappender} Core)

if (WIN32)
Expand Down
9 changes: 9 additions & 0 deletions scripts/propagate-version.pl
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,13 @@ BEGIN
/$major$1$minor$2$so_current_adjusted/gx;
print $line;
}

local @ARGV = ("CMakeLists.txt");
while (my $line = <>)
{
$line =~ s/^(\s* set \s* \( \s* log4cplus_soversion \s*) (\d+)/$1$so_current_adjusted/x
|| $line =~ s/^(\s* set \s* \( \s* log4cplus_macho_current_version \s*) (\d+(?:\.\d+)+)/$1$so_current.0.0/x
|| $line =~ s/^(\s* set \s* \( \s* log4cplus_macho_compatibility_version \s*) (\d+(?:\.\d+)+)/$1$so_current_adjusted.0.0/x;
print $line;
}
}
13 changes: 10 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,19 @@ target_link_libraries (${log4cplus} ${log4cplus_LIBS})

if (ANDROID)
# Android does not seem to have SO version support.
target_compile_definitions (${log4cplus} PRIVATE INSIDE_LOG4CPLUS)
elseif (WIN32)
set_target_properties (${log4cplus} PROPERTIES
VERSION "${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}")
else ()
set_target_properties (${log4cplus} PROPERTIES
VERSION "${log4cplus_version_major}.${log4cplus_version_minor}.${log4cplus_version_patch}"
SOVERSION "${log4cplus_soversion}")
target_compile_definitions (${log4cplus} PRIVATE INSIDE_LOG4CPLUS)
endif ()
target_compile_definitions (${log4cplus} PRIVATE INSIDE_LOG4CPLUS)

if (APPLE)
set_target_properties (${log4cplus} PROPERTIES
MACHO_CURRENT_VERSION "${log4cplus_macho_current_version}"
MACHO_COMPATIBILITY_VERSION "${log4cplus_macho_compatibility_version}")
endif ()

if (MINGW AND LOG4CPLUS_MINGW_STATIC_RUNTIME)
Expand Down

0 comments on commit 47f7876

Please sign in to comment.