Branch: master

38a8a335 2014-09-14 12:09:17 Francois Andriot
Fix openbsd library naming convention
Fix setup architecture flags on openbsd
M modules/TDEMacros.cmake
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake
index 61aceb3..2afde45 100644
--- a/modules/TDEMacros.cmake
+++ b/modules/TDEMacros.cmake
@@ -732,7 +732,15 @@
 
   # set version
   if( _version )
-    string( REGEX MATCH "^[0-9]+" _soversion ${_version} )
+    if( ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+      # OpenBSD: _soversion and _version both contains only major and minor
+      string( REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$" _dummy  "${_version}" )
+      set( _version  "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" )
+      set( _soversion  "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" )
+    else( ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+      # General (Linux) case: _soversion contains only the major number of version
+      string( REGEX MATCH "^[0-9]+" _soversion ${_version} )
+    endif( ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
     set_target_properties( ${_target} PROPERTIES VERSION ${_version} SOVERSION ${_soversion} )
   endif( _version )
 
@@ -1513,7 +1521,7 @@
 macro( tde_setup_architecture_flags )
   message( STATUS "Detected ${CMAKE_SYSTEM_PROCESSOR} CPU architecture" )
   ## Immediate symbol binding is available only for gcc but not on ARM architectures
-  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES arm* )
+  if( ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES arm* AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
     set( LINKER_IMMEDIATE_BINDING_FLAGS "-z\ now" CACHE INTERNAL "" FORCE )
   else( )
     set( LINKER_IMMEDIATE_BINDING_FLAGS "" CACHE INTERNAL "" FORCE )