CMakeLists.txt
2.88 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- mode:cmake -*-
# Project to make a simple OSDEV versioned binary
cmake_minimum_required(VERSION 3.0)
project(osdevversion)
# get the directory containing this cmake script.
set( OSDEV_CURRENT_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR} )
# find python
find_package(PythonInterp REQUIRED)
if(NOT PYTHONINTERP_FOUND)
message(FATAL_ERROR "-- Python interpreter not found.")
endif()
# build option to test OSDEV Version generation
option(OPTION_BUILD_TESTS "Build Caelus Version tests ." OFF)
# check environment for locations of configurations if not default.
if(NOT OSDEV_PRODUCT_SRC_DIR)
message(FATAL_ERROR "-- ${OSDEV_PRODUCT_SRC_DIR} is not specified.")
endif()
# set OSDEV_CURRENT_CMAKE_DIR to point to product configuration folder
set(OSDEV_CONFIG_DIR ${OSDEV_CURRENT_CMAKE_DIR}/osdev_config/)
# Check HSOA Version DIR not overridden by existing environment path
if(EXISTS $ENV{OSDEV_CONFIG_DIR})
set(OSDEV_CONFIG_DIR $ENV{OSDEV_CONFIG_DIR})
endif()
if(EXISTS ${OSDEV_CONFIG_DIR})
message(STATUS "++ OSDEV_CONFIG_DIR=${OSDEV_CONFIG_DIR}")
else()
message(FATAL_ERROR "-- ${OSDEV_CONFIG_DIR} does not exist")
endif()
# check for product configuration in environment, otherwise set to default
if(ENV{OSDEV_VERSION_PRODUCT_CONFIG})
set(OSDEV_VERSION_PRODUCT_CONFIG $ENV{OSDEV_VERSION_PRODUCT_CONFIG})
elseif(OSDEV_VERSION_PRODUCT_CONFIG)
set(ENV{OSDEV_VERSION_PRODUCT_CONFIG} ${OSDEV_VERSION_PRODUCT_CONFIG})
else()
set(ENV{OSDEV_VERSION_PRODUCT_CONFIG} ${OSDEV_CONFIG_DIR}/product_config.txt)
set(OSDEV_VERSION_PRODUCT_CONFIG $ENV{OSDEV_VERSION_PRODUCT_CONFIG})
endif()
# check product configuration file exists.
if(EXISTS ${OSDEV_VERSION_PRODUCT_CONFIG})
message(STATUS "++ OSDEV_VERSION_PRODUCT_CONFIG=${OSDEV_VERSION_PRODUCT_CONFIG}")
else()
message(FATAL_ERROR "-- ${OSDEV_VERSION_PRODUCT_CONFIG} does not exist")
endif()
# set default target paths for header file
set(OSDEV_VERSION_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/osdev_version/)
set(OSDEV_VERSION_HEADER_DIR ${CMAKE_CURRENT_BINARY_DIR}/osdev_version/)
set(OSDEV_VERSION_GENSCRIPT ${OSDEV_CURRENT_CMAKE_DIR}/osdev_create_version_include.sh)
if(NOT EXISTS ${OSDEV_VERSION_HEADER_FILE})
message(STATUS "Creating dir ${OSDEV_VERSION_HEADER_DIR}")
FILE(MAKE_DIRECTORY ${OSDEV_VERSION_HEADER_DIR})
EXECUTE_PROCESS(
COMMAND ${VERSION_GENSCRIPT} ${OSDEV_VERSION_CUSTOMER} ${OSDEV_VERSION_HEADER_DIR}
WORKING_DIRECORY ${OSDEV_PRODUCT_SRC_DIR}
COMMENT "First run of version header generator")
endif()
execute_process(
COMMAND ${OSDEV_VERSION_GENSCRIPT} ${OSDEV_PRODUCT_SRC_DIR} ${OSDEV_VERSION_HEADER_DIR}
WORKING_DIRECORY ${OSDEV_PRODUCT_SRC_DIR}
)
include( ${OSDEV_VERSION_HEADER_DIR}/osdev_version.cmake )
set(OSDEV_VERSION_INCLUDE_DIR ${OSDEV_VERSION_HEADER_DIR} CACHE STRING "osdev version include dir" FORCE)
set(OSDEV_VERSION_SRC_FILE ${OSDEV_VERSION_HEADER_DIR}/osdev_version.cpp CACHE STRING "osdev version src file" FORCE)