blob: 4aebc03bcc2919602f521ea48089564cbd62c4ca [file] [log] [blame]
# *****************************************************************************
# Copyright (c) 2017 Intel Corporation
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# *****************************************************************************
# utility functions for cmake
if(NOT DEFINED _bs_include_base_utils)
set(_bs_include_base_utils TRUE)
# bs_set_if_undefined - If not defined, assign value from env or arg
macro(bs_set_if_undefined VAR_NAME VAR_VALUE)
if(DEFINED ${VAR_NAME} AND NOT ${VAR_NAME} STREQUAL "")
# Already defined - no action to take
elseif(DEFINED ENV{VAR_NAME} AND NOT "$ENV{VAR_NAME}" STREQUAL "")
set(${VAR_NAME} "$ENV{VAR_NAME}")
else()
set(${VAR_NAME} "${VAR_VALUE}")
endif()
endmacro()
# function bs_check_build_type - Enforce build type variable consistency
#
# Ensure that deprecated variable UFO_BUILD_TYPE has the same value as
# BUILD_TYPE.
#
# Ensure that the value of CMAKE_BUILD_TYPE is consistent with the value
# of BUILD_TYPE.
#
# QuickBuild passes in BUILD_TYPE with per-word Caps.
# The Linux makefiles force the value to lower-case.
# For consistency, the same thing is done here.
#
function(bs_check_build_type)
if(NOT DEFINED BUILD_TYPE OR "${BUILD_TYPE}" STREQUAL "")
if(DEFINED UFO_BUILD_TYPE AND NOT "${UFO_BUILD_TYPE}" STREQUAL "")
set(BUILD_TYPE "${UFO_BUILD_TYPE}")
else()
message("*BUILD_TYPE not defined, default to: release")
set(BUILD_TYPE "release")
endif()
endif()
string(TOLOWER "${BUILD_TYPE}" BUILD_TYPE)
if ("${BUILD_TYPE}" STREQUAL "release")
set(_val_cmake_build_type "Release")
elseif ("${BUILD_TYPE}" STREQUAL "release-internal")
set(_val_cmake_build_type "ReleaseInternal")
elseif ("${BUILD_TYPE}" STREQUAL "debug")
set(_val_cmake_build_type "Debug")
else()
set(_val_cmake_build_type "${BUILD_TYPE}")
endif()
if(DEFINED CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE STREQUAL "")
if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "${_val_cmake_build_type}")
# Would consider FATAL_ERROR, except for pre-existing condition
# in Linux legacy build system:
# In invocation of Source/instrumentation/instr.cmake :
# Inconsistent: BUILD_TYPE="release-internal" vs CMAKE_BUILD_TYPE="Release"
message(WARNING "Inconsistent: BUILD_TYPE=\"${BUILD_TYPE}\" vs CMAKE_BUILD_TYPE=\"${CMAKE_BUILD_TYPE}\"")
endif()
else()
set(CMAKE_BUILD_TYPE "${_val_cmake_build_type}")
endif()
set(BUILD_TYPE "${BUILD_TYPE}" PARENT_SCOPE)
set(UFO_BUILD_TYPE "${BUILD_TYPE}" PARENT_SCOPE)
set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" PARENT_SCOPE)
endfunction(bs_check_build_type)
endif(NOT DEFINED _bs_include_base_utils)