Add support for the CMake "LIB_SUFFIX" convention Allows `make install` to work correctly on e.g. 64-bit systems where the native libraries are installed to /usr/lib64 Change-Id: I71b4fae7b459c003cb5fac981278c668f2e29779
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt index 43e251a..5440713 100644 --- a/internal/ceres/CMakeLists.txt +++ b/internal/ceres/CMakeLists.txt
@@ -99,6 +99,18 @@ wall_time.cc ) +# Heuristic for determining LIB_SUFFIX. FHS recommends that 64-bit systems +# install native libraries to lib64 rather than lib. Most distros seem to +# follow this convention with a couple notable exceptions (Debian-based and +# Arch-based distros) which we try to detect here. +IF (NOT DEFINED LIB_SUFFIX AND + NOT CMAKE_CROSSCOMPILING AND + ${CMAKE_SIZEOF_VOID_P} EQUAL "8" AND + NOT EXISTS "/etc/debian_version" AND + NOT EXISTS "/etc/arch-release") + SET(LIB_SUFFIX "64") +ENDIF() + If (${PROTOBUF_FOUND}) PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS matrix.proto) ENDIF (${PROTOBUF_FOUND}) @@ -125,8 +137,8 @@ INSTALL(TARGETS miniglog RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) ENDIF (${BUILD_ANDROID}) SET(CERES_LIBRARY_DEPENDENCIES ${GLOG_LIB}) @@ -182,8 +194,8 @@ INSTALL(TARGETS ceres RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) # Don't build a DLL on MSVC. Supporting Ceres as a DLL on Windows involves # nontrivial changes that we haven't made yet. @@ -196,8 +208,8 @@ INSTALL(TARGETS ceres_shared RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) ENDIF (NOT MSVC AND NOT ${BUILD_ANDROID})