|
1 | 1 | # ###################################################################################################################### |
2 | | -# Copyright (C) 2017 Advanced Micro Devices, Inc. |
| 2 | +# Copyright (C) 2026 Advanced Micro Devices, Inc. |
3 | 3 | # ###################################################################################################################### |
4 | 4 |
|
| 5 | +include_guard(GLOBAL) |
| 6 | + |
5 | 7 | macro(rocm_set_parent VAR) |
6 | 8 | set(${VAR} |
7 | 9 | ${ARGN} |
@@ -170,3 +172,70 @@ function(rocm_set_soversion LIBRARY_TARGET SOVERSION) |
170 | 172 | set_target_properties(${LIBRARY_TARGET} PROPERTIES VERSION ${LIB_VERSION_STRING}) |
171 | 173 | endif() |
172 | 174 | endfunction() |
| 175 | + |
| 176 | +function(rocm_add_version_resource TARGET NAME DESCRIPTION) |
| 177 | + if(WIN32) |
| 178 | + get_target_property(TARGET_TYPE ${TARGET} TYPE) |
| 179 | + if (NOT TARGET_TYPE STREQUAL "EXECUTABLE" AND |
| 180 | + NOT TARGET_TYPE STREQUAL "SHARED_LIBRARY" AND |
| 181 | + NOT TARGET_TYPE STREQUAL "MODULE_LIBRARY") |
| 182 | + message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION}: only EXECUTABLE, SHARED_LIBRARY, " |
| 183 | + "and MODULE_LIBRARY target types are supported") |
| 184 | + endif() |
| 185 | + get_target_property(FILENAME ${TARGET} OUTPUT_NAME) |
| 186 | + if(NOT FILENAME) |
| 187 | + if(TARGET_TYPE STREQUAL "EXECUTABLE") |
| 188 | + set(FILENAME ${TARGET}${CMAKE_EXECUTABLE_SUFFIX}) |
| 189 | + elseif(TARGET_TYPE STREQUAL "SHARED_LIBRARY") |
| 190 | + set(FILENAME ${TARGET}${CMAKE_SHARED_LIBRARY_SUFFIX}) |
| 191 | + elseif(TARGET_TYPE STREQUAL "MODULE_LIBRARY") |
| 192 | + set(FILENAME ${TARGET}${CMAKE_SHARED_MODULE_SUFFIX}) |
| 193 | + endif() |
| 194 | + endif() |
| 195 | + string(TIMESTAMP YEAR "%Y") |
| 196 | + set(RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_version.rc") |
| 197 | + file(WRITE "${RC_OUTPUT}" "#include <winver.h> |
| 198 | +VS_VERSION_INFO VERSIONINFO |
| 199 | +FILEVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},0 |
| 200 | +PRODUCTVERSION ${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},0 |
| 201 | +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK |
| 202 | +#ifdef _DEBUG |
| 203 | +FILEFLAGS VS_FF_DEBUG |
| 204 | +#else |
| 205 | +FILEFLAGS 0 |
| 206 | +#endif |
| 207 | +FILEOS VOS_NT_WINDOWS32 |
| 208 | +#ifdef DLL_BUILD |
| 209 | +FILETYPE VFT_DLL |
| 210 | +#else |
| 211 | +FILETYPE VFT_APP |
| 212 | +#endif |
| 213 | +FILESUBTYPE VFT2_UNKNOWN |
| 214 | +BEGIN |
| 215 | + BLOCK \"StringFileInfo\" |
| 216 | + BEGIN |
| 217 | + BLOCK \"040904B0\" |
| 218 | + BEGIN |
| 219 | + VALUE \"CompanyName\", \"Advanced Micro Devices, Inc.\\0\" |
| 220 | + VALUE \"FileDescription\", \"${DESCRIPTION}\\0\" |
| 221 | + VALUE \"FileVersion\", \"${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.0\\0\" |
| 222 | + VALUE \"InternalName\", \"${NAME}\\0\" |
| 223 | + VALUE \"LegalCopyright\", \"Copyright (c) ${YEAR} Advanced Micro Devices, Inc. All rights reserved.\\0\" |
| 224 | + VALUE \"OriginalFilename\", \"${FILENAME}\\0\" |
| 225 | + VALUE \"ProductName\", \"${NAME} ${FILENAME}\\0\" |
| 226 | + VALUE \"ProductVersion\", \"${PROJECT_VERSION}\\0\" |
| 227 | + END |
| 228 | + END |
| 229 | + BLOCK \"VarFileInfo\" |
| 230 | + BEGIN |
| 231 | + VALUE \"Translation\", 0x409, 1200 |
| 232 | + END |
| 233 | +END |
| 234 | +") |
| 235 | + target_sources(${TARGET} PRIVATE ${RC_OUTPUT}) |
| 236 | + if(TARGET_TYPE STREQUAL "SHARED_LIBRARY" OR TARGET_TYPE STREQUAL "MODULE_LIBRARY") |
| 237 | + set_source_files_properties(${RC_OUTPUT} PROPERTIES COMPILE_FLAGS -DDLL_BUILD) |
| 238 | + endif() |
| 239 | + message(STATUS "Added version resource to ${TARGET}: ${DESCRIPTION}") |
| 240 | + endif() |
| 241 | +endfunction() |
0 commit comments