Blame view

CMakeLists.txt 2.88 KB
c4ba3bd6   Peter M. Groen   Added versioning
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)