kicad/CMakeModules/WriteVersionHeader.cmake

74 lines
2.7 KiB
CMake

#
# This program source code file is part of KICAD, a free EDA CAD application.
#
# Copyright (C) 2015 Wayne Stambaugh <stambaughw@verizon.net>
# Copyright (C) 2015 KiCad Developers, see AUTHORS.txt for contributors.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you may find one here:
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# or you may search the http://www.gnu.org website for the version 2 license,
# or you may write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
function( write_version_header _wvh_version_str_arg )
if( NOT ${_wvh_version_str_arg} )
set( _wvh_version_str ${_wvh_version_str_arg} )
else()
set( _wvh_version_str "undefined" )
endif()
set( _wvh_write_version_file ON )
# Compare the version argument against the version in the existing header file for a mismatch.
if( EXISTS ${CMAKE_BINARY_DIR}/version.h )
file( STRINGS ${CMAKE_BINARY_DIR}/version.h _current_version_str
REGEX "^#define[\t ]+KICAD_BUILD_VERSION[\t ]+.*" )
string( REGEX REPLACE "^#define KICAD_BUILD_VERSION \"([()a-zA-Z0-9 -.]+)\".*"
"\\1" _wvh_last_version "${_current_version_str}" )
# No change, do not write version.h
if( _wvh_version_str STREQUAL _wvh_last_version )
message( STATUS "Not updating ${CMAKE_BINARY_DIR}/version.h" )
set( _wvh_write_version_file OFF )
endif()
endif()
if( _wvh_write_version_file )
message( STATUS "Writing version.h file with version: ${_wvh_version_str}" )
file( WRITE ${CMAKE_BINARY_DIR}/version.h
"/* Do not modify this file, it was automatically generated by CMake. */
/*
* Define the KiCad build version string.
*/
#ifndef __KICAD_VERSION_H__
#define __KICAD_VERSION_H__
#define KICAD_BUILD_VERSION \"${_wvh_version_str}\"
#endif /* __KICAD_VERSION_H__ */
"
)
endif()
# There should always be a valid version.h file. Otherwise, the build will fail.
if( NOT EXISTS ${CMAKE_BINARY_DIR}/version.h )
message( FATAL_ERROR "Configuration failed to write file ${CMAKE_BINARY_DIR}/version.h." )
endif()
endfunction()