Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrates a large number of changelists developped internally. #39

Merged
merged 2 commits into from
Sep 7, 2018
Merged

Integrates a large number of changelists developped internally. #39

merged 2 commits into from
Sep 7, 2018

Conversation

brousseau-ubi
Copy link
Member

This is a cumulative patch that contains many fixes that have been submitted and approved internally.

General

  • Adds support for custom Project.Configuration and Solution.Configuration.
  • Sharpmake now generates itself as part of the build process! Run bootstrap-sharpmake.bat.
  • The visualstudio.sharpmake.bat script now registers the .sharpmake into Visual Studio 2017.
  • Adds support for custom NMake projects.
  • Adds a Project.AdditionalFiltering virtual method so projects can implement custom file exclusion logic.
  • Adds new utility method Util.DirectoryGetFilesWithWildcards.
  • Adds various optimizations in the generators to speed up generation, including a major one for large projects.

C++

  • Adds support for Visual Studio compiler option Enable Managed Incremental Build. (C++/CLI)
  • Makes post-build step name take command arguments into account.
  • Removes C++ std version setting from bff because some platforms only support specific ISO/C++ versions.
  • Projects that interface with Web services triggered an invalid assert because Visual Studio 2017 renamed the Service References folder to Connected Services. That assertion was wrong and has been removed.
  • Adds a declaration of <ApplicationEnvironment> tag in Visual Studio project files.
  • Added support for Visual Studio's hotpatch compiler and linker options. See Options.Vc.Compiler.CreateHotPatchableCode and Options.Vc.Linker.CreateHotPatchableImage.
  • Removes fallback values when writing templates in vcxproj. It is necessary to know if the resolver fails.
  • Improves the way that the Windows Kits are dealt with.
  • Fixes a bug in how the manifest files are added to a Visual Studio vcxproj.
  • Renames Visual C++ option Sharpmake.Options.Vc.Compiler.RemovedUnreferencedCOMDAT to RemovedUnreferencedCodeData; marks the former deprecated.
  • Adds new Visual C++ option Sharpmake.Options.Vc.General.PreferredToolArchitecture to select a particular version of the toolchain.
  • Deprecates Sharpmake.Options.Vc.General.NativeEnvironment; use PreferredToolArchitecture.x64 for the old behavior.
  • Adds Visual C++ option Sharpmake.Options.Vc.Compiler.RemovedUnreferencedCOMDAT. It was already there, but it was never implemented in the generators code, and it is now enabled by default.

.NET

  • The NetFX paths are now loaded as needed in order to avoid unnecessary warnings.
  • Fixes NuGet support for Visual Studio 2010 and Visual Studio 2013.
  • Adds Project.ProjectReferenceType to let Sharpmake scripts specify how NuGet packages should be listed. (project.json, packages.config, <PackageReference>, etc.)
  • Fixes broken WCF code generation and adds a regression test for WCF.
  • Fixes WCF file folder assert when the csproj is not output in the source folder.
  • Change the type of Content.CopyToOutputDirectory in internal ItemGroups to an enumeration.
  • Adds missing csproj properties for ClickOnce app and VSIX projects.
  • Adds CopyToOutputDirectory option for embedded resources.
  • Adds FileAssociation and PublishFile item groups.
  • Fixes a crash that occurs when serialize WinFormSubTypes is called and DbPath does not exists and makes Util.GetWinFormSubTypeDbPath public.
  • Adds support for "private" NuGet packages when using <PackageReference>.

FastBuild

  • Fixes generation of fastbuild unity blobs for projects without source files.
  • The confSourceFiles list is now ordered to get consistent platform grouping in FastBuild files.
  • Method Bff.GetShortPlatformName now uses SimplePlatformString to name the platform. (Note that, for now, to avoid potential issues with naming, we only do that when platform is one the _reserved* flags.)
  • Fixes a problem where the ISO/C++ standard version (C++14, 17, etc.) was set for sources file in C language.
  • Static libraries with a non-standard name (ie: not called libXXX.a on a Unix platform) or using a full path are prefixed with -l:.
  • Library names are only shortened if the lib prefix was used in the command line or in the output. (Potential issue: The extension could be different from what the platform expects when using the shortened library name.)
  • Uses the proper ExecutableRootPath of the compiler.
  • Changes IPlatformBff.SetupExtraLinkerSettings to take a Project.Configuration as a parameter.
  • Fixes a file path casing issue in post build events.
  • Uses platform lib prefix and suffix to detect dependencies.
  • Updates the BFF file generator to work for project with no source files.
  • Fixes partial libraries in projects that output an executable.
  • Fixes a crash that occurs when a project contains a Win32 resource file (.rc files) and the FastBuild script contains non-Microsoft platforms.
  • Configurations using FastBuild Unities without having a proper value for the Project.Configuration.FastBuildUnityCount property should now fallback to an appropriate value.
  • Adds support for UnityInputPattern in the Unity sections of bff. This uses the Project.Configuration.SourceFilesBlobExtensions property.
  • Adds PostBuildTest for running tests post-build. This is a generalist feature, but right now it is only supported for FastBuild.
  • Adds support for AdditionalResourceIncludeDirectories in FastBuild.
  • Fixes a mismatch between FastBuild and MSBuild where the object files were listed before the static libraries, which caused weird linking issues such as different DLL dependencies based on which build system was used.
  • The master BFF file is now in lowercase if the solution property IsFileNameToLower is enabled.
  • Sort the CompilerSettings sections in the global-settings file to make it deterministic.

Tests & Diagnostics

  • Logs version numbers for Sharpmake extensions.
  • Logs the time taken by the pre/post generation events if they took more than 100ms.
  • Adds a new constructor to StopwatchProfiler.
  • When Sharpmake is run in regression test mode, its now displays a better summary of the diffs.
  • Command line option /generateDebugSolution now only generates one .csproj.
  • Forces the .NET debug solution to use C# 5.
  • Changes Util.DirectoryGetFiles and DirectoryGetDirectories so that those ignore the filter and search option when FakeTree (used during unit tests) is used.
  • Adds unit tests for many new features and bug fixes.

Samples

  • Adds the CSharpWCF sample.
  • Removes the SharpmakeGen sample because with the Sharpmake generating itself, it is not really a sample anymore.

Others

  • Reorders the Platform enumeration and adds _reserved flags for unused items.
  • Fixed a bug that occurred on Windows where a file included in Sharpmake scripts with the [Sharpmake.Include(...)] attribute would be compiled twice if it's referred more than once but with different casing.
  • Regression diffs now display something when a side is empty.
  • Fixes a bug in how Sharpmake merges configurations in Visual Studio solutions.
  • Package.config no longer refers to project.json everywhere.
  • Add an option for adding additional project-less files to a solution.
  • Fixes An exception occured during the execution error in Util.GetWinFormSubTypeDbPath.
  • Fixes some issues with the deploy_binaries.py helper script. (Python.)
  • Uses Trace instead of Debug to log debug information, so that Sharpmake can be debugged in Release.
  • Fixes the /breakintodebugger command line argument.

* Adds overloaded constructor Options::CSharp::SuppressWarning::ctor(params string[]). This is needed to suppress warnings from sources other than the C# compiler, such as NuGet.
* Fixes the AppVeyor script so that it runs bootstrap-sharpmake.bat before calling dotnet restore.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant