From 3b6436bfb8d5cfb180f7119fd01f365d1f79528e Mon Sep 17 00:00:00 2001 From: ThorstenB Date: Sat, 1 Dec 2012 11:01:25 +0100 Subject: [PATCH] #946: some libraries not found on Ubuntu/Debian Ubuntu/Debian introduced "multiarch" library directories, which is unsupported by CMake <= 2.8.10. Add manual search paths as a workaround. Currently it is only needed for libsvn, but it is needed for any lib which is converted to the new directory standard. --- CMakeLists.txt | 33 +++++++++++++++++++++++++++++++ CMakeModules/FindPLIB.cmake | 34 +++++--------------------------- CMakeModules/FindSQLite3.cmake | 9 ++------- CMakeModules/FindSimGear.cmake | 14 +++---------- CMakeModules/FindSvnClient.cmake | 10 ++-------- CMakeModules/FindUDev.cmake | 4 +--- 6 files changed, 46 insertions(+), 58 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c472aff6f..2ad040b44 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,6 +69,39 @@ else() set(HUDSON_BUILD_ID "none") endif() +##################################################################################### +# Configure library search paths +##################################################################################### + +if(APPLE) + # Custom library directories for Mac, which should have precedence over any other + list(APPEND ADDITIONAL_LIBRARY_PATHS + ~/Library/Frameworks + /Library/Frameworks) +endif(APPLE) + +if(NOT "${CMAKE_LIBRARY_ARCHITECTURE}" STREQUAL "") + # Workaround for Ubuntu/Debian which introduced the "multiarch" library + # directory structure, which is unsupported by CMake < 2.8.10, so we need to + # add paths manually + # see http://www.cmake.org/Bug/view.php?id=12049 and + # http://www.cmake.org/Bug/view.php?id=12037 + list(APPEND ADDITIONAL_LIBRARY_PATHS + /usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE} + /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} + /lib/${CMAKE_LIBRARY_ARCHITECTURE}) + message(STATUS "additional library directories: ${ADDITIONAL_LIBRARY_PATHS}") +endif() + +if(NOT MSVC) + # TBD: are these really necessary? Aren't they considered by cmake automatically? + list(APPEND ADDITIONAL_LIBRARY_PATHS + /local + /usr/local + /usr) +endif() +##################################################################################### + IF(APPLE) set(EVENT_INPUT_DEFAULT 1) diff --git a/CMakeModules/FindPLIB.cmake b/CMakeModules/FindPLIB.cmake index 99d2780cf..b787983c1 100644 --- a/CMakeModules/FindPLIB.cmake +++ b/CMakeModules/FindPLIB.cmake @@ -23,26 +23,13 @@ # (To distributed this file outside of CMake, substitute the full # License text for the above reference.) -# Per my request, CMake should search for frameworks first in -# the following order: -# ~/Library/Frameworks/OpenAL.framework/Headers -# /Library/Frameworks/OpenAL.framework/Headers -# /System/Library/Frameworks/OpenAL.framework/Headers -# -# On OS X, this will prefer the Framework version (if found) over others. -# People will have to manually change the cache values of -# OPENAL_LIBRARY to override this selection or set the CMake environment -# CMAKE_INCLUDE_PATH to modify the search paths. - include(SelectLibraryConfigurations) set(save_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK}) set(CMAKE_FIND_FRAMEWORK ONLY) FIND_PATH(PLIB_INCLUDE_DIR ul.h PATH_SUFFIXES include/plib include - PATHS - ~/Library/Frameworks - /Library/Frameworks + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) set(CMAKE_FIND_FRAMEWORK ${save_FIND_FRAMEWORK}) @@ -50,10 +37,7 @@ if(NOT PLIB_INCLUDE_DIR) FIND_PATH(PLIB_INCLUDE_DIR plib/ul.h PATH_SUFFIXES include HINTS $ENV{PLIBDIR} - PATHS - /usr/local - /opt/local - /usr + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) endif() @@ -64,9 +48,7 @@ FIND_LIBRARY(PLIB_LIBRARIES NAMES plib PLIB HINTS $ENV{PLIBDIR} - PATHS - ~/Library/Frameworks - /Library/Frameworks + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) if (MSVC) @@ -91,19 +73,13 @@ macro(find_static_component comp libs) NAMES ${compLib}_d HINTS $ENV{PLIBDIR} PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - /usr/local - /usr - /opt + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) FIND_LIBRARY(${compLibName}_RELEASE NAMES ${compLib} HINTS $ENV{PLIBDIR} PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - /usr/local - /usr - /opt + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) select_library_configurations( ${compLibBase} ) diff --git a/CMakeModules/FindSQLite3.cmake b/CMakeModules/FindSQLite3.cmake index 225ecd1bb..5210c8b69 100644 --- a/CMakeModules/FindSQLite3.cmake +++ b/CMakeModules/FindSQLite3.cmake @@ -23,18 +23,13 @@ FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h PATH_SUFFIXES include HINTS $ENV{SQLITE3DIR} PATHS - /usr/local - /usr - /opt/local + ${ADDITIONAL_LIBRARY_PATHS} ) FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3 sqlite3 HINTS $ENV{SQLITE3DIR} PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - /usr/local - /usr - /opt/local + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) include(FindPackageHandleStandardArgs) diff --git a/CMakeModules/FindSimGear.cmake b/CMakeModules/FindSimGear.cmake index 67e373dd9..47ce3ca30 100644 --- a/CMakeModules/FindSimGear.cmake +++ b/CMakeModules/FindSimGear.cmake @@ -38,18 +38,14 @@ macro(find_sg_library libName varName libs) HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} libs64 libs libs/Win32 libs/Win64 PATHS - /usr/local - /usr - /opt + ${ADDITIONAL_LIBRARY_PATHS} ) FIND_LIBRARY(${libVarName}_RELEASE NAMES ${libName}${CMAKE_RELEASE_POSTFIX} HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES ${CMAKE_INSTALL_LIBDIR} libs64 libs libs/Win32 libs/Win64 PATHS - /usr/local - /usr - /opt + ${ADDITIONAL_LIBRARY_PATHS} ) # message(STATUS "before: Simgear ${${libVarName}_RELEASE} ") @@ -79,11 +75,7 @@ FIND_PATH(SIMGEAR_INCLUDE_DIR simgear/math/SGMath.hxx HINTS $ENV{SIMGEAR_DIR} PATH_SUFFIXES include PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt + ${ADDITIONAL_LIBRARY_PATHS} ) # make sure the simgear include directory exists diff --git a/CMakeModules/FindSvnClient.cmake b/CMakeModules/FindSvnClient.cmake index b176dc291..724dcff5f 100644 --- a/CMakeModules/FindSvnClient.cmake +++ b/CMakeModules/FindSvnClient.cmake @@ -29,10 +29,7 @@ endif(APPLE) NAMES ${compLib} HINTS $ENV{LIBSVN_DIR} ${CMAKE_INSTALL_PREFIX} ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/lib PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - /opt/local - /usr/local - /usr + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) list(APPEND ${libs} ${${compLibName}}) @@ -62,10 +59,7 @@ if(HAVE_APR_CONFIG OR MSVC) HINTS $ENV{LIBSVN_DIR} ${CMAKE_INSTALL_PREFIX} ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/include PATH_SUFFIXES include/subversion-1 - PATHS - /opt/local - /usr/local - /usr + PATHS ${ADDITIONAL_LIBRARY_PATHS} ) set(LIBSVN_LIBRARIES "") diff --git a/CMakeModules/FindUDev.cmake b/CMakeModules/FindUDev.cmake index dc363bafc..f6d2a2575 100644 --- a/CMakeModules/FindUDev.cmake +++ b/CMakeModules/FindUDev.cmake @@ -20,9 +20,7 @@ FIND_PATH( FIND_LIBRARY( UDEV_LIBRARIES NAMES udev libudev - PATHS - /usr/${CMAKE_INSTALL_LIBDIR} - /usr/local/${CMAKE_INSTALL_LIBDIR} + PATHS ${ADDITIONAL_LIBRARY_PATHS} ${UDEV_PATH_LIB} ) -- 2.39.5