Newer
Older
Bryan O'Sullivan
committed
# -*- cmake -*-

Rye Mutt
committed
option(REVISION_FROM_VCS "Get current revision from vcs" ON)
# Construct the viewer channel from environment variables or defaults
if(NOT DEFINED VIEWER_CHANNEL)
if(DEFINED ENV{VIEWER_CHANNEL_BASE})
set(VIEWER_CHANNEL_BASE
$ENV{VIEWER_CHANNEL_BASE}
CACHE STRING "Viewer Channel Base Name" FORCE)
else()
set(VIEWER_CHANNEL_BASE
"Alchemy"
CACHE STRING "Viewer Channel Base Name")
endif()

Rye Mutt
committed

Rye Mutt
committed
if(DEFINED ENV{VIEWER_CHANNEL_TYPE})
set(VIEWER_CHANNEL_TYPE
$ENV{VIEWER_CHANNEL_TYPE}
CACHE STRING "Viewer Channel Type Name" FORCE)

Rye Mutt
committed
else()

Rye Mutt
committed
set(VIEWER_CHANNEL_TYPE
"Test"
CACHE STRING "Viewer Channel Type Name")
endif()
if(DEFINED ENV{VIEWER_CHANNEL_CODENAME})
set(VIEWER_CHANNEL_CODENAME_INTERNAL $ENV{VIEWER_CHANNEL_CODENAME})
elseif(DEFINED VIEWER_CHANNEL_CODENAME)
set(VIEWER_CHANNEL_CODENAME_INTERNAL ${VIEWER_CHANNEL_CODENAME})
else()
set(VIEWER_CHANNEL_CODENAME_FILE "${CMAKE_SOURCE_DIR}/newview/VIEWER_PROJECT_CODENAME.txt")
if(EXISTS ${VIEWER_CHANNEL_CODENAME_FILE})
file(STRINGS ${VIEWER_CHANNEL_CODENAME_FILE} VIEWER_CHANNEL_CODENAME_INTERNAL)
else()
set(VIEWER_CHANNEL_CODENAME_INTERNAL "Default")
endif()
endif()
if("${VIEWER_CHANNEL_TYPE}" STREQUAL "Project")
set(VIEWER_CHANNEL "${VIEWER_CHANNEL_BASE} ${VIEWER_CHANNEL_TYPE} ${VIEWER_CHANNEL_CODENAME_INTERNAL}")
else()
set(VIEWER_CHANNEL "${VIEWER_CHANNEL_BASE} ${VIEWER_CHANNEL_TYPE}")

Rye Mutt
committed
endif()
endif()
if(DEFINED VIEWER_CHANNEL)
string(REPLACE " " "" VIEWER_CHANNEL_ONEWORD ${VIEWER_CHANNEL})
endif()

