Skip to content

Releases: ubisoft/Sharpmake

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

Sharpmake 0.15.0

15 Feb 14:27
Compare
Choose a tag to compare

Important notes

  • This release of sharpmake is one of the most important we've ever done since
    we switched to roslyn to allow support for recent C# versions (up to version 7) in your sharpmake files!

  • Support for double quotes when invoking sharpmake will be dropped soon, so please replace them with single quotes as soon as possible.

    For example:

      Sharpmake.Application.exe /sources("main.sharpmake.cs")
    

    needs to be changed to

      Sharpmake.Application.exe /sources('main.sharpmake.cs')
    

New features / improvements

  • Make functional tests use vs2019 instead of vs2017 650bb8fa
  • Log more info on boot fc9c4fcf
  • Add support for Visual Studio 2019 /std:c11 and /std:c17 switches 4baf7e70
  • Add a way to copy to a subfolder in target path
  • Expose FASTBuild reproducible builds-related options in Sharpmake
  • Warn only on missing exclude
  • Print full FrameworkDisplayName on startup if possible. 4355cefb
  • Use new csproj file format for sharpmake and the debug project 9e90198d
  • Allow passing an optimisation to boostrap batch file a9a797f4
  • Improvements in utility methods on non windows platforms d328150e
  • Use RunningOnUnix instead of Mono to determine whether to lower the path or not in PathMakeStandard, which was the original intention 472d3ccd
  • Remove dependency to Microsoft.Build.Utilities.Core, and only consider one dotnet framework directory as source 04870612
  • Add a global SharpmakeDotNetFramework following the same principle as the c# version 7616310a
  • Minimal support globbing for csproj
  • Add linux binary of FastBuild 1.01, and adapt scripts 442eb155
  • Make Project.AfterConfigure virtual to allow user to override it, and be consistent with PreConfigure which is already virtual. c916d626
  • Improve dotnet Sdk support 4d648be4
  • Silence the warning if a kitsroot path is not found. 9bb8a20a
  • Use single quotes instead of double quotes in debug project start arguments since they are cross platform. 4dec87b0
  • Bump verbosity of the msbuild command used to build sharpmake to minimal instead of quiet 75add8cb
  • Add a global constant that contains the c# version sharpmake scripts support, c#7 at the moment 1626b49c
  • Add a release optimization in the debug solution, and add the newly created /debugScripts to the arguments in debug aa20a960
  • Add a new command line argument /debugScripts to allow compiling the sharpmake scripts in debug, to ease their debugging 895d89f6
  • Move back all sharpmake binaries so they are output in the same directory, tmp/bin/[Optim] 558bb752
  • Add an appilcation argument /generatedebugsolutiononly to only generate the...
  • Add net5 support 6f05d8b8
  • Expose the static FileSystemComparer instance as Default to allow its use in user code 2b62cadd
  • Add utility method to know if we are running on unix, and use it where it makes sense in the codebase instead of the IsRunningInMono b82bcfd7
  • Add utility method to know if we are using dotnet core instead of .net framework b82bcfd7
  • Log the os and the framework sharpmake uses on startup b82bcfd7
  • By default will now generate all csproj except the versioned ones in the tmp folder 7382ce9b
  • Added vcpkg sample
  • Add support for ExecAlways flag to BuildStepExecutable step 3744a356
  • Remove ResharperAnnotations from the codebase, we barely use it and it creates issues in client code. d6b4b133
  • Remove /profileoutput command line, since we now have the superior /profile e8738b5b
  • [FastBuild] Add new DLL dependency of vs2019 16.8 toolchain to the compiler section ba259268
  • [Sln] Order the executable retrieval by project filename to make the sln output deterministic 1f5f8888
  • Otpim: move type methods retrieval after we've checked that objectPath wasn't null d0f2fa4c
  • Print the nb of configurations in the profiler tag 3c242bd8
  • Fix templated project type names in profiler file a51bbd3b
  • Respect MSVC "conformance mode" compiler option in generated .bff files

Bug fixes

  • Fix CompileSharpmake.bat so we return a proper exit code b41a62d3
  • Return a succesful exit code (0) if sharpmake is run with /help, but exit with error in case it is run without any arguments a0c0c7fe
  • Fix Framework display name with net5. f537c97b
  • Fix a failure in the MockPath unit tests.
  • Fix GetString, was always returning an empty string... 021a3310
  • Fix for library file with fullpath being wrongly reported as missing if no...
  • [Csproj] Use OrdinalIgnoreCase for sorting because for some reasons InvariantCulture changes depending on the machine... 22af20b9
  • Use AssemblyBuilder namespace instead AppDomain.CurrentDomain to be netcore compliant. cfb534cb
  • Bug fix: missing project configurations in solution when using multiframework
  • Use Location instead of CodeBase to initialize the fake path prefix, since the latter throws starting with .NET 5.0 50f1142f
  • [Profiling] Fix the solution type that wasn't displayed in the profiling json 4dd97a16
  • [Makefile] Fix sorting of include/lib paths and files, the weight set in the orderable strings wasn't taken into account 43e1d794

