Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
/ corefx Public archive

Fix clrcompression windows build #7840

Merged
merged 1 commit into from
Apr 19, 2016
Merged

Fix clrcompression windows build #7840

merged 1 commit into from
Apr 19, 2016

Conversation

ianhays
Copy link
Contributor

@ianhays ianhays commented Apr 18, 2016

The Open Windows native build of clrcompression was inferior to the one in TFS for a few reasons:

  • The Open clrcompression imported vcruntime140.dll
  • It did not produce a pdb for either build config
  • The linker/compiler flags being used were incorrect or inadequate

Those problems have been resolved. The clrcompression.dll produced in the open is now the same as the one produced internally with the exception that it is linked against the UCRT instead of a fixed msvcrt from TFS. I also took this opportunity to fix the appx package and add the /guard:cf flag which is missing from the TFS clrcompression.

resolves #7436
resolves #7748
related to #7756

@dagood @ellismg @gkhanna79

@stephentoub
Copy link
Member

stephentoub commented Apr 18, 2016

I also took this opportunity to fix the appx package and add the /guard:cf flag

I'm not suggesting we not do this, but do we understand what, if any, perf impact there is to using the guard flag for this lib? If nothing else, if there is an impact, it'd be good to understand what that impact is in case we hear of it resulting in any regressions for folks.

@ianhays
Copy link
Contributor Author

ianhays commented Apr 18, 2016

I'm not suggesting we not do this, but do we understand what, if any, perf impact there is to using the guard flag for this lib? If nothing else, if there is an impact, it'd be good to understand what that impact is in case we hear of it resulting in any regressions for folks.

I was under the impression it was required or at least strongly encouraged so I wrote it off as inevitable. I'll run the Canterbury benchmarks and see if there's any appreciable difference.

Edit: I saw no appreciable difference. Possibly a tenth to a hundredth of a millisecond but I didn't run enough iterations to get that level of definition.

@@ -10,7 +10,7 @@
<ItemGroup>
<!-- use Win10 temporarily as the distinguishing factor, in reality the distinction is app-container vs not. -->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this comment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@stephentoub
Copy link
Member

I saw no appreciable difference.

Excellent. Thanks for checking.

@@ -62,10 +62,18 @@ include_directories("${CMAKE_BINARY_DIR}/../../")
add_library(clrcompression
SHARED
${NATIVECOMPRESSION_SOURCES}
# This will add versioning to the library
# This will add versioning to the library
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NIT: Whitespace

@ianhays
Copy link
Contributor Author

ianhays commented Apr 19, 2016

Responded/fixed all feedback!

Any more feedback/last words before I squash and merge? I'd like to merge by EOD to unblock #7756

@ellismg
Copy link
Contributor

ellismg commented Apr 19, 2016

All the changes except the .pkgproj files LGTM. You might want to get Wes or Eric to sign off on that one, I don't understand the implications.

Thanks for doing this!

@ericstj
Copy link
Member

ericstj commented Apr 19, 2016

LGTM

The Open Windows native build of clrcompression was inferior to the one in TFS for a few reasons:
- The Open clrcompression imported vcruntime140.dll
- It did not produce a pdb for either build config
- The linker/compiler flags being used were incorrect or inadequate

Those problems have been resolved. The clrcompression.dll produced in the open is now the same as the one produced internally with the exception that it is linked against the UCRT instead of a fixed msvcrt from TFS. I also took this opportunity to fix the appx package and add the /guard:cf flag which is missing from the TFS clrcompression.
@ianhays
Copy link
Contributor Author

ianhays commented Apr 19, 2016

Thanks for the feedback, Matt/Eric/Eric!

@ianhays ianhays merged commit fedba42 into dotnet:master Apr 19, 2016
@ianhays ianhays deleted the clrcompression-packaging branch May 18, 2016 15:45
@karelz karelz modified the milestones: 1.2.0, 1.0.0-rtm Dec 3, 2016
jkotas pushed a commit that referenced this pull request Nov 1, 2017
The windows build already includes /Zi /Zl as part of commit 920fd2f
(PR #7840). It looks like it was simply missed on Unix.

This change also makes the native debug information closer to what
CoreCLR does on all platforms. See
dotnet/coreclr#3445 for more information.

This is also needed for the end-to-end debuginfo generation as part of
source-build. See dotnet/source-build#267
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…kaging

Fix clrcompression windows build

Commit migrated from dotnet/corefx@fedba42
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
)

The windows build already includes /Zi /Zl as part of commit 920fd2f
(PR dotnet/corefx#7840). It looks like it was simply missed on Unix.

This change also makes the native debug information closer to what
CoreCLR does on all platforms. See
dotnet/coreclr#3445 for more information.

This is also needed for the end-to-end debuginfo generation as part of
source-build. See dotnet/source-build#267

Commit migrated from dotnet/corefx@efe7652
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Static link libvcruntime.lib to eliminate dependency on VCRuntime140.dll clrcompression package issues
7 participants