# # This program source code file is part of KICAD, a free EDA CAD application. # # Copyright (C) 2015 Wayne Stambaugh # 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()