Rye Mutt
committed
# Construct the viewer version number based on the indra/VIEWER_VERSION file
if(NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/newview/
set(VIEWER_VERSION_BASE_FILE "${CMAKE_SOURCE_DIR}/newview/VIEWER_VERSION.txt")
Bryan O'Sullivan
committed

Rye Mutt
committed
if(EXISTS ${VIEWER_VERSION_BASE_FILE})
file(STRINGS ${VIEWER_VERSION_BASE_FILE} VIEWER_SHORT_VERSION REGEX "^[0-9]+\\.[0-9]+\\.[0-9]+")
string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" VIEWER_VERSION_MAJOR ${VIEWER_SHORT_VERSION})
string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" VIEWER_VERSION_MINOR ${VIEWER_SHORT_VERSION})
string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" VIEWER_VERSION_PATCH ${VIEWER_SHORT_VERSION})
Bryan O'Sullivan
committed
if(REVISION_FROM_VCS)
find_package(Git)
endif()
if((NOT REVISION_FROM_VCS) AND DEFINED ENV{CI_PIPELINE_ID})
set(VIEWER_VERSION_REVISION $ENV{CI_PIPELINE_ID})
message(STATUS "Revision (from environment): ${VIEWER_VERSION_REVISION}")

Rye Mutt
committed
elseif((NOT REVISION_FROM_VCS) AND DEFINED ENV{AUTOBUILD_BUILD_ID})
set(VIEWER_VERSION_REVISION $ENV{AUTOBUILD_BUILD_ID})
message(STATUS "Revision (from autobuild environment): ${VIEWER_VERSION_REVISION}")

Rye Mutt
committed
elseif(Git_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-list HEAD --count
OUTPUT_VARIABLE GIT_REV_LIST_COUNT
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
Oz Linden
committed

Rye Mutt
committed
else()

Rye Mutt
committed
endif()
message(STATUS "Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")

Rye Mutt
committed
else(EXISTS ${VIEWER_VERSION_BASE_FILE})
message(SEND_ERROR "Cannot get viewer version from '${VIEWER_VERSION_BASE_FILE}'")
endif(EXISTS ${VIEWER_VERSION_BASE_FILE})
if("${VIEWER_VERSION_REVISION}" STREQUAL "")
message(STATUS "Ultimate fallback, revision was blank or not set: will use 0")
set(VIEWER_VERSION_REVISION 0)
endif("${VIEWER_VERSION_REVISION}" STREQUAL "")
set(VIEWER_VERSION_AND_CHANNEL "${VIEWER_CHANNEL} ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")

Rye Mutt
committed
endif(NOT DEFINED VIEWER_SHORT_VERSION)
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
if (NOT DEFINED VIEWER_COMMIT_LONG_SHA)
if((NOT REVISION_FROM_VCS) AND DEFINED ENV{CI_COMMIT_SHA})
set(VIEWER_COMMIT_LONG_SHA $ENV{CI_COMMIT_SHA})
message(STATUS "Long SHA (from environment): ${VIEWER_COMMIT_LONG_SHA}")
elseif(Git_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
OUTPUT_VARIABLE GIT_COMMIT_SHA
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(GIT_COMMIT_SHA)
set(VIEWER_COMMIT_LONG_SHA ${GIT_COMMIT_SHA})
else()
set(VIEWER_COMMIT_LONG_SHA 0)
endif()
message(STATUS "Long SHA: ${VIEWER_COMMIT_LONG_SHA}")
else()
set(VIEWER_COMMIT_LONG_SHA 0)
endif()
endif (NOT DEFINED VIEWER_COMMIT_LONG_SHA)
if (NOT DEFINED VIEWER_COMMIT_SHORT_SHA)
if((NOT REVISION_FROM_VCS) AND DEFINED ENV{CI_COMMIT_SHORT_SHA})
set(VIEWER_COMMIT_SHORT_SHA $ENV{CI_COMMIT_SHORT_SHA})
message(STATUS "Short SHA (from environment): ${VIEWER_COMMIT_SHORT_SHA}")
elseif(Git_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
OUTPUT_VARIABLE GIT_COMMIT_SHORT_SHA
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(GIT_COMMIT_SHORT_SHA)
set(VIEWER_COMMIT_SHORT_SHA ${GIT_COMMIT_SHORT_SHA})
else()
set(VIEWER_COMMIT_SHORT_SHA 0)
endif()
message(STATUS "Short SHA: ${VIEWER_COMMIT_SHORT_SHA}")
else()
set(VIEWER_COMMIT_SHORT_SHA 0)
endif()
endif (NOT DEFINED VIEWER_COMMIT_SHORT_SHA)
add_library( ll::versioninfo INTERFACE IMPORTED )
target_compile_definitions( ll::versioninfo INTERFACE
$<$<CONFIG:Debug>:LLBUILD_CONFIG="Debug">
$<$<CONFIG:RelWithDebInfo>:LLBUILD_CONFIG="RelWithDebInfo">
$<$<CONFIG:Release>:LLBUILD_CONFIG="Release">
LL_VIEWER_CHANNEL="${VIEWER_CHANNEL}"
LL_VIEWER_CHANNEL_CODENAME="${VIEWER_CHANNEL_CODENAME_INTERNAL}"
LL_VIEWER_CHANNEL_AND_VERSION="${VIEWER_VERSION_AND_CHANNEL}"
LL_VIEWER_VERSION_MAJOR=${VIEWER_VERSION_MAJOR}
LL_VIEWER_VERSION_MINOR=${VIEWER_VERSION_MINOR}
LL_VIEWER_VERSION_PATCH=${VIEWER_VERSION_PATCH}
LL_VIEWER_COMMIT_SHA="${VIEWER_COMMIT_LONG_SHA}"
LL_VIEWER_COMMIT_SHORT_SHA="${VIEWER_COMMIT_SHORT_SHA}"