]> git.mxchange.org Git - flightgear.git/blobdiff - CMakeModules/FindSvnClient.cmake
Fix Mac data dir finding.
[flightgear.git] / CMakeModules / FindSvnClient.cmake
index 4b5e21a5de3de29d02e9e4c625b39948491147f4..724dcff5fdebbf9c42a4a9483575654ba891e0d6 100644 (file)
@@ -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)