Browse Source
CMake:
CMake:
* Move svn version header creation to a macro (Unix-only for now). * Use CVS version of FindSubversion macro.pull/1/head
5 changed files with 164 additions and 29 deletions
-
25CMakeLists.txt
-
2CMakeModules/CheckFindPackageResult.cmake
-
21CMakeModules/CreateSVNVersionHeader.cmake
-
129CMakeModules/FindSubversionCVS.cmake
-
16CMakeModules/config.h.cmake
@ -0,0 +1,21 @@ |
|||
macro(create_svn_version_header) |
|||
# Include Subversion support to automagically create version header file. |
|||
find_package(SubversionCVS) |
|||
if(Subversion_FOUND) |
|||
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Kicad) |
|||
string(REGEX REPLACE "^([0-9]+)\\-([0-9]+)\\-([0-9]+).*" "\\1\\2\\3" |
|||
_kicad_svn_date ${Kicad_WC_LAST_CHANGED_DATE}) |
|||
set(KICAD_SVN_VERSION |
|||
"(${_kicad_svn_date} SVN-R${Kicad_WC_LAST_CHANGED_REV})") |
|||
|
|||
# Definition to conditionally use date and revision returned from the |
|||
# Subversion info command instead of hand coded date and revision in |
|||
# "include/build_version.h". If subversion is not found then the date |
|||
# and version information must be manually edited. |
|||
add_definitions(-DHAVE_SVN_VERSION) |
|||
|
|||
# Generate config.h. |
|||
configure_file(${CMAKE_SOURCE_DIR}/CMakeModules/config.h.cmake |
|||
${CMAKE_BINARY_DIR}/config.h) |
|||
endif(Subversion_FOUND) |
|||
endmacro(create_svn_version_header) |
|||
@ -0,0 +1,129 @@ |
|||
# CMake CVS r1.2.2.2 |
|||
# |
|||
# - Extract information from a subversion working copy |
|||
# The module defines the following variables: |
|||
# Subversion_SVN_EXECUTABLE - path to svn command line client |
|||
# Subversion_VERSION_SVN - version of svn command line client |
|||
# Subversion_FOUND - true if the command line client was found |
|||
# If the command line client executable is found the macro |
|||
# Subversion_WC_INFO(<dir> <var-prefix>) |
|||
# is defined to extract information of a subversion working copy at |
|||
# a given location. The macro defines the following variables: |
|||
# <var-prefix>_WC_URL - url of the repository (at <dir>) |
|||
# <var-prefix>_WC_ROOT - root url of the repository |
|||
# <var-prefix>_WC_REVISION - current revision |
|||
# <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit |
|||
# <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit |
|||
# <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit |
|||
# <var-prefix>_WC_LAST_CHANGED_LOG - last log of base revision |
|||
# <var-prefix>_WC_INFO - output of command `svn info <dir>' |
|||
# Example usage: |
|||
# FIND_PACKAGE(Subversion) |
|||
# IF(Subversion_FOUND) |
|||
# Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project) |
|||
# MESSAGE("Current revision is ${Project_WC_REVISION}") |
|||
# ENDIF(Subversion_FOUND) |
|||
|
|||
# Copyright (c) 2006, Tristan Carel |
|||
# All rights reserved. |
|||
# Redistribution and use in source and binary forms, with or without |
|||
# modification, are permitted provided that the following conditions are met: |
|||
# |
|||
# * Redistributions of source code must retain the above copyright |
|||
# notice, this list of conditions and the following disclaimer. |
|||
# * Redistributions in binary form must reproduce the above copyright |
|||
# notice, this list of conditions and the following disclaimer in the |
|||
# documentation and/or other materials provided with the distribution. |
|||
# * Neither the name of the University of California, Berkeley nor the |
|||
# names of its contributors may be used to endorse or promote products |
|||
# derived from this software without specific prior written permission. |
|||
# |
|||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY |
|||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|||
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY |
|||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
|||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
|||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|||
|
|||
# $Id: FindSubversion.cmake,v 1.2.2.2 2008/03/26 18:08:24 hoffman Exp $ |
|||
|
|||
SET(Subversion_FOUND FALSE) |
|||
SET(Subversion_SVN_FOUND FALSE) |
|||
|
|||
# the subversion commands should be executed with the C locale, otherwise |
|||
# the message (which are parsed) may be translated, Alex |
|||
SET(_Subversion_SAVED_LC_ALL "$ENV{LC_ALL}" ) |
|||
SET(ENV{LC_ALL} C) |
|||
SET(ENV{LANG} C) |
|||
|
|||
FIND_PROGRAM(Subversion_SVN_EXECUTABLE svn |
|||
DOC "subversion command line client") |
|||
MARK_AS_ADVANCED(Subversion_SVN_EXECUTABLE) |
|||
|
|||
IF(Subversion_SVN_EXECUTABLE) |
|||
SET(Subversion_SVN_FOUND TRUE) |
|||
SET(Subversion_FOUND TRUE) |
|||
|
|||
MACRO(Subversion_WC_INFO dir prefix) |
|||
EXECUTE_PROCESS(COMMAND ${Subversion_SVN_EXECUTABLE} --version |
|||
WORKING_DIRECTORY ${dir} |
|||
OUTPUT_VARIABLE Subversion_VERSION_SVN |
|||
OUTPUT_STRIP_TRAILING_WHITESPACE) |
|||
|
|||
EXECUTE_PROCESS(COMMAND ${Subversion_SVN_EXECUTABLE} info ${dir} |
|||
OUTPUT_VARIABLE ${prefix}_WC_INFO |
|||
ERROR_VARIABLE Subversion_svn_info_error |
|||
RESULT_VARIABLE Subversion_svn_info_result |
|||
OUTPUT_STRIP_TRAILING_WHITESPACE) |
|||
|
|||
IF(NOT ${Subversion_svn_info_result} EQUAL 0) |
|||
MESSAGE(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} info ${dir}\" failed with output:\n${Subversion_svn_info_error}") |
|||
ELSE(NOT ${Subversion_svn_info_result} EQUAL 0) |
|||
|
|||
STRING(REGEX REPLACE "^(.*\n)?svn, version ([.0-9]+).*" |
|||
"\\2" Subversion_VERSION_SVN "${Subversion_VERSION_SVN}") |
|||
STRING(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*" |
|||
"\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}") |
|||
STRING(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*" |
|||
"\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}") |
|||
STRING(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*" |
|||
"\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}") |
|||
STRING(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*" |
|||
"\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}") |
|||
STRING(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*" |
|||
"\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}") |
|||
|
|||
ENDIF(NOT ${Subversion_svn_info_result} EQUAL 0) |
|||
|
|||
EXECUTE_PROCESS(COMMAND |
|||
${Subversion_SVN_EXECUTABLE} log -r BASE ${dir} |
|||
OUTPUT_VARIABLE Subversion_LAST_CHANGED_LOG |
|||
ERROR_VARIABLE Subversion_svn_log_error |
|||
RESULT_VARIABLE Subversion_svn_log_result |
|||
OUTPUT_STRIP_TRAILING_WHITESPACE) |
|||
|
|||
IF(NOT ${Subversion_svn_log_result} EQUAL 0) |
|||
MESSAGE(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} log -r BASE ${dir}\" failed with output:\n${Subversion_svn_log_error}") |
|||
ENDIF(NOT ${Subversion_svn_log_result} EQUAL 0) |
|||
ENDMACRO(Subversion_WC_INFO) |
|||
|
|||
ENDIF(Subversion_SVN_EXECUTABLE) |
|||
|
|||
# restore the previous LC_ALL |
|||
SET(ENV{LC_ALL} ${_Subversion_SAVED_LC_ALL}) |
|||
|
|||
IF(NOT Subversion_FOUND) |
|||
IF(NOT Subversion_FIND_QUIETLY) |
|||
MESSAGE(STATUS "Subversion was not found.") |
|||
ELSE(NOT Subversion_FIND_QUIETLY) |
|||
IF(Subversion_FIND_REQUIRED) |
|||
MESSAGE(FATAL_ERROR "Subversion was not found.") |
|||
ENDIF(Subversion_FIND_REQUIRED) |
|||
ENDIF(NOT Subversion_FIND_QUIETLY) |
|||
ENDIF(NOT Subversion_FOUND) |
|||
|
|||
# FindSubversion.cmake ends here. |
|||
@ -1,8 +1,8 @@ |
|||
/* Do not modify this file, it was automatically generated by CMake */ |
|||
|
|||
#ifndef __KICAD_SVN_VERSION_H__ |
|||
#define __KICAD_SVN_VERSION_H__ |
|||
|
|||
#cmakedefine KICAD_SVN_VERSION "@KICAD_SVN_VERSION@" |
|||
|
|||
#endif /* __KICAD_SVN_VERSION_H__ */ |
|||
/* Do not modify this file, it was automatically generated by CMake */ |
|||
|
|||
#ifndef __KICAD_SVN_VERSION_H__ |
|||
#define __KICAD_SVN_VERSION_H__ |
|||
|
|||
#cmakedefine KICAD_SVN_VERSION "@KICAD_SVN_VERSION@" |
|||
|
|||
#endif /* __KICAD_SVN_VERSION_H__ */ |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue