Skip to content

Commit

Permalink
Adding version and GIT hash to build system
Browse files Browse the repository at this point in the history
- flyby: adding Version.h
  • Loading branch information
hkaiser committed Apr 4, 2019
1 parent e326831 commit e524125
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 2 deletions.
29 changes: 28 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,33 @@
# =================================================================================================

cmake_minimum_required(VERSION 3.5)
project(BlazeTensor CXX)

# Find out about BlazeTensor version
file(READ blaze_tensor/system/Version.h BLAZE_TENSOR_VERSION_FILE)

string(REGEX MATCH "#define BLAZE_TENSOR_MAJOR_VERSION ([0-9]*)"
_BLAZE_TENSOR_MAJOR_VERSION ${BLAZE_TENSOR_VERSION_FILE})
set(BLAZE_TENSOR_MAJOR_VERSION ${CMAKE_MATCH_1})

string(REGEX MATCH "#define BLAZE_TENSOR_MINOR_VERSION ([0-9]*)"
_BLAZE_TENSOR_MINOR_VERSION ${BLAZE_TENSOR_VERSION_FILE})
set(BLAZE_TENSOR_MINOR_VERSION ${CMAKE_MATCH_1})

project(BlazeTensor
LANGUAGES CXX
VERSION "${BLAZE_TENSOR_MAJOR_VERSION}.${BLAZE_TENSOR_MINOR_VERSION}")

# set minimally required C++ Standard
set(CMAKE_CXX_STANDARD 14)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# Add cmake directory
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")

# find out about Git commit hash
include(BlazeTensor_GitCommit)
message(STATUS "Configuring BlazeTensor version ${PROJECT_VERSION}")

# Set up BlazeTensor target
add_library(BlazeTensor INTERFACE)

Expand Down Expand Up @@ -68,6 +87,13 @@ if(blaze_parallelization_mode AND "${blaze_parallelization_mode}" STREQUAL "BLAZ
target_link_libraries(BlazeTensor INTERFACE ${HPX_LIBRARIES})
endif()

include(CMakePackageConfigHelpers)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/cmake/BlazeTensorConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)

install(TARGETS BlazeTensor EXPORT BlazeTensorTargets)

export(
Expand Down Expand Up @@ -99,6 +125,7 @@ install(

install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/BlazeTensorConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/BlazeTensorConfigVersion.cmake"
DESTINATION share/BlazeTensor/cmake
)

Expand Down
1 change: 1 addition & 0 deletions blaze_tensor/Blaze.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@

#include <blaze/Blaze.h>

#include <blaze_tensor/system/Version.h>
#include <blaze_tensor/Math.h>


Expand Down
78 changes: 78 additions & 0 deletions blaze_tensor/system/Version.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
//=================================================================================================
/*!
// \file blaze_tensor/system/Version.h
// \brief Header file for the current version of the Blaze library
//
// Copyright (C) 2012-2019 Klaus Iglberger - All Rights Reserved
// Copyright (C) 2018-2019 Hartmut Kaiser - All Rights Reserved
//
// This file is part of the Blaze library. You can redistribute it and/or modify it under
// the terms of the New (Revised) BSD License. Redistribution and use in source and binary
// forms, with or without modification, are permitted provided that the following conditions
// are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
// 2. 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.
// 3. Neither the names of the Blaze development group 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER OR 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.
*/
//=================================================================================================

#ifndef _BLAZE_TENSOR_SYSTEM_VERSION_H_
#define _BLAZE_TENSOR_SYSTEM_VERSION_H_


//=================================================================================================
//
// BLAZE TENSOR VERSION
//
//=================================================================================================

//*************************************************************************************************
/*!\brief Major version of the BlazeTensor library.
// \ingroup system
//
// This value corresponds to the major version of the Blaze library. For instance, for BlazeTensor
// version 0.1.0, the BLAZE_TENSOR_MAJOR_VERSION corresponds to 0.
*/
#define BLAZE_TENSOR_MAJOR_VERSION 0
//*************************************************************************************************


//*************************************************************************************************
/*!\brief Minor version of the BlazeTensor library.
// \ingroup system
//
// This value corresponds to the minor version of the Blaze library. For instance, for BlazeTensor
// version 0.1.0, the BLAZE_TENSOR_MINOR_VERSION corresponds to 1.
*/
#define BLAZE_TENSOR_MINOR_VERSION 1
//*************************************************************************************************


//*************************************************************************************************
/*!\brief Patch version of the BlazeTensor library.
// \ingroup system
//
// This value corresponds to the patch version of the BlazeTensor library. For instance, for BlazeTensor
// version 0.1.0, the BLAZE_TENSOR_PATCH_VERSION corresponds to 0.
*/
#define BLAZE_TENSOR_PATCH_VERSION 0
//*************************************************************************************************

#endif
3 changes: 2 additions & 1 deletion cmake/BlazeTensorConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
# The module defines BlazeTensor::BlazeTensor IMPORTED target

include("${CMAKE_CURRENT_LIST_DIR}/BlazeTensorTargets.cmake")
message(STATUS "Found BlazeTensor")
include("${CMAKE_CURRENT_LIST_DIR}/BlazeTensorVersionConfig.cmake")
message(STATUS "Found BlazeTensor (V${PACKAGE_VERSION})")
57 changes: 57 additions & 0 deletions cmake/BlazeTensor_GitCommit.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# =================================================================================================
#
# Copyright (C) 2012-2018 Klaus Iglberger - All Rights Reserved
# Copyright (C) 2018 Hartmut Kaiser - All Rights Reserved
#
# This file is part of the Blaze library. You can redistribute it and/or modify it under
# the terms of the New (Revised) BSD License. Redistribution and use in source and binary
# forms, with or without modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
# 2. 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.
# 3. Neither the names of the Blaze development group 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER OR 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.
#
# =================================================================================================

# if no git commit is set, try to get it from the source directory
if(NOT BLAZE_TENSOR_WITH_GIT_COMMIT OR "${BLAZE_TENSOR_WITH_GIT_COMMIT}" STREQUAL "None")

find_package(Git)

if(GIT_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" "log" "--pretty=%H" "-1" "${PROJECT_SOURCE_DIR}"
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE BLAZE_TENSOR_WITH_GIT_COMMIT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()

endif()

if(NOT BLAZE_TENSOR_WITH_GIT_COMMIT OR "${BLAZE_TENSOR_WITH_GIT_COMMIT}" STREQUAL "None")
# message(STATUS "GIT commit not found (set to 'unknown').")
set(BLAZE_TENSOR_WITH_GIT_COMMIT "unknown")
set(BLAZE_TENSOR_WITH_GIT_COMMIT_SHORT "unknown")
else()
# message(STATUS "GIT commit is ${BLAZE_TENSOR_WITH_GIT_COMMIT}.")
if(NOT BLAZE_TENSOR_WITH_GIT_COMMIT_SHORT OR "${BLAZE_TENSOR_WITH_GIT_COMMIT_SHORT}" STREQUAL "None")
string(SUBSTRING "${BLAZE_TENSOR_WITH_GIT_COMMIT}" 0 7 BLAZE_TENSOR_WITH_GIT_COMMIT_SHORT)
endif()
endif()

0 comments on commit e524125

Please sign in to comment.