mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0032856: Configuration, CMake - SONAME should include minor version in addition to major to reflect ABI compatibility
Added option BUILD_SOVERSION_NUMBERS to manage SOVERSION length. Default option value is set to 2 (major.minor) instead of previously used 1 (major), excluding Android/Emscripten/Windows platforms that use 0 by default.
This commit is contained in:
parent
5c48956f8e
commit
75e2ba1695
@ -56,6 +56,20 @@ set_property (GLOBAL PROPERTY OCC_VERSION_MAJOR ${OCC_VERSION_MAJOR})
|
|||||||
set_property (GLOBAL PROPERTY OCC_VERSION_MINOR ${OCC_VERSION_MINOR})
|
set_property (GLOBAL PROPERTY OCC_VERSION_MINOR ${OCC_VERSION_MINOR})
|
||||||
set_property (GLOBAL PROPERTY OCC_VERSION_MAINTENANCE ${OCC_VERSION_MAINTENANCE})
|
set_property (GLOBAL PROPERTY OCC_VERSION_MAINTENANCE ${OCC_VERSION_MAINTENANCE})
|
||||||
|
|
||||||
|
# set soversion variable determining compatibility version on platforms with symlinks
|
||||||
|
# 0 - for empty, 1 - for major, 2 - for major.minor, 3 - for major.minor.maintenance
|
||||||
|
if (NOT BUILD_SOVERSION_NUMBERS)
|
||||||
|
set (BUILD_SOVERSION_NUMBERS "0" CACHE STRING "${BUILD_SOVERSION_NUMBERS_DESCR}" FORCE)
|
||||||
|
SET_PROPERTY(CACHE BUILD_SOVERSION_NUMBERS PROPERTY STRINGS 0 1 2 3)
|
||||||
|
|
||||||
|
# update default state of soversion on different platforms
|
||||||
|
if (WIN32 OR ANDROID OR EMSCRIPTEN)
|
||||||
|
set (BUILD_SOVERSION_NUMBERS 0)
|
||||||
|
else()
|
||||||
|
set (BUILD_SOVERSION_NUMBERS 2)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set (INSTALL_TEST_CASES OFF CACHE BOOL "${INSTALL_TEST_CASES_DESCR}")
|
set (INSTALL_TEST_CASES OFF CACHE BOOL "${INSTALL_TEST_CASES_DESCR}")
|
||||||
|
|
||||||
# Regeneration of OCCT resource files
|
# Regeneration of OCCT resource files
|
||||||
|
@ -280,14 +280,17 @@ get_property (OCC_VERSION_MAJOR GLOBAL PROPERTY OCC_VERSION_MAJOR)
|
|||||||
get_property (OCC_VERSION_MINOR GLOBAL PROPERTY OCC_VERSION_MINOR)
|
get_property (OCC_VERSION_MINOR GLOBAL PROPERTY OCC_VERSION_MINOR)
|
||||||
get_property (OCC_VERSION_MAINTENANCE GLOBAL PROPERTY OCC_VERSION_MAINTENANCE)
|
get_property (OCC_VERSION_MAINTENANCE GLOBAL PROPERTY OCC_VERSION_MAINTENANCE)
|
||||||
|
|
||||||
if (ANDROID)
|
set (OCC_SOVERSION "")
|
||||||
# do not append version to the filename
|
if (BUILD_SOVERSION_NUMBERS GREATER 2)
|
||||||
set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}")
|
set (OCC_SOVERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}")
|
||||||
else()
|
elseif (BUILD_SOVERSION_NUMBERS GREATER 1)
|
||||||
set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}"
|
set (OCC_SOVERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}")
|
||||||
SOVERSION "${OCC_VERSION_MAJOR}"
|
elseif (BUILD_SOVERSION_NUMBERS GREATER 0)
|
||||||
VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}")
|
set (OCC_SOVERSION "${OCC_VERSION_MAJOR}")
|
||||||
endif()
|
endif()
|
||||||
|
set_target_properties (${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${PRECOMPILED_DEFS}"
|
||||||
|
SOVERSION "${OCC_SOVERSION}"
|
||||||
|
VERSION "${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}")
|
||||||
|
|
||||||
set (USED_TOOLKITS_BY_CURRENT_PROJECT)
|
set (USED_TOOLKITS_BY_CURRENT_PROJECT)
|
||||||
set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT)
|
set (USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT)
|
||||||
|
@ -28,6 +28,9 @@ Applies only for Debug configuration.")
|
|||||||
set (BUILD_SHARED_LIBRARY_NAME_POSTFIX_DESCR
|
set (BUILD_SHARED_LIBRARY_NAME_POSTFIX_DESCR
|
||||||
"Append the postfix to names of output libraries")
|
"Append the postfix to names of output libraries")
|
||||||
|
|
||||||
|
set (BUILD_SOVERSION_NUMBERS_DESCR
|
||||||
|
"Version numbers to put into SONAME: 0 - for empty, 1 - for major, 2 - for major.minor, 3 - for major.minor.maintenance")
|
||||||
|
|
||||||
set (BUILD_RELEASE_DISABLE_EXCEPTIONS_DESCR
|
set (BUILD_RELEASE_DISABLE_EXCEPTIONS_DESCR
|
||||||
"Disables exceptions like Standard_OutOfRange in Release builds.
|
"Disables exceptions like Standard_OutOfRange in Release builds.
|
||||||
Defines No_Exception macros for Release builds when enabled (default).
|
Defines No_Exception macros for Release builds when enabled (default).
|
||||||
|
@ -132,21 +132,31 @@ for (aPackage, aPackages) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# extend clean with versioned .so files
|
|
||||||
!win32 {
|
!win32 {
|
||||||
aVerList = $$split(VERSION, ".")
|
aVerList = $$split(VERSION, ".")
|
||||||
aVerMaj = $$member(aVerList, 0)
|
aVerMaj = $$member(aVerList, 0)
|
||||||
aVerMin = $$member(aVerList, 1)
|
aVerMin = $$member(aVerList, 1)
|
||||||
aVerMic = $$member(aVerList, 2)
|
aVerMic = $$member(aVerList, 2)
|
||||||
|
|
||||||
equals(TEMPLATE, app) {
|
equals(TEMPLATE, app) {
|
||||||
QMAKE_CLEAN += $$DESTDIR/$${TARGET}
|
QMAKE_CLEAN += $$DESTDIR/$${TARGET}
|
||||||
} else {
|
} else {
|
||||||
mac {
|
mac {
|
||||||
|
# override qmake soname versionong logic
|
||||||
|
QMAKE_LFLAGS_SONAME =
|
||||||
|
QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.dylib.$${aVerMaj}.$${aVerMin}
|
||||||
|
|
||||||
|
# extend clean with versioned .dylib files
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib
|
||||||
} else {
|
} else {
|
||||||
|
# override qmake soname versionong logic
|
||||||
|
QMAKE_LFLAGS_SONAME =
|
||||||
|
QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}
|
||||||
|
|
||||||
|
# extend clean with versioned .so files
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}
|
||||||
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}
|
QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user