Sharpmake 0.14.6

22 Oct 15:42
Compare
Choose a tag to compare

New features / improvements

  • Add support for CustomTargetsFiles in csproj
  • Add ProduceReferenceAssembly option for csproj
  • Allow Sharpmake to dump profiling tags as a JSON that can be opened in Chrome

    Add /profile("c:\path\to\file.json") to the command line, and open the
    file by navigating to chrome://tracing.

Bug fixes

  • [Bff] Fix intermittent bug when collecting natvis files.

Sharpmake 0.14.5

12 Oct 10:27
Compare
Choose a tag to compare

Important notes

  • .net framework v2 and v3 have been deprecated

New features / improvements

  • Allow fragment values to be marked obsolete without triggering an exception in case their value is not valid ff0d40d2
  • Added support for .NET Framework 4.8 project generation 0abf3f5d
  • The path to the .bff file in the FastBuildAll .vcxproj is no longer an absolute path. d74576b5
  • The names of Exec, Copy & Test buildsteps are now independent of the absolute project root path. 897d2d85
  • Added FastBuild PreBuildDependency support for Pre/PostBuildEvents.
  • 2 Sharpmake optims 09f86a1e
  • Add Ubuntu to appveyor 46fed7a3
  • Resolve conf.BaseIntermediateOutputPath and conf.XmlDocumentationFile so they can be given relative to SourceRootPath 7ee54a2e
  • Add new copy advanced properties introduced in VS2019 16.7
  • Collect natvis files from dependencies for dll & exe
  • [Vcxproj] Allow explicit specification of object file paths for only a subset of source files.
  • Add support to dotnetstandard (all versions) and conditional ItemGroup in case...
  • [Clang] Add Clang C standart, and add value to Clang Cpp/C standart in CommandLineOptions
  • Add ClangCL PlatformToolset entry to support the official llvm2019 VS extension

Bug fixes

  • Fixup obsolete fragment values of -1, and rather allow giving a fallback fragment value. 3dd5c9d8
  • Also deprecate .net framework 3.0, minimum supported is 3.5 4437a8ca
  • [ClangForWindows] Fix -nostdinc additional parameter:
  • Fix handling of empty conf.XmlDocumentationFile and conf.BaseIntermediateOutputPath properties b4c362c2
  • [CSharp] Fix BaseIntermediateOutputPath (and probably other properties) 044dc24c
  • [Makefile] Fix implicit defines. 8f56568d
  • [Makefile] Fix output file name prefix with OutputType.Dll. 10c6aa8f
  • [XCode] Remove duplicates of frameworks files and sort them
  • Fix string macro failed the compile for Android
  • [XCode] Fix test of output type, it's not a flag. 0a3e75df
  • [Bff] Fix crash when a source directory is empty of source files that can be blobbed c474ab9b
  • [Csproj] Fix regression introduced by 21ae290, the references weren't sorted anymore
  • [Vcxproj|Linux] Always set application type revision in linux vcxproj even for fastbuild projects to fix debugging d95ab5a2
  • Alpine adding PlatformRemoteTool clang select
  • Fix masterbff casing errors
  • [XCode] Keep source files into solution to be able to navigate into them
  • Fix configure attributes cache 260e4009

Sharpmake 0.14.4

23 Jul 15:52
Compare
Choose a tag to compare

New features / improvements

  • [Csproj] Adding ProductVersion option

Sharpmake 0.14.3

20 Jul 11:06
Compare
Choose a tag to compare

New features / improvements

  • [HelloXCode] Rename static_lib2 so it contains a space, to validate that include paths are properly escaped

Bug fixes

  • [XCode] Fix resource build phase. Only process source files to prepare source build phase.
  • Fix defines in JSON compilation db
  • [FastBuild] Revert the move of the double quotes after the prefix, since FastBuild doesn't expect arguments to be wrapped.

Sharpmake 0.14.2

16 Jul 15:56
Compare
Choose a tag to compare

New features / improvements

  • [XCode] Harmonize use of tabs in xcodeproj files

Bug fixes

  • New fix to IncludeSystemPaths for MSBuild + MSVC
  • Fix functional_test base class so it uses the new style
  • [FastBuild] Fix preprocessor definitions taking a string argument