CMake: error making get_blender_version a function

Incorrect use of PARENT_SCOPE meant the vars would be used uninitialized elsewhere.
This commit is contained in:
Campbell Barton 2015-02-25 18:15:54 +11:00
parent 37556d9a9a
commit 83caabebd2
2 changed files with 27 additions and 12 deletions

@ -1015,6 +1015,15 @@ macro(ADD_CHECK_CXX_COMPILER_FLAG
endmacro() endmacro()
function(get_blender_version) function(get_blender_version)
# extracts header vars and defines them in the parent scope:
#
# - BLENDER_VERSION (major.minor)
# - BLENDER_VERSION_MAJOR
# - BLENDER_VERSION_MINOR
# - BLENDER_SUBVERSION (used for internal versioning mainly)
# - BLENDER_VERSION_CHAR (a, b, c, ...or empty string)
# - BLENDER_VERSION_CYCLE (alpha, beta, rc, release)
# So cmake depends on BKE_blender.h, beware of inf-loops! # So cmake depends on BKE_blender.h, beware of inf-loops!
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender.h
${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender.h.done) ${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender.h.done)
@ -1047,25 +1056,28 @@ function(get_blender_version)
message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE") message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
endif() endif()
math(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100") math(EXPR _out_version_major "${_out_version} / 100")
math(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100") math(EXPR _out_version_minor "${_out_version} % 100")
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}" PARENT_SCOPE)
set(BLENDER_SUBVERSION ${_out_subversion} PARENT_SCOPE)
set(BLENDER_VERSION_CHAR ${_out_version_char} PARENT_SCOPE)
set(BLENDER_VERSION_CYCLE ${_out_version_cycle} PARENT_SCOPE)
# for packaging, alpha to numbers # for packaging, alpha to numbers
string(COMPARE EQUAL "${BLENDER_VERSION_CHAR}" "" _out_version_char_empty) string(COMPARE EQUAL "${_out_version_char}" "" _out_version_char_empty)
if(${_out_version_char_empty}) if(${_out_version_char_empty})
set(BLENDER_VERSION_CHAR_INDEX "0" PARENT_SCOPE) set(_out_version_char_index "0")
else() else()
set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z) set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z)
list(FIND _char_ls ${BLENDER_VERSION_CHAR} _out_version_char_index) list(FIND _char_ls ${_out_version_char} _out_version_char_index)
math(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1" PARENT_SCOPE) math(EXPR _out_version_char_index "${_out_version_char_index} + 1")
endif() endif()
# message(STATUS "Version (Internal): ${BLENDER_VERSION}.${BLENDER_SUBVERSION}, Version (external): ${BLENDER_VERSION}${BLENDER_VERSION_CHAR}-${BLENDER_VERSION_CYCLE}") # output vars
set(BLENDER_VERSION "${_out_version_major}.${_out_version_minor}" PARENT_SCOPE)
set(BLENDER_VERSION_MAJOR "${_out_subversion}" PARENT_SCOPE)
set(BLENDER_VERSION_MINOR "${_out_subversion}" PARENT_SCOPE)
set(BLENDER_SUBVERSION "${_out_subversion}" PARENT_SCOPE)
set(BLENDER_VERSION_CHAR "${_out_version_char}" PARENT_SCOPE)
set(BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index}" PARENT_SCOPE)
set(BLENDER_VERSION_CYCLE "${_out_version_cycle}" PARENT_SCOPE)
endfunction() endfunction()

@ -25,6 +25,9 @@
set(INC set(INC
. .
)
set(INC_SYS
${GLEW_INCLUDE_PATH} ${GLEW_INCLUDE_PATH}
) )