X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=CMakeModules%2FFindSvnClient.cmake;h=724dcff5fdebbf9c42a4a9483575654ba891e0d6;hb=4052c45ea3ce8a6a3833aee20e1629f9db2e400c;hp=4b5e21a5de3de29d02e9e4c625b39948491147f4;hpb=65239f8f53bbe924007c7a2b954884dbf5c6c0ab;p=flightgear.git diff --git a/CMakeModules/FindSvnClient.cmake b/CMakeModules/FindSvnClient.cmake index 4b5e21a5d..724dcff5f 100644 --- a/CMakeModules/FindSvnClient.cmake +++ b/CMakeModules/FindSvnClient.cmake @@ -3,6 +3,37 @@ include (CheckFunctionExists) include (CheckIncludeFile) +include (CheckLibraryExists) + +macro(find_static_component comp libs) + # account for alternative Windows svn distribution naming + if(MSVC) + set(compLib "lib${comp}") + else(MSVC) + set(compLib "${comp}") + endif(MSVC) + + string(TOUPPER "${comp}" compLibBase) + set( compLibName ${compLibBase}_LIBRARY ) + + # NO_DEFAULT_PATH is important on Mac - we need to ensure subversion + # libraires in dist/ or Macports are picked over the Apple version + # in /usr, since that's what we will ship. + # On other platforms we do need default paths though, i.e. since Linux + # distros may use architecture-specific directories (like + # /usr/lib/x86_64-linux-gnu) which we cannot hardcode/guess here. + FIND_LIBRARY(${compLibName} +if(APPLE) + NO_DEFAULT_PATH +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 ${ADDITIONAL_LIBRARY_PATHS} + ) + + list(APPEND ${libs} ${${compLibName}}) +endmacro() find_program(HAVE_APR_CONFIG apr-1-config) if(HAVE_APR_CONFIG) @@ -16,79 +47,34 @@ if(HAVE_APR_CONFIG) OUTPUT_STRIP_TRAILING_WHITESPACE) # clean up some vars, or other CMake pieces complain - string(STRIP ${RAW_APR_LIBS} APR_LIBS) + string(STRIP "${RAW_APR_LIBS}" APR_LIBS) else(HAVE_APR_CONFIG) - FIND_LIBRARY(APR_LIBS - NAMES libapr-1 apr-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt - ) + message(STATUS "apr-1-config not found, implement manual search for APR") endif(HAVE_APR_CONFIG) -find_path(LIBSVN_INCLUDE_DIR svn_client.h - HINTS - $ENV{LIBSVN_DIR} - PATH_SUFFIXES include/subversion-1 - PATHS - /usr/local - /usr - /opt -) - -FIND_LIBRARY(SVNCLIENT_LIBRARY - NAMES libsvn_client-1 svn_client-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt -) - -FIND_LIBRARY(SVNSUBR_LIBRARY - NAMES libsvn_subr-1 svn_subr-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt -) - -FIND_LIBRARY(SVNRA_LIBRARY - NAMES libsvn_ra-1 svn_ra-1 - HINTS - PATH_SUFFIXES lib64 lib libs64 libs libs/Win32 libs/Win64 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /opt -) - -include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBSVN DEFAULT_MSG - SVNSUBR_LIBRARY - SVNCLIENT_LIBRARY - SVNRA_LIBRARY - LIBSVN_INCLUDE_DIR) - -if(LIBSVN_FOUND) - message(STATUS "LIBSVN_FOUND 1") +if(HAVE_APR_CONFIG OR MSVC) + find_path(LIBSVN_INCLUDE_DIR svn_client.h + NO_DEFAULT_PATH + HINTS + $ENV{LIBSVN_DIR} ${CMAKE_INSTALL_PREFIX} ${MSVC_3RDPARTY_ROOT}/${MSVC_3RDPARTY_DIR}/include + PATH_SUFFIXES include/subversion-1 + PATHS ${ADDITIONAL_LIBRARY_PATHS} + ) + + set(LIBSVN_LIBRARIES "") + if (MSVC) + find_static_component("apr-1" LIBSVN_LIBRARIES) + else (MSVC) + list(APPEND LIBSVN_LIBRARIES ${APR_LIBS}) + endif (MSVC) + find_static_component("svn_client-1" LIBSVN_LIBRARIES) + find_static_component("svn_subr-1" LIBSVN_LIBRARIES) + find_static_component("svn_ra-1" LIBSVN_LIBRARIES) - set(LIBSVN_LIBRARIES ${SVNCLIENT_LIBRARY} ${SVNSUBR_LIBRARY} ${SVNRA_LIBRARY} ${APR_LIBS}) -else(LIBSVN_FOUND) - message(STATUS "LIBSVN_FOUND 0") -endif(LIBSVN_FOUND) + include(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBSVN DEFAULT_MSG LIBSVN_LIBRARIES LIBSVN_INCLUDE_DIR) + if(NOT LIBSVN_FOUND) + set(LIBSVN_LIBRARIES "") + endif(NOT LIBSVN_FOUND) +endif(HAVE_APR_CONFIG OR MSVC)