[llvm] r238740 - In MSVC builds embed a VERSIONINFO resource in our exe and DLL files.

Sean Silva chisophugis at gmail.com
Tue Jun 2 13:56:38 PDT 2015


On Tue, Jun 2, 2015 at 8:45 AM, Greg Bedwell <gregbedwell at gmail.com> wrote:

> Hi Sean,
>
> The discussion all ended up happening on the lists rather than in the
> review.  E.g.
>
> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150525/thread.html#278895
>


Ah, I see it now (also searching through my emails).

Manuel, I seem to recall Phab used to mirror the mailing list into the
discussion there... is that feature gone now? It wasn't spectacular but
would at least give a clear indication in cases like this that there has
been ancillary mailing list discussion. Actually, merely detecting that
there has been other mailing list discussion and somehow flagging that in
the Phab UI would probably be sufficient (we can go back to our email
client to see the rest of the discussion; but we have to know its there).

-- Sean Silva


>
>
> FWIW, I reverted this commit in r238744 as it failed on some clang-cl
> self-host bots.  I've been updating the thread above with my findings on
> why.  If I'm lucky I'll have a patch for clang-cl that fixes the issue up
> for review relatively soon.
>
> -Greg
>
>
>
> On 2 June 2015 at 02:40, Sean Silva <chisophugis at gmail.com> wrote:
>
>> Did this ever get discussed? http://reviews.llvm.org/D7828
>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D7828&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=6YN9Y49-z-LZoIDBjhQhHpKAsrFID6psYRqWpMu-Dug&e=> 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
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D238740-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=NPOOhqt5dzBIz2iPE8FKA3Ru6Y9_gw37Omhnz8yxglc&e=>
>>> 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
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D7828&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=6YN9Y49-z-LZoIDBjhQhHpKAsrFID6psYRqWpMu-Dug&e=>
>>>
>>> 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
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_cmake_modules_AddLLVM.cmake-3Frev-3D238740-26r1-3D238739-26r2-3D238740-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=hg5kANbD97TRZwlckSuJPY97CTXGj9hNquEFzpniU-E&e=>
>>>
>>> ==============================================================================
>>> --- 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
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_resources_windows-5Fversion-5Fresource.rc-3Frev-3D238740-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=ENxMYDbAqAXkq_ob0KEyoHHsB9lxTF7jyD0rPiDrHs0&e=>
>>>
>>> ==============================================================================
>>> --- 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
>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__msdn.microsoft.com_en-2Dgb_library_windows_desktop_aa380599-28v-3Dvs.85-29.aspx&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=PKcPSBAtppeWOfjX7cT4Zvcb5WXJvd5jV10rvjDEkdA&e=>
>>> +// The VERSIONINFO resource is described at:
>>> +//
>>> https://msdn.microsoft.com/en-gb/library/windows/desktop/aa381058(v=vs.85).aspx
>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__msdn.microsoft.com_en-2Dgb_library_windows_desktop_aa381058-28v-3Dvs.85-29.aspx&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=x7204Rz3acR6e5YRnrBhSkpTmUe07Ro1RVEQ3nSkfXI&s=jSbttDSJSR_6vWcsYUU2VEZQyh6eSBGAbKSmnI_7VSk&e=>
>>> +
>>> +
>>> +// 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
>>>
>>
>>
>> _______________________________________________
>> 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/20150602/2969798a/attachment.html>


More information about the llvm-commits mailing list