summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.bzrignore1
-rw-r--r--CMakeLists.txt9
-rw-r--r--cmake/FindBAZAAR.cmake83
-rw-r--r--cmake/build.cmake82
-rw-r--r--pcilib/CMakeLists.txt8
-rw-r--r--pcilib/build.h.in7
-rw-r--r--pcitool/CMakeLists.txt6
-rw-r--r--pcitool/buildinfo.c12
-rw-r--r--pcitool/buildinfo.h6
-rw-r--r--pcitool/cli.c21
10 files changed, 219 insertions, 16 deletions
diff --git a/.bzrignore b/.bzrignore
index fdc70db..39cf710 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -31,3 +31,4 @@ pcitool/pci
version.h
Doxyfile
html
+pcilib/build.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63bdeb3..46a35b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -59,8 +59,17 @@ add_definitions("-fPIC --std=c99 -Wall -O2 -gdwarf-2 -g3 -fno-omit-frame-pointer
#add_definitions("-fPIC --std=c99 -Wall -O2")
include(cmake/version.cmake)
+
VERSION_TO_VARS(${PCILIB_VERSION} PCILIB_VERSION_MAJOR PCILIB_VERSION_MINOR PCILIB_VERSION_MICRO)
+add_custom_target(build)
+add_custom_command(TARGET build
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/build.cmake
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+)
+set_source_files_properties(${CMAKE_BINARY_DIR}/pcilib/build.h PROPERTIES GENERATED TRUE)
+
+
set(TARNAME "pcitool")
set(PACKAGE_VERSION ${PCILIB_VERSION})
set(PACKAGE_NAME "${TARNAME}")
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 <stambaughw@verizon.net>
+# 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)
diff --git a/pcilib/CMakeLists.txt b/pcilib/CMakeLists.txt
index cdc9c3f..a7557b7 100644
--- a/pcilib/CMakeLists.txt
+++ b/pcilib/CMakeLists.txt
@@ -8,10 +8,10 @@ include_directories(
${UTHASH_INCLUDE_DIRS}
)
-set(HEADERS pcilib.h pci.h datacpy.h memcpy.h pagecpy.h cpu.h timing.h export.h value.h bar.h fifo.h model.h bank.h register.h view.h property.h unit.h xml.h py.h kmem.h irq.h locking.h lock.h dma.h event.h plugin.h tools.h error.h debug.h env.h version.h config.h)
-add_library(pcilib SHARED pci.c datacpy.c memcpy.c pagecpy.c cpu.c timing.c export.c value.c bar.c fifo.c model.c bank.c register.c view.c unit.c property.c xml.c py.c kmem.c irq.c locking.c lock.c dma.c event.c plugin.c tools.c error.c debug.c env.c )
+set(HEADERS pcilib.h pci.h datacpy.h memcpy.h pagecpy.h cpu.h timing.h export.h value.h bar.h fifo.h model.h bank.h register.h view.h property.h unit.h xml.h py.h kmem.h irq.h locking.h lock.h dma.h event.h plugin.h tools.h error.h debug.h env.h version.h config.h build.h)
+add_library(pcilib SHARED pci.c datacpy.c memcpy.c pagecpy.c cpu.c timing.c export.c value.c bar.c fifo.c model.c bank.c register.c view.c unit.c property.c xml.c py.c kmem.c irq.c locking.c lock.c dma.c event.c plugin.c tools.c error.c debug.c env.c)
target_link_libraries(pcilib dma protocols views ${CMAKE_THREAD_LIBS_INIT} ${UFODECODE_LIBRARIES} ${CMAKE_DL_LIBS} ${EXTRA_SYSTEM_LIBS} ${LIBXML2_LIBRARIES} ${PYTHON_LIBRARIES})
-add_dependencies(pcilib dma protocols views)
+add_dependencies(pcilib build dma protocols views)
install(TARGETS pcilib
LIBRARY DESTINATION lib${LIB_SUFFIX}
@@ -23,4 +23,4 @@ install(FILES pcilib.h
install(FILES bar.h kmem.h locking.h lock.h bank.h register.h xml.h dma.h event.h model.h error.h debug.h env.h tools.h timing.h cpu.h datacpy.h pagecpy.h memcpy.h export.h version.h view.h unit.h
DESTINATION include/pcilib
-)
+) \ No newline at end of file
diff --git a/pcilib/build.h.in b/pcilib/build.h.in
new file mode 100644
index 0000000..1713378
--- /dev/null
+++ b/pcilib/build.h.in
@@ -0,0 +1,7 @@
+#define PCILIB_REVISION "${PCILIB_REVISION}"
+#define PCILIB_REVISION_BRANCH "${PCILIB_REVISION_BRANCH}"
+#define PCILIB_REVISION_AUTHOR "${PCILIB_REVISION_AUTHOR}"
+#define PCILIB_REVISION_MODIFICATIONS "${PCILIB_REVISION_MODIFICATIONS}"
+#define PCILIB_BUILD_DATE "${PCILIB_BUILD_DATE}"
+#define PCILIB_BUILD_DIR "${CMAKE_SOURCE_DIR}"
+#define PCILIB_LAST_MODIFICATION "${PCILIB_LAST_MODIFICATION}"
diff --git a/pcitool/CMakeLists.txt b/pcitool/CMakeLists.txt
index 2f3639f..d8b5a6c 100644
--- a/pcitool/CMakeLists.txt
+++ b/pcitool/CMakeLists.txt
@@ -13,9 +13,9 @@ link_directories(
)
if (NOT DISABLE_PCITOOL)
- add_executable(pci cli.c sysinfo.c formaters.c)
- set(HEADERS ${HEADERS} sysinfo.h formaters.h)
- add_dependencies(pci pcilib)
+ set(HEADERS ${HEADERS} sysinfo.h formaters.h buildinfo.h)
+ add_executable(pci cli.c sysinfo.c formaters.c buildinfo.c)
+ add_dependencies(pci build pcilib)
target_link_libraries(pci pcilib ${FASTWRITER_LIBRARIES})
set_target_properties(pci PROPERTIES
LINK_FLAGS "${CMAKE_THREAD_LIBS_INIT} ${EXTRA_SYSTEM_LIBS}"
diff --git a/pcitool/buildinfo.c b/pcitool/buildinfo.c
new file mode 100644
index 0000000..624a934
--- /dev/null
+++ b/pcitool/buildinfo.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <string.h>
+#include "pcilib/build.h"
+
+void BuildInfo() {
+ printf("\n");
+ printf("Revision: %s built on %s in %s\n", PCILIB_REVISION, PCILIB_BUILD_DATE, PCILIB_BUILD_DIR);
+ printf("Branch: %s by %s\n", PCILIB_REVISION_BRANCH, PCILIB_REVISION_AUTHOR);
+ if (strlen(PCILIB_REVISION_MODIFICATIONS)) {
+ printf("Modifications: %s - %s\n", PCILIB_LAST_MODIFICATION, PCILIB_REVISION_MODIFICATIONS);
+ }
+}
diff --git a/pcitool/buildinfo.h b/pcitool/buildinfo.h
new file mode 100644
index 0000000..5157a24
--- /dev/null
+++ b/pcitool/buildinfo.h
@@ -0,0 +1,6 @@
+#ifndef _PCITOOL_BUILDINFO_H
+#define _PCITOOL_BUILDINFO_H
+
+void BuildInfo();
+
+#endif /* _PCITOOL_BUILDINFO_H */ \ No newline at end of file
diff --git a/pcitool/cli.c b/pcitool/cli.c
index 4d5d3d5..bb3d9b8 100644
--- a/pcitool/cli.c
+++ b/pcitool/cli.c
@@ -31,18 +31,19 @@
#include "pcitool/sysinfo.h"
#include "pcitool/formaters.h"
+#include "pcitool/buildinfo.h"
#include "views/transform.h"
#include "views/enum.h"
-#include "pci.h"
-#include "plugin.h"
-#include "config.h"
-#include "tools.h"
-#include "kmem.h"
-#include "error.h"
-#include "debug.h"
-#include "model.h"
-#include "locking.h"
+#include "pcilib/pci.h"
+#include "pcilib/plugin.h"
+#include "pcilib/config.h"
+#include "pcilib/tools.h"
+#include "pcilib/kmem.h"
+#include "pcilib/error.h"
+#include "pcilib/debug.h"
+#include "pcilib/model.h"
+#include "pcilib/locking.h"
/* defines */
#define MAX_KBUF 14
@@ -895,6 +896,8 @@ void Version(pcilib_t *handle, const pcilib_model_description_t *model_info) {
PCILIB_VERSION_GET_MICRO(version)
);
}
+
+ BuildInfo();
}
void Info(pcilib_t *handle, const pcilib_model_description_t *model_info, const char *target) {