forked from speed-dreams/speed-dreams-code
Fixes #526 Use the ldconfig version-naming scheme for all shared library files under Linux (modules included)
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@4340 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 36cb688e1cad589f272d9275c95000bc7db1df22 Former-commit-id: a98f30734937c971a72b3b9e31f41873aae91e0a
This commit is contained in:
parent
b132517b0b
commit
619f843837
22 changed files with 94 additions and 23 deletions
|
@ -195,14 +195,25 @@ ENDMACRO(GENERATE_ROBOT_DEF_FILE ROBOTNAME DEF_FILE)
|
|||
|
||||
# Robot project definition (module build and install, without associated data)
|
||||
# Args:
|
||||
# NAME : Name of the robot
|
||||
# NAME : Name of the robot
|
||||
# INTERFACE : Robot Windows DLL Interface description (tells about exported symbols)
|
||||
# See GENERATE_ROBOT_DEF_FILE macro.
|
||||
# If not specified, defaults to "LEGACY_MIN" ; not used if MODULE used
|
||||
# SOURCES : List of files to use as build sources if any ; not needed if MODULE used
|
||||
# CLONENAMES : The names of the clones to generate
|
||||
# SOURCES : List of files to use as build sources if any ; not needed if MODULE used
|
||||
# CLONENAMES : The names of the clones to generate
|
||||
# VERSION : The VERSION of the libraries to produce (robot and its clones) (def: $VERSION).
|
||||
# SOVERSION : The SOVERSION of the libraries to produce (in the ldconfig meaning) (def: 0.0.0).
|
||||
#
|
||||
# Example:
|
||||
# ROBOT_MODULE(NAME simplix VERSION 3.0.5 SOVERSION 0.0.0
|
||||
# INTERFACE LEGACY WELCOME simplix_trb1 simplix_ls1 simplix_36GP
|
||||
# SOURCES simplix.cpp ...
|
||||
# CLONENAMES simplix_trb1 simplix_ls1 simplix_36GP)
|
||||
MACRO(ROBOT_MODULE)
|
||||
|
||||
SET(RBM_SYNTAX "NAME,1,1,RBM_HAS_NAME,RBM_NAME")
|
||||
SET(RBM_SYNTAX ${RBM_SYNTAX} "VERSION,0,1,RBM_HAS_VERSION,RBM_VERSION")
|
||||
SET(RBM_SYNTAX ${RBM_SYNTAX} "SOVERSION,0,1,RBM_HAS_SOVERSION,RBM_SOVERSION")
|
||||
SET(RBM_SYNTAX ${RBM_SYNTAX} "INTERFACE,0,-1,RBM_HAS_INTERFACE,RBM_INTERFACE")
|
||||
SET(RBM_SYNTAX ${RBM_SYNTAX} "SOURCES,0,-1,RBM_HAS_SOURCES,RBM_SOURCES")
|
||||
SET(RBM_SYNTAX ${RBM_SYNTAX} "CLONENAMES,0,-1,RBM_HAS_CLONENAMES,RBM_CLONENAMES")
|
||||
|
@ -215,6 +226,16 @@ MACRO(ROBOT_MODULE)
|
|||
IF(NOT RBM_HAS_SOURCES OR NOT RBM_SOURCES)
|
||||
MESSAGE(FATAL_ERROR "Cannot build a robot module without sources / module to copy")
|
||||
ENDIF()
|
||||
IF(NOT RBM_HAS_VERSION OR NOT RBM_VERSION)
|
||||
SET(RBM_VERSION ${VERSION})
|
||||
MESSAGE(STATUS "No version specified for robot module ${RBM_NAME} ; using ${RBM_VERSION}")
|
||||
ENDIF()
|
||||
IF(NOT RBM_HAS_SOVERSION OR NOT RBM_SOVERSION)
|
||||
IF(UNIX)
|
||||
SET(RBM_SOVERSION 0.0.0)
|
||||
MESSAGE(STATUS "No so-version specified for robot module ${RBM_NAME} ; using ${RBM_SOVERSION}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
PROJECT("robot_${RBM_NAME}")
|
||||
|
||||
|
@ -233,34 +254,51 @@ MACRO(ROBOT_MODULE)
|
|||
ENDIF(WIN32)
|
||||
|
||||
# Disable developer warning
|
||||
if (COMMAND cmake_policy)
|
||||
cmake_policy(SET CMP0003 NEW)
|
||||
endIF(COMMAND cmake_policy)
|
||||
IF (COMMAND cmake_policy)
|
||||
CMAKE_POLICY(SET CMP0003 NEW)
|
||||
ENDIF(COMMAND cmake_policy)
|
||||
|
||||
# Ignore some run-time libs to avoid MSVC link-time warnings and sometimes even crashes.
|
||||
IF(MSVC)
|
||||
# Ignore some run-time libs to avoid link time warnings and sometimes even crashes.
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt.lib")
|
||||
ENDIF(MSVC)
|
||||
|
||||
# The robot module is actually a shared library.
|
||||
ADD_LIBRARY(${RBM_NAME} SHARED ${RBM_SOURCES})
|
||||
IF(UNIX)
|
||||
|
||||
# Customize shared library versions and file prefix.
|
||||
SET_TARGET_PROPERTIES(${RBM_NAME} PROPERTIES VERSION ${RBM_VERSION})
|
||||
IF(UNIX) # Use ldconfig version naming scheme + no "lib" prefix under Linux
|
||||
SET_TARGET_PROPERTIES(${RBM_NAME} PROPERTIES PREFIX "")
|
||||
SET_TARGET_PROPERTIES(${RBM_NAME} PROPERTIES SOVERSION ${RBM_SOVERSION})
|
||||
ENDIF(UNIX)
|
||||
|
||||
# Link/Run-time dependencies
|
||||
ADD_PLIB_LIBRARY(${RBM_NAME} sg)
|
||||
ADD_SDLIB_LIBRARY(${RBM_NAME} robottools)
|
||||
|
||||
# Install target robot module shared library
|
||||
SD_INSTALL_FILES(LIB drivers/${RBM_NAME} TARGETS ${RBM_NAME})
|
||||
|
||||
# Install clone robot modules shared libraries (use ldconfig version naming scheme under Linux)
|
||||
IF(RBM_HAS_CLONENAMES AND RBM_CLONENAMES)
|
||||
GET_TARGET_PROPERTY(MODNAME ${RBM_NAME} LOCATION)
|
||||
SET(MODPREFIX "")
|
||||
SET(MODSUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
GET_TARGET_PROPERTY(MODLOC ${RBM_NAME} LOCATION)
|
||||
FOREACH(CLONENAME ${RBM_CLONENAMES})
|
||||
SET(CLONE_MODNAME ${MODPREFIX}${CLONENAME}${MODSUFFIX})
|
||||
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${MODNAME} ${CLONE_MODNAME})
|
||||
SD_INSTALL_FILES(LIB drivers/${CLONENAME} FILES ${CLONE_MODNAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR})
|
||||
SET(CLONE_MODLOC ${CLONENAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
IF(UNIX)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${MODLOC} ${CLONE_MODLOC}.${RBM_VERSION})
|
||||
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CLONE_MODLOC}.${RBM_VERSION} ${CLONE_MODLOC}.${RBM_SOVERSION}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CLONE_MODLOC}.${RBM_SOVERSION} ${CLONE_MODLOC})
|
||||
SD_INSTALL_FILES(LIB drivers/${CLONENAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR}
|
||||
FILES ${CLONE_MODLOC} ${CLONE_MODLOC}.${RBM_SOVERSION} ${CLONE_MODLOC}.${RBM_VERSION} )
|
||||
ELSE()
|
||||
ADD_CUSTOM_COMMAND(TARGET ${RBM_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${MODLOC} ${CLONE_MODLOC})
|
||||
SD_INSTALL_FILES(LIB drivers/${CLONENAME} PREFIX ${CMAKE_CURRENT_BINARY_DIR}
|
||||
FILES ${CLONE_MODLOC})
|
||||
ENDIF()
|
||||
ENDFOREACH(CLONENAME ${RBM_CLONENAMES})
|
||||
ENDIF()
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ SET(ROBOT_SOURCES ${ROBOT_NAME}.cpp pref.cpp human.h pref.h)
|
|||
|
||||
ADD_SDLIB_INCLUDEDIR(tgfclient)
|
||||
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME}
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION ${VERSION} SOVERSION 1.0.0
|
||||
INTERFACE WELCOME
|
||||
SOURCES ${ROBOT_SOURCES})
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ SET(ROBOT_SUBDIRS
|
|||
ls1-vulture-v6r
|
||||
mpa1-hartbill-2002)
|
||||
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME}
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION 2.0.0 SOVERSION 1.0.0
|
||||
SOURCES ${ROBOT_SOURCES})
|
||||
|
||||
ROBOT_DATA(NAME ${ROBOT_NAME}
|
||||
|
|
|
@ -6,7 +6,7 @@ SET(ROBOT_SOURCES ${ROBOT_NAME}.cpp pref.cpp networkhuman.h pref.h)
|
|||
|
||||
ADD_SDLIB_INCLUDEDIR(tgfclient networking)
|
||||
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME}
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION ${VERSION} SOVERSION 0.0.0
|
||||
INTERFACE WELCOME
|
||||
SOURCES ${ROBOT_SOURCES})
|
||||
|
||||
|
|
|
@ -93,10 +93,10 @@ IF(NOT OPTION_OFFICIAL_ONLY)
|
|||
ENDIF()
|
||||
|
||||
# The ubiquitous robot module and its clones.
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME}
|
||||
INTERFACE ${ROBOT_INTERFACE}
|
||||
SOURCES ${ROBOT_SOURCES}
|
||||
CLONENAMES ${ROBOT_CLONES})
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION 3.3.0 SOVERSION 1.0.0
|
||||
INTERFACE ${ROBOT_INTERFACE}
|
||||
SOURCES ${ROBOT_SOURCES}
|
||||
CLONENAMES ${ROBOT_CLONES})
|
||||
|
||||
# The data associated to the ubiquitous robot module and its clones.
|
||||
# simplix
|
||||
|
|
|
@ -38,7 +38,7 @@ SET(ROBOT_SOURCES
|
|||
# Official-only USR instances.
|
||||
SET(ROBOT_CLONES usr_trb1 usr_sc usr_ls1 usr_ls2 usr_36GP usr_rs)
|
||||
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME}
|
||||
ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION 3.0.0 SOVERSION 1.0.0
|
||||
INTERFACE ${ROBOT_INTERFACE}
|
||||
SOURCES ${ROBOT_SOURCES}
|
||||
CLONENAMES ${ROBOT_CLONES})
|
||||
|
|
|
@ -22,6 +22,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(learning SHARED ${LEARNING_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(learning PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(WIN32)
|
||||
SD_INSTALL_FILES(BIN TARGETS learning)
|
||||
ELSE(WIN32)
|
||||
|
|
|
@ -37,6 +37,8 @@ ENDIF(COMMAND CMAKE_POLICY)
|
|||
|
||||
ADD_LIBRARY(raceengine SHARED ${RACEENGINE_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(raceengine PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_SDLIB_LIBRARY(raceengine
|
||||
tgf tgfdata robottools
|
||||
networking)
|
||||
|
|
|
@ -25,6 +25,8 @@ ENDIF(COMMAND CMAKE_POLICY)
|
|||
|
||||
ADD_LIBRARY(robottools SHARED ${ROBOTTOOLS_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(robottools PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_PLIB_LIBRARY(robottools sg ul)
|
||||
ADD_SDLIB_LIBRARY(robottools tgf)
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(tgf SHARED ${TGF_HEADERS} ${TGF_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(tgf PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
ADD_LIBRARY(tgf_static STATIC ${TGF_HEADERS} ${TGF_SOURCES})
|
||||
ENDIF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
|
|
|
@ -35,6 +35,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(tgfclient SHARED ${TGFCLIENT_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(tgfclient PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_PLIB_LIBRARY(tgfclient ul sg sl)
|
||||
ADD_SDLIB_LIBRARY(tgfclient tgf networking)
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@ ENDIF(COMMAND CMAKE_POLICY)
|
|||
|
||||
ADD_LIBRARY(tgfdata SHARED ${TGFDATA_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(tgfdata PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
ADD_LIBRARY(tgfdata_static STATIC ${TGFDATA_SOURCES})
|
||||
ENDIF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
|
|
|
@ -40,6 +40,8 @@ ENDIF(COMMAND CMAKE_POLICY)
|
|||
|
||||
ADD_LIBRARY(txml SHARED ${TXML_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(txml PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
ADD_LIBRARY(txml_static STATIC ${TXML_SOURCES})
|
||||
ENDIF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
|
|
|
@ -40,6 +40,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(ssggraph SHARED ${SSGGRAPH_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(ssggraph PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(ssggraph PROPERTIES PREFIX "")
|
||||
ENDIF(UNIX)
|
||||
|
|
|
@ -11,6 +11,8 @@ endif(COMMAND cmake_policy)
|
|||
|
||||
ADD_LIBRARY(networking SHARED ${SD_NETWORK_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(networking PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_INTERFACE_INCLUDEDIR()
|
||||
ADD_SDL_INCLUDEDIR()
|
||||
ADD_SDLIB_INCLUDEDIR(networking portability tgf math)
|
||||
|
|
|
@ -45,6 +45,8 @@ INCLUDE_DIRECTORIES(SOLID-2.0/include)
|
|||
|
||||
ADD_LIBRARY(simuv2.1 SHARED ${SIMU_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(simuv2.1 PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_SDLIB_LIBRARY(simuv2.1 tgf robottools solid)
|
||||
|
||||
IF(UNIX)
|
||||
|
|
|
@ -24,6 +24,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(simuv2 SHARED ${_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(simuv2 PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_SDLIB_LIBRARY(simuv2 tgf robottools solid)
|
||||
|
||||
IF(UNIX)
|
||||
|
|
|
@ -24,6 +24,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(simuv3 SHARED ${_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(simuv3 PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
ADD_SDLIB_LIBRARY(simuv3 tgf robottools solid)
|
||||
|
||||
IF(UNIX)
|
||||
|
|
|
@ -6,6 +6,9 @@ ADD_INTERFACE_INCLUDEDIR()
|
|||
ADD_SDLIB_INCLUDEDIR(tgf portability)
|
||||
|
||||
ADD_LIBRARY(telemetry SHARED ${TELEMETRY_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(telemetry PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(telemetry PROPERTIES PREFIX "")
|
||||
ENDIF(UNIX)
|
||||
|
|
|
@ -17,6 +17,8 @@ ENDIF(WIN32)
|
|||
|
||||
ADD_LIBRARY(track SHARED ${TRACK_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(track PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(track PROPERTIES PREFIX "")
|
||||
ENDIF(UNIX)
|
||||
|
|
|
@ -65,6 +65,8 @@ ENDIF(COMMAND CMAKE_POLICY)
|
|||
|
||||
ADD_LIBRARY(legacymenu SHARED ${LEGACYMENU_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(legacymenu PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(legacymenu PROPERTIES PREFIX "")
|
||||
ENDIF(UNIX)
|
||||
|
|
|
@ -24,6 +24,8 @@ ENDIF(COMMAND CMAKE_POLICY)
|
|||
|
||||
ADD_LIBRARY(textonly SHARED ${_SOURCES})
|
||||
|
||||
SET_TARGET_PROPERTIES(textonly PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0)
|
||||
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(textonly PROPERTIES PREFIX "")
|
||||
ENDIF(UNIX)
|
||||
|
|
Loading…
Reference in a new issue