aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/EthBuildInfo.cmake
blob: cbb9dd24a275a6844bc31398e87d3aaecfaa35d5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function(create_build_info NAME)

    # Set build platform; to be written to BuildInfo.h
    set(ETH_BUILD_OS "${CMAKE_SYSTEM_NAME}")

    if (CMAKE_COMPILER_IS_MINGW)
        set(ETH_BUILD_COMPILER "mingw")
    elseif (CMAKE_COMPILER_IS_MSYS)
        set(ETH_BUILD_COMPILER "msys")
    elseif (CMAKE_COMPILER_IS_GNUCXX)
        set(ETH_BUILD_COMPILER "g++")
    elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
        set(ETH_BUILD_COMPILER "msvc")
    elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
        set(ETH_BUILD_COMPILER "clang")
    elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
        set(ETH_BUILD_COMPILER "appleclang")
    else ()
        set(ETH_BUILD_COMPILER "unknown")
    endif ()

    set(ETH_BUILD_PLATFORM "${ETH_BUILD_OS}/${ETH_BUILD_COMPILER}")

    #cmake build type may be not speCified when using msvc
    if (CMAKE_BUILD_TYPE)
        set(_cmake_build_type ${CMAKE_BUILD_TYPE})
    else()
        set(_cmake_build_type "${CMAKE_CFG_INTDIR}")
    endif()

    # Generate header file containing useful build information
    add_custom_target(${NAME}_BuildInfo.h ALL
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
        COMMAND ${CMAKE_COMMAND} -DETH_SOURCE_DIR="${PROJECT_SOURCE_DIR}" -DETH_BUILDINFO_IN="${ETH_CMAKE_DIR}/templates/BuildInfo.h.in" -DETH_DST_DIR="${PROJECT_BINARY_DIR}/include/${PROJECT_NAME}" -DETH_CMAKE_DIR="${ETH_CMAKE_DIR}"
        -DETH_BUILD_TYPE="${_cmake_build_type}"
        -DETH_BUILD_OS="${ETH_BUILD_OS}"
        -DETH_BUILD_COMPILER="${ETH_BUILD_COMPILER}"
        -DETH_BUILD_PLATFORM="${ETH_BUILD_PLATFORM}"
        -DETH_BUILD_NUMBER="${BUILD_NUMBER}"
        -DETH_VERSION_SUFFIX="${VERSION_SUFFIX}"
        -DPROJECT_VERSION="${PROJECT_VERSION}"
        -P "${ETH_SCRIPTS_DIR}/buildinfo.cmake"
        )
    include_directories(BEFORE ${PROJECT_BINARY_DIR})
endfunction()