[llvm] r238740 - In MSVC builds embed a VERSIONINFO resource in our exe and DLL files.
Sean Silva
chisophugis at gmail.com
Mon Jun 1 18:40:17 PDT 2015
Did this ever get discussed? http://reviews.llvm.org/D7828 seems empty.
-- Sean Silva
On Mon, Jun 1, 2015 at 5:41 AM, Greg Bedwell <greg_bedwell at sn.scee.net>
wrote:
> Author: gbedwell
> Date: Mon Jun 1 07:41:55 2015
> New Revision: 238740
>
> URL: http://llvm.org/viewvc/llvm-project?rev=238740&view=rev
> Log:
> In MSVC builds embed a VERSIONINFO resource in our exe and DLL files.
>
> This embeds Windows version information into our executables and DLLs.
> The most visible place to view this data is in the details tab of the file
> properties window in Windows explorer.
>
> Differential Revision: http://reviews.llvm.org/D7828
>
> Added:
> llvm/trunk/resources/
> llvm/trunk/resources/windows_version_resource.rc
> Modified:
> llvm/trunk/cmake/modules/AddLLVM.cmake
>
> Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=238740&r1=238739&r2=238740&view=diff
>
> ==============================================================================
> --- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
> +++ llvm/trunk/cmake/modules/AddLLVM.cmake Mon Jun 1 07:41:55 2015
> @@ -228,6 +228,78 @@ function(set_output_directory target bin
> endif()
> 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()
> +
> + get_target_property(target_location ${name} LOCATION)
> + get_filename_component(target_filename ${target_location} NAME)
> +
> + 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_ORIGINAL_FILENAME=\"${target_filename}\""
> + "RC_PRODUCT_NAME=\"${ARG_PRODUCT_NAME}\""
> + "RC_PRODUCT_VERSION=\"${ARG_VERSION_STRING}\"")
> +endfunction(set_windows_version_resource_properties)
> +
> # llvm_add_library(name sources...
> # SHARED;STATIC
> # STATIC by default w/o BUILD_SHARED_LIBS.
> @@ -316,10 +388,17 @@ function(llvm_add_library name)
> if(ARG_MODULE)
> add_library(${name} MODULE ${ALL_FILES})
> elseif(ARG_SHARED)
> + add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
> add_library(${name} SHARED ${ALL_FILES})
> else()
> add_library(${name} STATIC ${ALL_FILES})
> 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})
> llvm_update_compile_flags(${name})
> add_link_opts( ${name} )
> @@ -482,11 +561,18 @@ endmacro(add_llvm_loadable_module name)
>
> macro(add_llvm_executable name)
> llvm_process_sources( ALL_FILES ${ARGN} )
> + add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
> +
> if( EXCLUDE_FROM_ALL )
> add_executable(${name} EXCLUDE_FROM_ALL ${ALL_FILES})
> else()
> add_executable(${name} ${ALL_FILES})
> endif()
> +
> + if(DEFINED windows_resource_file)
> + set_windows_version_resource_properties(${name}
> ${windows_resource_file})
> + endif()
> +
> llvm_update_compile_flags(${name})
> add_link_opts( ${name} )
>
>
> Added: llvm/trunk/resources/windows_version_resource.rc
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/resources/windows_version_resource.rc?rev=238740&view=auto
>
> ==============================================================================
> --- llvm/trunk/resources/windows_version_resource.rc (added)
> +++ llvm/trunk/resources/windows_version_resource.rc Mon Jun 1 07:41:55
> 2015
> @@ -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
> \ No newline at end of file
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150601/7cfe2d5b/attachment.html>
More information about the llvm-commits
mailing list