mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-21 18:22:53 +01:00
In MSVC builds embed a VERSIONINFO resource in our exe and DLL files.
This reinstates my commits r238740/r238741 which I reverted due to a failure in the clang-cl selfhost tests on Windows. I've now fixed the issue in clang-cl that caused the failure so hopefully all should be well now. llvm-svn: 239612
This commit is contained in:
parent
12677ab0cc
commit
46ad93c20c
@ -228,6 +228,74 @@ function(set_output_directory target bindir libdir)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
# If on Windows and building with MSVC, add the resource script containing the
|
||||||
|
# VERSIONINFO data to the project. This embeds version resource information
|
||||||
|
# into the output .exe or .dll.
|
||||||
|
# TODO: Enable for MinGW Windows builds too.
|
||||||
|
#
|
||||||
|
function(add_windows_version_resource_file OUT_VAR)
|
||||||
|
set(sources ${ARGN})
|
||||||
|
if (MSVC)
|
||||||
|
set(resource_file ${LLVM_SOURCE_DIR}/resources/windows_version_resource.rc)
|
||||||
|
set(sources ${sources} ${resource_file})
|
||||||
|
source_group("Resource Files" ${resource_file})
|
||||||
|
set(windows_resource_file ${resource_file} PARENT_SCOPE)
|
||||||
|
endif(MSVC)
|
||||||
|
|
||||||
|
set(${OUT_VAR} ${sources} PARENT_SCOPE)
|
||||||
|
endfunction(add_windows_version_resource_file)
|
||||||
|
|
||||||
|
# set_windows_version_resource_properties(name resource_file...
|
||||||
|
# VERSION_MAJOR int
|
||||||
|
# Optional major version number (defaults to LLVM_VERSION_MAJOR)
|
||||||
|
# VERSION_MINOR int
|
||||||
|
# Optional minor version number (defaults to LLVM_VERSION_MINOR)
|
||||||
|
# VERSION_PATCHLEVEL int
|
||||||
|
# Optional patchlevel version number (defaults to LLVM_VERSION_PATCH)
|
||||||
|
# VERSION_STRING
|
||||||
|
# Optional version string (defaults to PACKAGE_VERSION)
|
||||||
|
# PRODUCT_NAME
|
||||||
|
# Optional product name string (defaults to "LLVM")
|
||||||
|
# )
|
||||||
|
function(set_windows_version_resource_properties name resource_file)
|
||||||
|
cmake_parse_arguments(ARG
|
||||||
|
""
|
||||||
|
"VERSION_MAJOR;VERSION_MINOR;VERSION_PATCHLEVEL;VERSION_STRING;PRODUCT_NAME"
|
||||||
|
""
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
|
if (NOT DEFINED ARG_VERSION_MAJOR)
|
||||||
|
set(ARG_VERSION_MAJOR ${LLVM_VERSION_MAJOR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ARG_VERSION_MINOR)
|
||||||
|
set(ARG_VERSION_MINOR ${LLVM_VERSION_MINOR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ARG_VERSION_PATCHLEVEL)
|
||||||
|
set(ARG_VERSION_PATCHLEVEL ${LLVM_VERSION_PATCH})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ARG_VERSION_STRING)
|
||||||
|
set(ARG_VERSION_STRING ${PACKAGE_VERSION})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ARG_PRODUCT_NAME)
|
||||||
|
set(ARG_PRODUCT_NAME "LLVM")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(SOURCE ${resource_file}
|
||||||
|
PROPERTY COMPILE_DEFINITIONS
|
||||||
|
"RC_VERSION_FIELD_1=${ARG_VERSION_MAJOR}"
|
||||||
|
"RC_VERSION_FIELD_2=${ARG_VERSION_MINOR}"
|
||||||
|
"RC_VERSION_FIELD_3=${ARG_VERSION_PATCHLEVEL}"
|
||||||
|
"RC_VERSION_FIELD_4=0"
|
||||||
|
"RC_FILE_VERSION=\"${ARG_VERSION_STRING}\""
|
||||||
|
"RC_INTERNAL_NAME=\"${name}\""
|
||||||
|
"RC_PRODUCT_NAME=\"${ARG_PRODUCT_NAME}\""
|
||||||
|
"RC_PRODUCT_VERSION=\"${ARG_VERSION_STRING}\"")
|
||||||
|
endfunction(set_windows_version_resource_properties)
|
||||||
|
|
||||||
# llvm_add_library(name sources...
|
# llvm_add_library(name sources...
|
||||||
# SHARED;STATIC
|
# SHARED;STATIC
|
||||||
# STATIC by default w/o BUILD_SHARED_LIBS.
|
# STATIC by default w/o BUILD_SHARED_LIBS.
|
||||||
@ -316,10 +384,17 @@ function(llvm_add_library name)
|
|||||||
if(ARG_MODULE)
|
if(ARG_MODULE)
|
||||||
add_library(${name} MODULE ${ALL_FILES})
|
add_library(${name} MODULE ${ALL_FILES})
|
||||||
elseif(ARG_SHARED)
|
elseif(ARG_SHARED)
|
||||||
|
add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
|
||||||
add_library(${name} SHARED ${ALL_FILES})
|
add_library(${name} SHARED ${ALL_FILES})
|
||||||
else()
|
else()
|
||||||
add_library(${name} STATIC ${ALL_FILES})
|
add_library(${name} STATIC ${ALL_FILES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(DEFINED windows_resource_file)
|
||||||
|
set_windows_version_resource_properties(${name} ${windows_resource_file})
|
||||||
|
set(windows_resource_file ${windows_resource_file} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_output_directory(${name} ${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
|
set_output_directory(${name} ${LLVM_RUNTIME_OUTPUT_INTDIR} ${LLVM_LIBRARY_OUTPUT_INTDIR})
|
||||||
llvm_update_compile_flags(${name})
|
llvm_update_compile_flags(${name})
|
||||||
add_link_opts( ${name} )
|
add_link_opts( ${name} )
|
||||||
@ -482,11 +557,18 @@ endmacro(add_llvm_loadable_module name)
|
|||||||
|
|
||||||
macro(add_llvm_executable name)
|
macro(add_llvm_executable name)
|
||||||
llvm_process_sources( ALL_FILES ${ARGN} )
|
llvm_process_sources( ALL_FILES ${ARGN} )
|
||||||
|
add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
|
||||||
|
|
||||||
if( EXCLUDE_FROM_ALL )
|
if( EXCLUDE_FROM_ALL )
|
||||||
add_executable(${name} EXCLUDE_FROM_ALL ${ALL_FILES})
|
add_executable(${name} EXCLUDE_FROM_ALL ${ALL_FILES})
|
||||||
else()
|
else()
|
||||||
add_executable(${name} ${ALL_FILES})
|
add_executable(${name} ${ALL_FILES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(DEFINED windows_resource_file)
|
||||||
|
set_windows_version_resource_properties(${name} ${windows_resource_file})
|
||||||
|
endif()
|
||||||
|
|
||||||
llvm_update_compile_flags(${name})
|
llvm_update_compile_flags(${name})
|
||||||
add_link_opts( ${name} )
|
add_link_opts( ${name} )
|
||||||
|
|
||||||
|
89
resources/windows_version_resource.rc
Normal file
89
resources/windows_version_resource.rc
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
// Microsoft Visual C++ resource script for embedding version information.
|
||||||
|
// The format is described at:
|
||||||
|
// http://msdn.microsoft.com/en-gb/library/windows/desktop/aa380599(v=vs.85).aspx
|
||||||
|
// The VERSIONINFO resource is described at:
|
||||||
|
// https://msdn.microsoft.com/en-gb/library/windows/desktop/aa381058(v=vs.85).aspx
|
||||||
|
|
||||||
|
|
||||||
|
// Default values for required fields.
|
||||||
|
|
||||||
|
#ifndef RC_VERSION_FIELD_1
|
||||||
|
#define RC_VERSION_FIELD_1 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_VERSION_FIELD_2
|
||||||
|
#define RC_VERSION_FIELD_2 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_VERSION_FIELD_3
|
||||||
|
#define RC_VERSION_FIELD_3 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_VERSION_FIELD_4
|
||||||
|
#define RC_VERSION_FIELD_4 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_COMPANY_NAME
|
||||||
|
#define RC_COMPANY_NAME ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_FILE_DESCRIPTION
|
||||||
|
#define RC_FILE_DESCRIPTION ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_FILE_VERSION
|
||||||
|
#define RC_FILE_VERSION ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_INTERNAL_NAME
|
||||||
|
#define RC_INTERNAL_NAME ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_ORIGINAL_FILENAME
|
||||||
|
#define RC_ORIGINAL_FILENAME ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_PRODUCT_NAME
|
||||||
|
#define RC_PRODUCT_NAME ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RC_PRODUCT_VERSION
|
||||||
|
#define RC_PRODUCT_VERSION ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
1 VERSIONINFO
|
||||||
|
FILEVERSION RC_VERSION_FIELD_1,RC_VERSION_FIELD_2,RC_VERSION_FIELD_3,RC_VERSION_FIELD_4
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904B0"
|
||||||
|
BEGIN
|
||||||
|
// Required strings
|
||||||
|
VALUE "CompanyName", RC_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", RC_FILE_DESCRIPTION
|
||||||
|
VALUE "FileVersion", RC_FILE_VERSION
|
||||||
|
VALUE "InternalName", RC_INTERNAL_NAME
|
||||||
|
VALUE "OriginalFilename", RC_ORIGINAL_FILENAME
|
||||||
|
VALUE "ProductName", RC_PRODUCT_NAME
|
||||||
|
VALUE "ProductVersion", RC_PRODUCT_VERSION
|
||||||
|
|
||||||
|
// Optional strings
|
||||||
|
#ifdef RC_COMMENTS
|
||||||
|
VALUE "Comments", RC_COMMENTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RC_COPYRIGHT
|
||||||
|
VALUE "LegalCopyright", RC_COPYRIGHT
|
||||||
|
#endif
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
// The translation must correspond to the above BLOCK inside StringFileInfo
|
||||||
|
// langID 0x0409 U.S. English
|
||||||
|
// charsetID 0x04B0 Unicode
|
||||||
|
VALUE "Translation", 0x0409, 0x04B0
|
||||||
|
END
|
||||||
|
END
|
Loading…
Reference in New Issue
Block a user