diff --git a/CMakeLists.txt b/CMakeLists.txt index 73de6c25..f4aa8680 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -154,16 +154,15 @@ IF( ${EXV_HAVE_STDINT_H} ) ADD_DEFINITIONS( -DEXV_HAVE_STDINT_H ) ENDIF( ${EXV_HAVE_STDINT_H} ) -ADD_SUBDIRECTORY( xmpsdk ) -ADD_SUBDIRECTORY( src ) - -IF( EXIV2_ENABLE_BUILD_SAMPLES ) - ADD_SUBDIRECTORY( samples ) -ENDIF( EXIV2_ENABLE_BUILD_SAMPLES ) - -IF( EXIV2_ENABLE_BUILD_PO ) - ADD_SUBDIRECTORY( po ) -ENDIF( EXIV2_ENABLE_BUILD_PO ) +FIND_PACKAGE(Subversion QUIET) +SET(SVN_REVISION "0") +IF(SUBVERSION_FOUND) + IF(EXISTS "${CMAKE_SOURCE_DIR}/.svn") + Subversion_WC_INFO(${PROJECT_SOURCE_DIR} svnExiv2) + SET(SVN_REVISION "${svnExiv2_WC_REVISION}") + ENDIF() +ENDIF() +MESSAGE(STATUS "SVN version: ${SVN_REVISION}") IF( NOT MSVC ) # Issue #722: out of source builds compiled against standard include files such as /usr/local/lib/include/exiv2 @@ -177,11 +176,19 @@ IF( NOT MSVC ) IF( EXIV2_ENABLE_BUILD_PO ) EXECUTE_PROCESS( WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/po COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/src exiv2) ENDIF( EXIV2_ENABLE_BUILD_PO ) - - MESSAGE(STATUS "generating ${CMAKE_CURRENT_SOURCE_DIR}/src/svn_version.h") - EXECUTE_PROCESS( WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src COMMAND ./svn_version.sh) ENDIF() +ADD_SUBDIRECTORY( xmpsdk ) +ADD_SUBDIRECTORY( src ) + +IF( EXIV2_ENABLE_BUILD_SAMPLES ) + ADD_SUBDIRECTORY( samples ) +ENDIF( EXIV2_ENABLE_BUILD_SAMPLES ) + +IF( EXIV2_ENABLE_BUILD_PO ) + ADD_SUBDIRECTORY( po ) +ENDIF( EXIV2_ENABLE_BUILD_PO ) + ## # tests ADD_CUSTOM_TARGET(tests COMMAND make test "EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/" ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9b98e405..74500010 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -148,12 +148,19 @@ IF( EXIV2_ENABLE_PNG ) ENDIF( ZLIB_FOUND ) ENDIF( EXIV2_ENABLE_PNG ) -IF( NOT MSVC ) - SET( LIBEXIV2_HDR ${LIBEXIV2_HDR} - svn_version.h - ) +CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/svn_version.h.in + ${CMAKE_CURRENT_BINARY_DIR}/svn_version.h @ONLY) + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) + +IF( MSVC ) # to support the old VS solution builds + ADD_DEFINITIONS("-DCMAKE_BUILD_SVN") ENDIF() +SET( LIBEXIV2_HDR ${LIBEXIV2_HDR} + svn_version.h +) + ## # add xmp source if xmp is requested and xmp library not built IF( EXIV2_ENABLE_XMP ) diff --git a/src/version.hpp b/src/version.hpp index 8ab16c82..ff2535cc 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -38,7 +38,7 @@ #include // svn version has not been implemented yet for DevStudio -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !defined(CMAKE_BUILD_SVN) #define SVN_VERSION 0 #else #include "svn_version.h"