Skip to content

Releases: ubisoft/Sharpmake

Sharpmake 0.18.0

09 Dec 09:50
0.18.0
71a89c8
Compare
Choose a tag to compare

Important notes

  • Starting with this release, sharpmake is now built with net5, and requires the related runtime to run.
  • We still provide a .net 472 version just in case, but it is to be considered legacy
  • With net5 we provide one sharpmake release per OS, since the executables are now native apps
  • With net5, string.GetHashCode() will return a different result every time the app is ran. For that reason, we've introduced an extension method in sharpmake: GetDeterministicHashCode(), that keeps the old behavior

Deprecation warnings

  • Deprecate old DotNetFramework that are not supported by MS anymore: 4.0, 4.5, 4.5 clientprofile (which didn't work since 4.5 didn't have a client profile version...), and 4.5.1 ea47e68f

New features / improvements

  • Removed useless prebuild dependencies for fastbuild projects. 1a1c7d34
  • Log the used/unused configuration in different formats in /diagnostics mode to help fix them 8a57ef92
  • [C#] Add support for launchSettings.json and generate it by default instead of csproj.user in case the csproj use the new dotnet sdk format a2d891f9
  • Make the CsprojUserFileSettings class resolvable so we don't need to resolve it manually when we read from it bf9ea4ef
  • Disable dependent assemblies copy to the output dir in the functional tests. 0cc47207
  • Disable dependent assemblies copy to the output dir in the samples. c3aa5d47
  • Use the previously introduced GenerateDocumentationFile in sharpmake projects 784aada6
  • [C#] Add project boolean option GenerateDocumentationFile, false by default fc766867
  • Add .sh fles as items to Sharpmake solution ec79fb26
  • Add Sharpmake.Main as None to the Sharpmake.Application project to make it easier to edit 5cf8129c
  • Activate multi targeting, net472 and net5.0, and switch to net5.0 by default in all tests c40e1529
  • Add support for multiple post-build stamping operations of one target output... Sharpmake/sharpmake!252
  • Add a dependency to System.Text.Json nuget package when using net framework 4934480c
  • Add a utility method to get a deterministic hash code from a string, since with net core the default one is seeded and changes at each run of sharpmake 7373e97f
  • Enable determinism when compiling sharpmake and its modules 4cbe6944
  • [SharpmakeSln] Instead of excluding sharpmake files from the projects, mark them as None so we can see them in the solution 8f72d027
  • Lookup Sharpmake.References in the default references list, and warn in diagnostics mode if it's found, meaning it is redundant 95082165
  • [SharpmakeSln] Change solution items from a manually maintained list to an automatic one, and add python files as well 7eccd47b
  • Add support for Custom Property Groups in Fastbuild Sharpmake/sharpmake!250
  • Add support for .NET 6 4ff515ba
  • Add support for c# 10 fb06eb74
  • Update nuget dependencies versions 4af9a919
  • Add new entry to DotNetOS: maccatalyst c0257d63
  • Adding gradle support and CI for android sample project (#143) 1bce1900
  • feat(dotnet): add support for DotNetOSVersion on Configuration to tweak target framework version Sharpmake/sharpmake!245
  • Add support for WinSDK 11 (10.0.22000) e9c9732f
  • Initial support AGDE Sharpmake/sharpmake!239

Bug fixes

  • [Vcxproj] Fix external warning tags, they need to be under the ClCompile and not the Configuration dbc23ace
  • Add a comment warning that in csproj the file exclusions are matching the full path which can create discrepancies depending on source code location for end users cdf8007c
  • Prevent All build from creating dependencies Sharpmake/sharpmake!218
  • Remove sharpmake nuspec, unused b9fe08a3
  • Fix typo in Intro.md f86a67f4
  • Remove use of system assemblies and instead use the ones from Basic.Reference.Assemblies nuget packages eb1eb41e
  • Update comments 03b72bb7
  • Fix copy/paste error in functional_test python script, we were using a variable that doesn't exist... 5a9b370f
  • Formatting fixes af245079
  • Fix compilation with NET6 by creating crypto provider with the base class static methods 0edbf827
  • Merge pull request #156 from kant/patch-4 84f70c22
  • Fix AGDE project issue when override MsBuildPath and AdditionalVcTargets Sharpmake/sharpmake!248
  • Fix #113: Fix multi-framework conditions Sharpmake/sharpmake!249
  • Remove values from Obsolete DotNetFramework entries, and set them to error. 1f1c28b4
  • Update copyrights 26528345
  • Formatting and style fixes. 4944e3d4
  • Merge pull request #152 from mundak/mundak/fastbuild_example b6b49842
  • Merge pull request #150 from kant/patch-3 c0a2bb8b
  • Merge pull request #149 from kant/patch-2 83fd5e45
  • Merge pull request #148 from kant/patch-1 c3fc06ff
  • Fix c/cpp language standard setting inconsistent for AGDE project Sharpmake/sharpmake!247
  • Fix document format errors Sharpmake/sharpmake!244
  • Disable compile HelloAndroidAgde action on github Sharpmake/sharpmake!243

Sharpmake 0.17.5

06 Oct 08:42
0.17.5
d714a2e
Compare
Choose a tag to compare

Bug fixes

  • [Bff] Fix unit-tests step when the target it depends on changes (DLLs for instance) 0d4bca63
  • Revert "[Bff] Move the build only dependencies to the target alias instead of the prebuild of the node that outputs." 9ec1d181

Sharpmake 0.17.4

30 Sep 08:38
0.17.4
c0038be
Compare
Choose a tag to compare
Sharpmake 0.17.4 Pre-release
Pre-release

New features / improvements

  • [Bff] Move the build only dependencies to the target alias instead of the prebuild of the node that outputs. a184e66b

Bug fixes

  • Prevent the same generation report from being merged from different threads 6daac80b

Sharpmake 0.17.3

28 Sep 08:14
0.17.3
b8ff3d1
Compare
Choose a tag to compare

New features / improvements

  • Add system includes from ILinuxSystemPathProvider to NMakeIncludeSearchPath for correct Intellisense support e59c1c1c
  • Add CLanguageStandard/CppLanguageStandard to Linux MakeFile vcxproj for better Intellisense support e70b4cd0
  • Add NMakeForcedIncludes support to MakeFile/FastBuild projects for better Intellisense support ab87c9a5
  • Rename internal method to better match what it does 27306483
  • Added support for IsPublishable C# project config item (#144) ad2715dd
  • Make the Resolve method in Project virtual, override it from the CSharpProject so we can resolve some variables as path 2349b449
  • Add extension .sharpmake.cs to tmp files 365c783e
  • Log the name of the FastBuild project that's being added to the solution 87c5004d

Bug fixes

  • Fix concurrency issue in ReportGenerated that could lead to a "key already existed in the dictionary" exception 5c8a3d2f
  • [Bff] Prevent adding projects that we can't build or don't output anything to the FastBuildAll project alias 62b0b480
  • Remove duplications from some lists in bff (most notably prebuild dependencies) 08bbfb71

Sharpmake 0.17.2

23 Aug 08:07
cc0ff32
Compare
Choose a tag to compare

New features / improvements

  • Verify that the fragment masks that are added can be applied on the target 147795a5
  • Add a utility method ClearFragmentMasks, to allow resetting the fragment masks 8ed52a44
  • Bump jurplel/install-qt-action from 2.13.2 to 2.14.0 (#140) c003b490
  • Clarify logs level (Error, Warning, ...) Sharpmake/sharpmake!236
  • [CSharp] Add support for warning level 5 with Options.CSharp.WarningLevel.Level5 3464e97b
  • Add support for /external:I and associated options with vs2019+ f5d24c06
  • Add new TranslateIncludes option in Options.Vc for vs2019+ 506aa1d2
  • Add new CppLanguageStandard.CPP20 entry in Options.Vc to allow enabling C++20 in vs2019+ e1999e87
  • Add support for Windows 10 SDK (10.0.20348.0), version 2104/21H1 68b55874
  • Resolve conf.IncludeSystemPaths against the SourceRootPath, same as Include and IncludePrivate 333b13ca
  • Bump Microsoft.CodeAnalysis.CSharp from 3.10.0 to 3.11.0 in /Sharpmake (#139) 62f11eb0
  • Initial support for vs2022. 877113e0
  • Add UseWpf / UseWindForms in C# projects options Sharpmake/sharpmake!234
  • Add use of libuuid in the HelloLinux sample to showcase how to do it. 88a627b6

Bug fixes

  • [XCode] Fix output and intermediate dirs Sharpmake/sharpmake!160
  • Fix include system paths with non win64 platforms 9416e544
  • Fix rc compilation with external includes, we now always use the includes prefixed with the default prefix 97c6212a
  • [C#] Fix DotNetOS fragment handling and add a sample to demonstrate how to use it 1bca8c61
  • Fix unit-test exception type e05948f2
  • Fix: set AndroidAppLibName to TargetFileName Sharpmake/sharpmake!235
  • [Makefile] Fix regression on library prefixes, we now fixup the lib names same as the other generators. 06cd508d

Sharpmake 0.17.1

04 Aug 08:10
57c3b87
Compare
Choose a tag to compare

New features / improvements

  • [MasterBff] Try and figure out if the source of the postbuild copies is an output of one of the targets, and if so move the Copy node declaration after the node that defines it, and add it as a PreBuildDependency 5ebdfe3a
  • Try and improve compile time of sharpmake and its tests in cmd line by passing /maxcpucount and /p:CL_MPCount to msbuild 21f3b2fe
  • [FastBuild] Set FastBuildSettings.SetPathToResourceCompilerInEnvironment to true by default fd3e9fcb
  • [FastBuild] Create a compiler node for rc.exe with the type custom 1d43dfb1
  • bring back the code that supported the use of the LLVM Platform Toolset 465c2a94

Bug fixes

  • Fixing custom build step generation for FastBuild bcbfdeef
  • [Bff] Prevent the custom build steps from always running. If that becomes a requirement it needs to be implemented differently. 5f02688f
  • [FastBuild] Quick and dirty fix for Masm ml64.exe not being recognized by FastBuild 92369798
  • [Bff] Prevent generating the LibraryDependency Alias for the FastBuildAll project 70477004
  • [Bff] Fix LibraryDependency nodes in case the library generation was skipped by the option UseLibraryDependencyInputs.Enable 7b677013
  • [HelloClangCl] Add a use case for the UseLibraryDependencyInputs.Enable to make sure the issue we fixed at 7b67701 doesn't happen again 4257b4dd
  • [Bff] Remove empty line in the Library node header 104e975a
  • [Bff] Fix indentation of the first line in some nodes 6b8fda31

Sharpmake 0.17.0

20 Jul 09:49
5354c1a
Compare
Choose a tag to compare

Important notes

The way file extensions are handle have changed in this version!
Sharpmake's previous behavior was that extensions could be given without a leading dot, for instance exe or dll, and sharpmake added it itself.
This created some issues when we wanted an empty extension, for instance on linux.

Sharpmake now expects you to write the full extension, so for instance .exe or .dll.
To make that obvious, all the extensions variables have been renamed to be prefixed by "Full", or made Obsolete.

Example, if before you were using StaticLibraryFileExtension, you now need to use StaticLibraryFileFullExtension.

Deprecation / removal of features

  • MAJOR CHANGE to target/output names handling e4671da9
  • Rename a bunch of properties/methods and mark some Obsolete instead of changing their meaning, making the API change of e4671da more obvious 878b14f0
  • Deprecate vs2010/vs2012/vs2013, as well as their PlatformToolset 0adbd65e
  • Remove old .reg and .bat files used to register .sharpmake extension. We now use and recommend using .sharpmake.cs which make those irrelevant. ee3c8d03

New features / improvements

  • Android build type Gradle support
  • Add a new ForcedIncludesFilters, allowing to only add forced includes on specific filters. Support only for MSBuild. 40358141
  • Resolve AdditionalSourceRootPaths before use 754233b8
  • Bump nuget packages to latest versions in Sharpmake.UnitTests 50d7f14a
  • Add android sample
  • Generate .Libraries dependency section using an alias containing only the output project, using the full alias in .PreBuildDependencies instead, to avoid trying to link with results from PostBuild events. 893e9b66
  • Add a post build execute step in the HelloClangCl sample to exhibit a bug 782a1eae
  • Add a TargetCopyFilesPath option to override TargetPath for TargetCopyFiles fd311773
  • Register an empty extension for OutputType.Utility, since same as OutputType.None, they don't output anything 648c03c1
  • [FastBuild] Add a setting to disable file copy validation. Use with care! 1365033b
  • Remove restriction in FastBuild generation for IgnoreImportLibrary when ExportDllSymbols is set to false 82b891ca
  • Add DLL dependencies without ExportSymbols as BuildOrder dependencies if needed. d4928330
  • Add support for other SDK installed version, by overriding VCTargetsPath. 6d549b9c
  • Removed strange limitation not allowing a DLL to depend on an exe project 16bbbf50
  • Added feature "AllowOutputDllCopy" to inhibit the target copy when depending on a dll f85bb894
  • Improved ProjectReferencesByPath, now in a container to allow more fine grained options efc6be73
  • Support for utility output type 3d79637a
  • Added support for solution folders per solution 59186269
  • Write the full path to the profile json file in the generated/skipped log output, for consistency with the other generators d05e6a8d
  • [FastBuild] Add CompilerFamily.CSharp and CompilerFamily.Custom e1d16f5c
  • Add Support to wait debugger on non-windows system 035fbca6
  • Add option to prevent trying to copy linker generated pdb files that don't exist on some platforms. This doesn't fix anything broken but allows the user to suppress copy errors. 31280852
  • Remove TargetFileName property from the NMake template since it's unused and was wrong anyway 7e7a7534
  • Bump Microsoft.CodeAnalysis.CSharp from 3.9.0 to 3.10.0 89d504f3
  • Bump jurplel/install-qt-action from 2.13.0 to 2.13.2 d69aecf4
  • Add dependabot yaml d5b75c7f
  • Update WinSDK used by FastBuild functional tests. fabcc7c1
  • Avoid putting all sources into noBlob when PrecompSource is set to empty string.
  • Add project EnableDefaultItems property (#122) 44e19f25
  • Support generate debug symbols for apple Fastbuild project
  • Update NuGet package dependencies 4d18b9f6
  • Rename batch files solution dir to PascalCase for consistency 69f7d4f4
  • Ask msbuild to print a summary after its invocation in CompileSharpmake.bat 1a62c271
  • Remove color in compile sharpmake batch file 13774e5d
  • HelloXCode sample fixes/improvements 99a6204c
  • [XCode] Sort properties in XCBuildConfiguration like XCode does a34d16d3
  • [XCode] Sort properties in XCBuildConfiguration_Project like XCode does 0f39d0cb
  • [XCode] Sort properties in legacy target alphabetically to match XCode 3ebb7c22
  • [XCode] Open bracket on the same line in PBXSourcesBuildPhase 698c5ca8
  • [XCode] Remove empty line in item lists 198a5556
  • [XCode] Write ProjectLegacyTargets in the proper location in the file to match XCode eb01bd01
  • [XCode] Remove target file from PBXBuildFile section 7f938eb3
  • [XCode] Order the items per uid in the written files to match XCode's behavior 0011eeb4
  • [FastBuild|Mac] Use unversioned MacOSX.sdk directory by default, which is a symlink to latest. 5a36a42b
  • vcpkg sample fixes/improvements 2326cfa7
  • Always prefix /sources argument with @ in the CsprojUserFile for the sharpmake samples c82b4b58
  • Improve SimpleExeLibDependency sample 32c23e12
  • HelloQTSample fixes/improvements 72c5fed5
  • PackageReferences sample fixes/improvements cb705667
  • Improve HelloWorld sample 51a2d5f3
  • NetCore samples improvements 9b696828
  • Remove unused sharpmake file from CSharpWCF 4f825620
  • ConfigureOrder sample fixes/improvements b265ef16
  • FastBuildSimpleExecutable sam...
Read more

Sharpmake 0.16.1

21 Jun 07:43
Compare
Choose a tag to compare

Deprecation / removal of features

  • Remove support for old platforms (wii, wiiU, x360, ps3, nvshield) and mark their entries in the Platform enum Obsolete cdcb4e5

Bug fixes

  • .PreBuildDependencies mismatch fix between Exec() and ObjectList() which uses that exect.
    OtherArguments command line from build step included now too in name calculation. f88b0f1

Sharpmake 0.16.0

27 Mar 10:52
f605ddb
Compare
Choose a tag to compare

Deprecation / removal of features

  • Remove support for LLVM_vs2012 and LLVM_vs2014 PlatformToolsets, since they probably are broken anyway 7ff6ab2e
  • Remove code that has been marked Obsolete for a very long time b24704af
  • Remove deprecated TreatWarningAsError (notice the missing S at the end of warning) 6a454c19
  • Deprecate CommonLanguageRuntimeSupport.SafeMsilClrSupportOldSyntax value, since it has been removed in vs2008 or so 7ab57874
  • Rename SpectreMitigation.Enabled to SpectreMitigation.Spectre, and mark the old name Obsolete with a message 42b048df
  • Rename ShowProgress.DisplayAll and ShowProgress.DisplaysSome to ShowProgress.LinkVerbose and ShowProgress.LinkVerboseLib, and mark the old names Obsolete with a message a54cdc3d
  • Rename SubSystem.Application to SubSystem.Windows, and mark the old name Obsolete with a message c2a236ed

New features / improvements

  • Added pre/post event commands to makefile gen and use them in HelloLinux sample
  • [GithubActions] Only generate mdb files in release on windows. 871b34d2
  • [GithubActions] Allow CI to continue on failure 446700dd
  • Lower unitests output path 1077fa50
  • Allow overriding the sharpmake executable in the debug project extension. 00b96802
  • Move path util methods to their own file. 5bc3a91a
  • [Vcxproj] Remove all the useless code setting Executable, Include and Library Path VC++ directories when using a LLVM platform toolset c167bc58
  • Improve gitignore to ignore all temp directories under the codebases bc81433b
  • Add HelloClangCl sample 5b55a560
  • Update embedded FastBuild executables to latest 1.04 67f4f57c
  • Create CODE_OF_CONDUCT.md 9a1a586a
  • Create CONTRIBUTING.md 8c4a80d1
  • Demote the obsolete errors to warnings in the SpectreMitigation and ShowProgress options when using the deprecated values, and map them to the proper ones 79ecc58d
  • Demote the obsolete from error to warning in the SubSystem option when using the deprecated value Application, and map it to Windows. 6626df34
  • Update OVERVIEW.md ae2a9c5e
  • Update Intro.md 69c1b65c
  • Update Intro.md ea04b677
  • Add new entries in MSVC ForceFileOutput linker option enum 19c433c4
  • Add new entry UseFastLinkTimeCodeGeneration in MSVC LinkTimeCodeGeneration linker option enum 6fdecb58
  • Add new entries in MSVC SubSystem linker option enum c2a236ed
  • Add new entries in MSVC ShowProgress linker option enum a54cdc3d
  • Document some msvc options, using info extracted from MS xml files d8c5212d
  • Add vs2013 VectorCall option Options.Vc.Compiler.CallingConvention.vectorcall 0633ff4e
  • Add vs2019 AVX512 option Options.Vc.Compiler.EnhancedInstructionSet.AdvancedVectorExtensions512 ce9e20ad
  • Add new entries SpectreLoad and SpectreLoadCF in SpectreMitigation option enum 42b048df
  • Document VC options CommonLanguageRuntimeSupport 7ab57874
  • Document VC options WarningLevel and TreatWarningsAsErrors 6a454c19
  • Document some msvc options, using info extracted from MS xml files 4432f46b
  • Add support for MSVC 16.7 Asan 10d49850

Bug fixes

  • [Vcxproj] Linux debugging fixes
    • Lowercase drive letter in the various path, necessary because for some reason wsl mounts C: to /mnt/c
    • Ensure we have trailing slashes, otherwise VS will add the wrong slash to OutputDir if none is present
  • Removed wrong ending slash in OutDir and IntDir
  • Linux path: Lowercase drive letter. Ending slash.
  • Fix support for ClangCl PlatformToolset e6ae5fed
  • Wrap FastBuild executable in nmake build/rebuild commands with double quotes to fix invocation when ProjectDir contains spaces 13953499
  • Remove un-existing configurations from Pyproj
  • Fixed Sharpmake.Package attribute failing when using /generateDebugSolution
  • fix: add tmp to .gitignore 131f3e5e
  • fix(main): add AppDomain.UnhandledException to display exception details on all crashes 701e40c2
  • Catch all exceptions thrown by the read of the ReadCleanupDatabase. 0c7d8d42

Sharpmake 0.15.1

03 Mar 21:02
Compare
Choose a tag to compare

New features / improvements:

  • [GithubActions] Upload sharpmake release artifacts ea12162e
  • Lower the sharpmake target path ad1602af
  • Add support for modifiers in resolvable strings, for now, only lower is supported. 755bcd7a
  • Give public access to Sharpmake.Generators.FastBuild.UtilityMethods
  • Remove try/catch/throw that broke exception callstack

Bug fixes:

  • Compile runtime assembly in debug by default when builder context is null. 72f8ff40
  • Remove /debugScripts from the debug solution generation as well. 465166ed
  • Revert back to old behavior that compiles runtime assemblies in debug, because some code that relies on the Callstack (like current sharpmake file lookup) can misbehave when optim are active f2da9ba9
  • Fix display of warning messages of runtime assembly compilation when the compilation succeeds 46bab3d0
  • Fix determinism in fastbuid unity hash: was computing using absolute path projectPath