From 5deec69e000d34bb93426ee3f14f4cb9731a3462 Mon Sep 17 00:00:00 2001 From: James Turner Date: Sun, 9 Jan 2011 00:15:29 +0000 Subject: [PATCH] First attempt at libsvn support in terrasync with CMake - not yet working! --- CMakeLists.txt | 12 +++++++++ CMakeModules/FindSvnClient.cmake | 46 ++++++++++++++++++++++++++++++++ src/Include/config_cmake.h.in | 3 +++ utils/TerraSync/CMakeLists.txt | 12 ++++++--- 4 files changed, 69 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 291656ed9..f3576060e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,8 @@ option(ENABLE_YASIM "Set to ON to build FlightGear with YASIM FDM" ON) option(ENABLE_JSBSIM "Set to ON to build FlightGear with JSBSim FDM" ON) option(ENABLE_FGADMIN "Set to ON to build FlightGear with FGADMIN" ON) option(EVENT_INPUT "Set to ON to build FlightGear with event-based Input support" OFF) +option(ENABLE_LIBSVN "Set to ON to build terrasync with libsvnclient support" OFF) + set(MSVC_3RDPARTY_DIR NOT_FOUND CACHE PATH "Location where the third-party dependencies are extracted") if(LOGGING) @@ -104,6 +106,16 @@ if(ENABLE_FGADMIN) find_package(FLTK) endif(ENABLE_FGADMIN) +if(ENABLE_LIBSVN) + find_package(SvnClient) + + if(LIBSVN_FOUND) + message(STATUS "libsvn found, enabling in terrasync") + set(HAVE_SVN_CLIENT_H 1) + set(HAVE_LIBSVN_CLIENT_1 1) + endif(LIBSVN_FOUND) +endif(ENABLE_LIBSVN) + find_package(PLIB REQUIRED puaux pu js fnt) find_package(SimGear 2.2.0 REQUIRED) diff --git a/CMakeModules/FindSvnClient.cmake b/CMakeModules/FindSvnClient.cmake index 383ef6f6d..51f4452bf 100644 --- a/CMakeModules/FindSvnClient.cmake +++ b/CMakeModules/FindSvnClient.cmake @@ -1,3 +1,49 @@ # Find Subversion client libraries, and dependencies # including APR (Apache Portable Runtime) +include (CheckFunctionExists) +include (CheckIncludeFile) + +find_program(HAVE_APR_CONFIG apr-1-config) +if(HAVE_APR_CONFIG) + execute_process(COMMAND apr-1-config --includes + OUTPUT_VARIABLE RAW_APR_INCLUDES + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process(COMMAND apr-1-config --cppflags + OUTPUT_VARIABLE APR_CFLAGS + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process(COMMAND apr-1-config --link-ld + OUTPUT_VARIABLE RAW_APR_LIBS + OUTPUT_STRIP_TRAILING_WHITESPACE) + +# clean up some vars, or other CMake pieces complain + string(STRIP ${RAW_APR_LIBS} APR_LIBS) + string(STRIP ${RAW_APR_INCLUDES} APR_INCLUDES) + +else(HAVE_APR_CONFIG) + 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 +) + +check_library_exists(svn_client-1 svn_client_checkout "" HAVE_LIB_SVNCLIENT) +check_library_exists(svn_subr-1 svn_cmdline_init "" HAVE_LIB_SVNSUBR) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBSVN DEFAULT_MSG HAVE_LIB_SVNSUBR + HAVE_LIB_SVNCLIENT LIBSVN_INCLUDE_DIR) + +if(LIBSVN_FOUND) + set(LIBSVN_LIBRARIES "svn_client-1" "svn_subr-1" ${APR_LIBS}) + set(LIBSVN_INCLUDE_DIRS ${LIBSVN_INCLUDE_DIR} ${APR_INCLUDES}) +endif(LIBSVN_FOUND) diff --git a/src/Include/config_cmake.h.in b/src/Include/config_cmake.h.in index 4505aa2dc..734b4dc5e 100644 --- a/src/Include/config_cmake.h.in +++ b/src/Include/config_cmake.h.in @@ -29,4 +29,7 @@ #cmakedefine ENABLE_YASIM #cmakedefine ENABLE_JSBSIM +#cmakedefine HAVE_SVN_CLIENT_H +#cmakedefine HAVE_LIBSVN_CLIENT_1 + #define PKGLIBDIR "@PKGLIBDIR" diff --git a/utils/TerraSync/CMakeLists.txt b/utils/TerraSync/CMakeLists.txt index bedc1018d..c44af48bf 100644 --- a/utils/TerraSync/CMakeLists.txt +++ b/utils/TerraSync/CMakeLists.txt @@ -1,6 +1,10 @@ -find_package(SvnClient) - +if(LIBSVN_FOUND) + message(STATUS "includes '${LIBSVN_INCLUDE_DIRS}'") + include_directories(${LIBSVN_INCLUDE_DIRS}) + add_definitions(${APR_CFLAGS}) +endif(LIBSVN_FOUND) + add_executable(terrasync terrasync.cxx) target_link_libraries(terrasync @@ -8,8 +12,8 @@ target_link_libraries(terrasync ${ZLIB_LIBRARIES} ${WINSOCK_LIBRARY}) -if(HAVE_SVN_CLIENT) - target_link_libraries(terrasync ${SVN_CLIENT_LIBRARIES}) +if(LIBSVN_FOUND) + target_link_libraries(terrasync ${LIBSVN_LIBRARIES}) endif()