From 0e12e11ed817d66ff1e9246a32931e14e4fa6700 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Thu, 4 Feb 2016 01:18:33 +0100 Subject: Add build information --- cmake/FindBAZAAR.cmake | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ cmake/build.cmake | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 cmake/FindBAZAAR.cmake create mode 100644 cmake/build.cmake (limited to 'cmake') diff --git a/cmake/FindBAZAAR.cmake b/cmake/FindBAZAAR.cmake new file mode 100644 index 0000000..ad7b76b --- /dev/null +++ b/cmake/FindBAZAAR.cmake @@ -0,0 +1,83 @@ +# +# This program source code file is part of KICAD, a free EDA CAD application. +# +# Copyright (C) 2010 Wayne Stambaugh +# Copyright (C) 2010 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 +# +# This CMake script finds the BAZAAR version control system executable and +# and fetches the veresion string to valid that BAZAAR was found and executes +# properly. +# +# Usage: +# find_package( BAZAAR ) +# +# User definable. +# BAZAAR_EXECUTABLE Set this to use a version of BAZAAR that is not in +# current path. Defaults to bzr. +# +# Defines: +# BAZAAR_FOUND Set to TRUE if BAZAAR command line client is found +# and the bzr --version command executes properly. +# BAZAAR_VERSION Result of the bzr --version command. +# + +set( BAZAAR_FOUND FALSE ) + +find_program( BAZAAR_EXECUTABLE bzr + DOC "BAZAAR version control system command line client" ) +mark_as_advanced( BAZAAR_EXECUTABLE ) + +if( BAZAAR_EXECUTABLE ) + + # BAZAAR commands should be executed with the C locale, otherwise + # the message (which are parsed) may be translated causing the regular + # expressions to fail. + set( _BAZAAR_SAVED_LC_ALL "$ENV{LC_ALL}" ) + set( ENV{LC_ALL} C ) + + # Fetch the BAZAAR executable version. + execute_process( COMMAND ${BAZAAR_EXECUTABLE} --version + OUTPUT_VARIABLE _bzr_version_output + ERROR_VARIABLE _bzr_version_error + RESULT_VARIABLE _bzr_version_result + OUTPUT_STRIP_TRAILING_WHITESPACE ) + + if( ${_bzr_version_result} EQUAL 0 ) + set( BAZAAR_FOUND TRUE ) + string( REGEX REPLACE "^[\n]*Bazaar \\(bzr\\) ([0-9.a-z]+).*" + "\\1" BAZAAR_VERSION "${_bzr_version_output}" ) + if( NOT BAZAAR_FIND_QUIETLY ) + message( STATUS "BAZAAR version control system version ${BAZAAR_VERSION} found." ) + endif() + endif() + + # restore the previous LC_ALL + set( ENV{LC_ALL} ${_BAZAAR_SAVED_LC_ALL} ) +endif() + +if( NOT BAZAAR_FOUND ) + if( NOT BAZAAR_FIND_QUIETLY ) + message( STATUS "BAZAAR version control command line client was not found." ) + else() + if( BAZAAR_FIND_REQUIRED ) + message( FATAL_ERROR "BAZAAR version control command line client was not found." ) + endif() + endif() +endif() diff --git a/cmake/build.cmake b/cmake/build.cmake new file mode 100644 index 0000000..3043014 --- /dev/null +++ b/cmake/build.cmake @@ -0,0 +1,82 @@ +cmake_minimum_required(VERSION 2.6) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/") + +find_package(BAZAAR QUIET) + +set(PCILIB_BUILD_DATE "") +set(PCILIB_LAST_MODIFICATION "") +set(PCILIB_REVISION "0") +set(PCILIB_REVISION_BRANCH "") +set(PCILIB_REVISION_AUTHOR "") +set(PCILIB_REVISION_MODIFICATIONS "") + +execute_process( + COMMAND date "+%Y/%m/%d %H:%M:%S" + RESULT_VARIABLE _retcode + OUTPUT_VARIABLE _output + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +if (${_retcode} EQUAL 0) + set(PCILIB_BUILD_DATE ${_output}) +endif (${_retcode} EQUAL 0) + +execute_process( + COMMAND find ${CMAKE_SOURCE_DIR} -type f -name *.[ch] -printf "%TY/%Tm/%Td %TH:%TM:%TS %p\n" + COMMAND sort -n + COMMAND grep -E -v "build.h|config.h|CMakeFiles|./apps" + COMMAND tail -n 1 + COMMAND cut -d " " -f 1-2 + COMMAND cut -d "." -f 1 + RESULT_VARIABLE _retcode + OUTPUT_VARIABLE _output + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +if (${_retcode} EQUAL 0) + set(PCILIB_LAST_MODIFICATION ${_output}) +endif (${_retcode} EQUAL 0) + +if (BAZAAR_FOUND) + execute_process( + COMMAND ${BAZAAR_EXECUTABLE} revno --tree ${CMAKE_SOURCE_DIR} + RESULT_VARIABLE _retcode + OUTPUT_VARIABLE _output + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if (${_retcode} EQUAL 0) + set(PCILIB_REVISION ${_output}) + + execute_process( + COMMAND ${BAZAAR_EXECUTABLE} log -r${PCILIB_REVISION} ${CMAKE_SOURCE_DIR} + RESULT_VARIABLE _retcode + OUTPUT_VARIABLE _output + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if (${_retcode} EQUAL 0) + string(REGEX REPLACE "^(.*\n)?committer: ([^\n]+).*" + "\\2" PCILIB_REVISION_AUTHOR "${_output}" ) + string(REGEX REPLACE "^(.*\n)?branch nick: ([^\n]+).*" + "\\2" PCILIB_REVISION_BRANCH "${_output}" ) + endif (${_retcode} EQUAL 0) + endif (${_retcode} EQUAL 0) + + execute_process( + COMMAND ${BAZAAR_EXECUTABLE} status -SV + COMMAND cut -c 5- + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + RESULT_VARIABLE _retcode + OUTPUT_VARIABLE _output + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if (${_retcode} EQUAL 0) + string(REGEX REPLACE "\n+" ";" PCILIB_REVISION_MODIFICATIONS ${_output}) +# set(PCILIB_REVISION_MODIFICATIONS ${_output}) + endif (${_retcode} EQUAL 0) +endif(BAZAAR_FOUND) + +configure_file(${CMAKE_SOURCE_DIR}/pcilib/build.h.in ${CMAKE_BINARY_DIR}/pcilib/build.h) -- cgit v1.2.3 From 4f5185b37980bdf962ff7058e9f8fbb06098386c Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Thu, 4 Feb 2016 02:13:02 +0100 Subject: Report information about driver revision and build --- .bzrignore | 1 + cmake/build.cmake | 2 +- driver/Makefile | 11 +++++++++++ driver/base.c | 11 ++++++++++- 4 files changed, 23 insertions(+), 2 deletions(-) (limited to 'cmake') diff --git a/.bzrignore b/.bzrignore index 39cf710..3c1afaa 100644 --- a/.bzrignore +++ b/.bzrignore @@ -32,3 +32,4 @@ version.h Doxyfile html pcilib/build.h +build.h diff --git a/cmake/build.cmake b/cmake/build.cmake index 3043014..ffddf82 100644 --- a/cmake/build.cmake +++ b/cmake/build.cmake @@ -23,7 +23,7 @@ if (${_retcode} EQUAL 0) endif (${_retcode} EQUAL 0) execute_process( - COMMAND find ${CMAKE_SOURCE_DIR} -type f -name *.[ch] -printf "%TY/%Tm/%Td %TH:%TM:%TS %p\n" + COMMAND find ${CMAKE_SOURCE_DIR} -type f -name "*.[ch]" -printf "%TY/%Tm/%Td %TH:%TM:%TS %p\n" COMMAND sort -n COMMAND grep -E -v "build.h|config.h|CMakeFiles|./apps" COMMAND tail -n 1 diff --git a/driver/Makefile b/driver/Makefile index f2c993e..c26a84a 100644 --- a/driver/Makefile +++ b/driver/Makefile @@ -29,6 +29,17 @@ default: else \ CC=$(CC) ;\ fi ;\ + build_revision=`bzr revno` ;\ + build_author=`bzr log -r$$build_revision | grep committer | cut -c 12-` ;\ + build_path=`pwd` ;\ + build_branch=`bzr nick` ;\ + build_lastmod=`find . -type f -name '*.[ch]' -printf '%TY/%Tm/%Td %TH:%TM:%TS %p\n' | grep -E -v 'build.h|mod.c' | sort -n | tail -n 1 | cut -d ' ' -f 1-2 | cut -d '.' -f 1` ;\ + build_changes=`bzr status -SV | cut -c 5- | tr \\\n " "` ;\ + build_user=`whoami` ;\ + build_date=`date "+%Y/%m/%d %H:%M:%S"` ;\ + build="Built at $$build_date by $$build_user" ;\ + revision="Revision $$build_revision from $$build_branch by $$build_author at $$build_path, last modification from $$build_lastmod" ;\ + echo -e "#define PCIDRIVER_BUILD \"$$build\"\\n#define PCIDRIVER_REVISION \"$$revision\"\\n#define PCIDRIVER_CHANGES \"$$build_changes\"\\n" > build.h ;\ $(MAKE) $(CFLAGS) -C $(KERNELDIR) M=$(PWD) CC=$$CC modules install: diff --git a/driver/base.c b/driver/base.c index 2768f9e..bc9ab98 100644 --- a/driver/base.c +++ b/driver/base.c @@ -164,6 +164,8 @@ #include #include +#include "../pcilib/version.h" + /* Configuration for the driver (what should be compiled in, module name, etc...) */ #include "config.h" @@ -190,6 +192,8 @@ #include "ioctl.h" +#include "build.h" + /*************************************************************************/ /* Module device table associated with this driver */ MODULE_DEVICE_TABLE(pci, pcidriver_ids); @@ -240,7 +244,12 @@ static int __init pcidriver_init(void) goto init_pcireg_fail; } - mod_info("Module loaded\n"); + mod_info("pcidriver %u.%u.%u loaded\n", PCILIB_VERSION_GET_MAJOR(PCILIB_VERSION), PCILIB_VERSION_GET_MINOR(PCILIB_VERSION), PCILIB_VERSION_GET_MICRO(PCILIB_VERSION)); + mod_info("%s\n", PCIDRIVER_BUILD); + mod_info("%s\n", PCIDRIVER_REVISION); + if (strlen(PCIDRIVER_CHANGES)) { + mod_info("Extra changes - %s\n", PCIDRIVER_CHANGES); + } return 0; -- cgit v1.2.3 From ab0797327e5b7cf4c4710ce7d2fff533ba405507 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Thu, 4 Feb 2016 02:46:51 +0100 Subject: Fix build system --- CMakeLists.txt | 4 ++-- cmake/build.cmake | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) (limited to 'cmake') diff --git a/CMakeLists.txt b/CMakeLists.txt index 46a35b3..fcd82b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,8 +64,8 @@ VERSION_TO_VARS(${PCILIB_VERSION} PCILIB_VERSION_MAJOR PCILIB_VERSION_MINOR PCIL add_custom_target(build) add_custom_command(TARGET build - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/build.cmake - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND ${CMAKE_COMMAND} -DPCILIB_SOURCE_DIR=${CMAKE_SOURCE_DIR} -DPCILIB_BINARY_DIR=${CMAKE_BINARY_DIR} -P ${CMAKE_SOURCE_DIR}/cmake/build.cmake + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) set_source_files_properties(${CMAKE_BINARY_DIR}/pcilib/build.h PROPERTIES GENERATED TRUE) diff --git a/cmake/build.cmake b/cmake/build.cmake index ffddf82..94eb4c1 100644 --- a/cmake/build.cmake +++ b/cmake/build.cmake @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/") +list(APPEND CMAKE_MODULE_PATH "${PCILIB_SOURCE_DIR}/cmake/") find_package(BAZAAR QUIET) @@ -23,7 +23,7 @@ if (${_retcode} EQUAL 0) endif (${_retcode} EQUAL 0) execute_process( - COMMAND find ${CMAKE_SOURCE_DIR} -type f -name "*.[ch]" -printf "%TY/%Tm/%Td %TH:%TM:%TS %p\n" + COMMAND find ${PCILIB_SOURCE_DIR} -type f -name "*.[ch]" -printf "%TY/%Tm/%Td %TH:%TM:%TS %p\n" COMMAND sort -n COMMAND grep -E -v "build.h|config.h|CMakeFiles|./apps" COMMAND tail -n 1 @@ -40,7 +40,7 @@ endif (${_retcode} EQUAL 0) if (BAZAAR_FOUND) execute_process( - COMMAND ${BAZAAR_EXECUTABLE} revno --tree ${CMAKE_SOURCE_DIR} + COMMAND ${BAZAAR_EXECUTABLE} revno --tree ${PCILIB_SOURCE_DIR} RESULT_VARIABLE _retcode OUTPUT_VARIABLE _output OUTPUT_STRIP_TRAILING_WHITESPACE @@ -50,24 +50,25 @@ if (BAZAAR_FOUND) set(PCILIB_REVISION ${_output}) execute_process( - COMMAND ${BAZAAR_EXECUTABLE} log -r${PCILIB_REVISION} ${CMAKE_SOURCE_DIR} + COMMAND ${BAZAAR_EXECUTABLE} log -r${PCILIB_REVISION} ${PCILIB_SOURCE_DIR} RESULT_VARIABLE _retcode OUTPUT_VARIABLE _output OUTPUT_STRIP_TRAILING_WHITESPACE ) if (${_retcode} EQUAL 0) + set(_last_output ${_output}) string(REGEX REPLACE "^(.*\n)?committer: ([^\n]+).*" - "\\2" PCILIB_REVISION_AUTHOR "${_output}" ) + "\\2" PCILIB_REVISION_AUTHOR "${_last_output}" ) string(REGEX REPLACE "^(.*\n)?branch nick: ([^\n]+).*" - "\\2" PCILIB_REVISION_BRANCH "${_output}" ) + "\\2" PCILIB_REVISION_BRANCH "${_last_output}" ) endif (${_retcode} EQUAL 0) endif (${_retcode} EQUAL 0) execute_process( COMMAND ${BAZAAR_EXECUTABLE} status -SV COMMAND cut -c 5- - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${PCILIB_SOURCE_DIR} RESULT_VARIABLE _retcode OUTPUT_VARIABLE _output OUTPUT_STRIP_TRAILING_WHITESPACE @@ -79,4 +80,4 @@ if (BAZAAR_FOUND) endif (${_retcode} EQUAL 0) endif(BAZAAR_FOUND) -configure_file(${CMAKE_SOURCE_DIR}/pcilib/build.h.in ${CMAKE_BINARY_DIR}/pcilib/build.h) +configure_file(${PCILIB_SOURCE_DIR}/pcilib/build.h.in ${PCILIB_BINARY_DIR}/pcilib/build.h) -- cgit v1.2.3 From 055279e09c3db9429e02874ec9620b9af357c80a Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Thu, 4 Feb 2016 02:48:24 +0100 Subject: Do not complain if no changes since last revision --- cmake/build.cmake | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'cmake') diff --git a/cmake/build.cmake b/cmake/build.cmake index 94eb4c1..b0d803a 100644 --- a/cmake/build.cmake +++ b/cmake/build.cmake @@ -57,11 +57,10 @@ if (BAZAAR_FOUND) ) if (${_retcode} EQUAL 0) - set(_last_output ${_output}) string(REGEX REPLACE "^(.*\n)?committer: ([^\n]+).*" - "\\2" PCILIB_REVISION_AUTHOR "${_last_output}" ) + "\\2" PCILIB_REVISION_AUTHOR "${_output}" ) string(REGEX REPLACE "^(.*\n)?branch nick: ([^\n]+).*" - "\\2" PCILIB_REVISION_BRANCH "${_last_output}" ) + "\\2" PCILIB_REVISION_BRANCH "${_output}" ) endif (${_retcode} EQUAL 0) endif (${_retcode} EQUAL 0) @@ -75,7 +74,7 @@ if (BAZAAR_FOUND) ) if (${_retcode} EQUAL 0) - string(REGEX REPLACE "\n+" ";" PCILIB_REVISION_MODIFICATIONS ${_output}) + string(REGEX REPLACE "\n+" ";" PCILIB_REVISION_MODIFICATIONS "${_output}") # set(PCILIB_REVISION_MODIFICATIONS ${_output}) endif (${_retcode} EQUAL 0) endif(BAZAAR_FOUND) -- cgit v1.2.3