Skip to content

Tags: rAzoR8/Sharpmake

Tags

0.17.2

Toggle 0.17.2's commit message
Sharpmake 0.17.2 release notes

New features / improvements

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

Bug fixes

- [XCode] Fix output and intermediate dirs Sharpmake/sharpmake!160
- Fix include system paths with non win64 platforms
- Fix rc compilation with external includes, we now always use the includes prefixed with the default prefix
- [C#] Fix DotNetOS fragment handling and add a sample to demonstrate how to use it
- Fix unit-test exception type
- 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.

0.17.1

Toggle 0.17.1's commit message
Sharpmake 0.17.1 release notes

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 [5ebdfe3](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/5EBDFE3AB769A9AB9FE9C6F8E93168DD7A8E4E49)
- Try and improve compile time of sharpmake and its tests in cmd line by passing /maxcpucount and /p:CL_MPCount to msbuild [21f3b2f](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/21F3B2FE359285784E87110CF77886D0BC0AC0CB)
- [FastBuild] Set FastBuildSettings.SetPathToResourceCompilerInEnvironment to true by default [fd3e9fc](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/FD3E9FCBA1B195618F9F03246122B30E39E0C2C8)
- [FastBuild] Create a compiler node for rc.exe with the type custom [1d43dfb](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/1D43DFB1C0C4A7E55217A2DEDFE69EC336B31C5C)
- bring back the code that supported the use of the LLVM Platform Toolset [465c2a9](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/465C2A94267F67A0981369A67EC4A713A275F0A3)

Bug fixes

- Fixing custom build step generation for FastBuild [bcbfdee](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/BCBFDEEF1A94501149F8B7276261258737887889)
- [Bff] Prevent the custom build steps from always running. If that becomes a requirement it needs to be implemented differently. [5f02688](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/5F02688FB7357E220D2712E6E2B0D6126746A743)
- [FastBuild] Quick and dirty fix for Masm ml64.exe not being recognized by FastBuild [9236979](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/92369798B93BFAE7B2FDF6CF0F776C3EC591C638)
- [Bff] Prevent generating the LibraryDependency Alias for the FastBuildAll project [7047700](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/70477004A5ADC77B826D02A475B2DA4F6BE0C47A)
- [Bff] Fix LibraryDependency nodes in case the library generation was skipped by the option UseLibraryDependencyInputs.Enable [7b67701](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/7B677013DC325153B15C6F27CBA416100BE15655)
- [HelloClangCl] Add a use case for the UseLibraryDependencyInputs.Enable to make sure the issue we fixed at 7b67701 doesn't happen again [4257b4d](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/4257B4DDE5CBC4228DF4C8900DB32D69B805AA64)
- [Bff] Remove empty line in the Library node header [104e975](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/104E975AD7AC6F4B0B09CC168907BDDAFBC73D48)
- [Bff] Fix indentation of the first line in some nodes [6b8fda3](https://gitlab-ncsa.ubisoft.org/Sharpmake/sharpmake/commit/6B8FDA313F7070CB3141BFB945C361E4DA2054D2)

0.17.0

Toggle 0.17.0's commit message
Sharpmake 0.17.0 release notes

Important notes

- MAJOR CHANGE to target/output names handling

Deprecation / removal of features

- Deprecate vs2010/vs2012/vs2013, as well as their PlatformToolset
- Rename a bunch of properties/methods and mark some Obsolete instead of changing their meaning, making the API change of e4671da more obvious
- Remove old .reg and .bat files used to register .sharpmake extension. We now use and recommend using .sharpmake.cs which make those irrelevant.

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.
- Resolve AdditionalSourceRootPaths before use
- Bump nuget packages to latest versions in Sharpmake.UnitTests
- 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.
- Add a post build execute step in the HelloClangCl sample to exhibit a bug
- Add a TargetCopyFilesPath option to override TargetPath for TargetCopyFiles
- Register an empty extension for OutputType.Utility, since same as OutputType.None, they don't output anything
- [FastBuild] Add a setting to disable file copy validation. Use with care!
- Remove restriction in FastBuild generation for IgnoreImportLibrary when ExportDllSymbols is set to false
- Add DLL dependencies without ExportSymbols as BuildOrder dependencies if needed.
- Add support for other SDK installed version, by overriding VCTargetsPath.
- Removed strange limitation not allowing a DLL to depend on an exe project
- Added feature "AllowOutputDllCopy" to inhibit the target copy when depending on a dll
- Improved ProjectReferencesByPath, now in a container to allow more fine grained options
- Support for utility output type
- Added support for solution folders per solution
- Write the full path to the profile json file in the generated/skipped log output, for consistency with the other generators
- [FastBuild] Add CompilerFamily.CSharp and CompilerFamily.Custom
- Add Support to wait debugger on non-windows system
- 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.
- Remove TargetFileName property from the NMake template since it's unused and was wrong anyway
- Bump Microsoft.CodeAnalysis.CSharp from 3.9.0 to 3.10.0
- Bump jurplel/install-qt-action from 2.13.0 to 2.13.2
- Add dependabot yaml
- Update WinSDK used by FastBuild functional tests.
- Avoid putting all sources into noBlob when PrecompSource is set to empty string.
- Add project EnableDefaultItems property (ubisoft#122)
- Support generate debug symbols for apple Fastbuild project
- Update NuGet package dependencies
- Rename batch files solution dir to PascalCase for consistency
- Ask msbuild to print a summary after its invocation in CompileSharpmake.bat
- Remove color in compile sharpmake batch file
- HelloXCode sample fixes/improvements
- [XCode] Sort properties in XCBuildConfiguration like XCode does
- [XCode] Sort properties in XCBuildConfiguration_Project like XCode does
- [XCode] Sort properties in legacy target alphabetically to match XCode
- [XCode] Open bracket on the same line in PBXSourcesBuildPhase
- [XCode] Remove empty line in item lists
- [XCode] Write ProjectLegacyTargets in the proper location in the file to match XCode
- [XCode] Remove target file from PBXBuildFile section
- [XCode] Order the items per uid in the written files to match XCode's behavior
- [FastBuild|Mac] Use unversioned MacOSX.sdk directory by default, which is a symlink to latest.
- vcpkg sample fixes/improvements
- Always prefix /sources argument with @ in the CsprojUserFile for the sharpmake samples
- Improve SimpleExeLibDependency sample
- HelloQTSample fixes/improvements
- PackageReferences sample fixes/improvements
- Improve HelloWorld sample
- NetCore samples improvements
- Remove unused sharpmake file from CSharpWCF
- ConfigureOrder sample fixes/improvements
- FastBuildSimpleExecutable sample fixes/improvements
- Stop changing the working directory in the CompileSharpmake batch file
- Add vcpkg sample to the solution
- Add batch files and github actions to the solution as extra items
- [GithubActions] Fixes/improvements
- HelloLinux sample fixes/improvements
- Make resolver throw an exception in case a variable that's resolved is null
- [Csproj] ToolsVersion needs to be more global

Bug fixes

- [Vcxproj|ClangCl] Fix vcxproj opening with PlatformToolset.ClangCl when LLVMInstallDir is overriden but the version is different from the one embedded in VS
- Bff uses IgnoreSpecificLib options to also skip project dependencies instead of only external libraries, same as vcxproj
- Fix dependency order for file custom build steps and target copy files, to ensure they're executed before the post-build steps, and that file custom build steps output are correctly linked against the executable (same as for MSBuild)
- Fix undeterministic bff generation by sorting the dependencies by Guid
- [Bff] Fix static lib extension in bff in case it doesn't start with a dot
- Fix build order dependency from exe to exe not correctly added in FastBuild
- Fix undeterministic sln generation, causing the solution to be reloaded at every generation, or rebuilds occuring when they shouldn't
- Fix wrong precompiled header paths for Android
- Fix dependencies not using a sorted UniqueList, making it sometime undeterministic.
- Account for CreateHotPatchableCode/Image when generating vcxproj/BFF from the template.
- Fixed debug project generator working directory
- Fixed incorrect handling of only build order with csproj
- Fix analysis warning IDE0049: Name can be simplified
- Fix linux linker options Options.Linker.EditAndContinue.Enable, Options.Linker.InfoStripping.StringDebug and StripSymsAndDebug
- .PreBuildDependencies mismatch fix between Exec() and ObjectList() which uses it
- Fixing invalid /sources command line parameters in the csproj.user file created via /generateDebugSolution
- Fix compilation of HelloClangCl sample with vs2019 16.10 by disabling /MP when using MSBuild
- Fix determinism in blob generation: use sorted source files list when computing blobs.
- [XCode] Remove duplicated CONFIGURATION_BUILD_DIR variable from XCBuildConfiguration
- [XCode] Fix typo in template, native was written instead of legacy
- [FastBuild|XCode] Fix dll link by adding syslibroot to the linker arguments.
- Fix CSharpVsix project
- Fix CSharpImports sample so it can be built
- Fix CPPCLI sample
- Fix compile command db on github actions by setting win sdk to a more recent one.

0.16.1

Toggle 0.16.1's commit message
Sharpmake 0.16.1 release notes

Deprecation / removal of features

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

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.

0.16.0

Toggle 0.16.0's commit message
Sharpmake 0.16.0 release notes

Deprecation / removal of features

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

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.
- [GithubActions] Allow CI to continue on failure
- Lower unitests output path
- Allow overriding the sharpmake executable in the debug project extension.
- Move path util methods to their own file.
- [Vcxproj] Remove all the useless code setting Executable, Include and Library Path VC++ directories when using a LLVM platform toolset
- Improve gitignore to ignore all temp directories under the codebases
- Add HelloClangCl sample
- Update embedded FastBuild executables to latest 1.04
- Create CODE_OF_CONDUCT.md
- Create CONTRIBUTING.md
- Demote the obsolete errors to warnings in the SpectreMitigation and ShowProgress options when using the deprecated values, and map them to the proper ones
- Demote the obsolete from error to warning in the SubSystem option when using the deprecated value Application, and map it to Windows.
- Update OVERVIEW.md
- Update Intro.md
- Update Intro.md
- Add new entries in MSVC ForceFileOutput linker option enum
- Add new entry UseFastLinkTimeCodeGeneration in MSVC LinkTimeCodeGeneration linker option enum
- Add new entries in MSVC SubSystem linker option enum
- Add new entries in MSVC ShowProgress linker option enum
- Document some msvc options, using info extracted from MS xml files
- Add vs2013 VectorCall option Options.Vc.Compiler.CallingConvention.vectorcall
- Add vs2019 AVX512 option Options.Vc.Compiler.EnhancedInstructionSet.AdvancedVectorExtensions512
- Add new entries SpectreLoad and SpectreLoadCF in SpectreMitigation option enum
- Document VC options CommonLanguageRuntimeSupport
- Document VC options WarningLevel and TreatWarningsAsErrors
- Document some msvc options, using info extracted from MS xml files
- Add support for MSVC 16.7 Asan

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
- Wrap FastBuild executable in nmake build/rebuild commands with double quotes to fix invocation when ProjectDir contains spaces
- Remove un-existing configurations from Pyproj
- Fixed Sharpmake.Package attribute failing when using /generateDebugSolution
- fix: add tmp to .gitignore
- fix(main): add AppDomain.UnhandledException to display exception details on all crashes
- Catch all exceptions thrown by the read of the ReadCleanupDatabase.

0.15.1

Toggle 0.15.1's commit message
Sharpmake 0.15.1

New features / improvements:

- [GithubActions] Upload sharpmake release artifacts
- Lower the sharpmake target path
- Add support for modifiers in resolvable strings, for now, only lower is supported.
- 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.
- Remove /debugScripts from the debug solution generation as well.
- 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
- Fix display of warning messages of runtime assembly compilation when the compilation succeeds
- Fix determinism in fastbuid unity hash: was computing using absolute path projectPath

0.15.0

Toggle 0.15.0's commit message
- This release of sharpmake is one of the most important we've ever d…

…one 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')
  ```

- Make functional tests use vs2019 instead of vs2017
- Log more info on boot
- Add support for Visual Studio 2019 /std:c11 and /std:c17 switches
- Add a way to copy to a subfolder in target path Sharpmake/sharpmake!202
- Expose FASTBuild reproducible builds-related options in Sharpmake Sharpmake/sharpmake!192
- Warn only on missing exclude Sharpmake/sharpmake!205
- Print full FrameworkDisplayName on startup if possible.
- Use new csproj file format for sharpmake and the debug project
- Allow passing an optimisation to boostrap batch file
- Improvements in utility methods on non windows platforms
- Use RunningOnUnix instead of Mono to determine whether to lower the path or not in PathMakeStandard, which was the original intention
- Remove dependency to Microsoft.Build.Utilities.Core, and only consider one dotnet framework directory as source
- Add a global SharpmakeDotNetFramework following the same principle as the c# version
- Minimal support globbing for csproj Sharpmake/sharpmake!197
- Add linux binary of FastBuild 1.01, and adapt scripts
- Make Project.AfterConfigure virtual to allow user to override it, and be consistent with PreConfigure which is already virtual.
- Improve dotnet Sdk support
- Silence the warning if a kitsroot path is not found.
- Use single quotes instead of double quotes in debug project start arguments since they are cross platform.
- Bump verbosity of the msbuild command used to build sharpmake to minimal instead of quiet
- Add a global constant that contains the c# version sharpmake scripts support, c#7 at the moment
- Add a release optimization in the debug solution, and add the newly created /debugScripts to the arguments in debug
- Add a new command line argument /debugScripts to allow compiling the sharpmake scripts in debug, to ease their debugging
- Move back all sharpmake binaries so they are output in the same directory, tmp/bin/[Optim]
- Add an appilcation argument /generatedebugsolutiononly to only generate the... Sharpmake/sharpmake!203
- Add net5 support
- Expose the static FileSystemComparer instance as Default to allow its use in user code
- 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
- Add utility method to know if we are using dotnet core instead of .net framework
- Log the os and the framework sharpmake uses on startup
- By default will now generate all csproj except the versioned ones in the tmp folder
- Added vcpkg sample Sharpmake/sharpmake!199
- Add support for ExecAlways flag to BuildStepExecutable step
- Remove ResharperAnnotations from the codebase, we barely use it and it creates issues in client code.
- Remove /profileoutput command line, since we now have the superior /profile
- [FastBuild] Add new DLL dependency of vs2019 16.8 toolchain to the compiler section
- [Sln] Order the executable retrieval by project filename to make the sln output deterministic
- Otpim: move type methods retrieval after we've checked that objectPath wasn't null
- Print the nb of configurations in the profiler tag
- Fix templated project type names in profiler file
- Respect MSVC "conformance mode" compiler option in generated .bff files Sharpmake/sharpmake!191

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

0.14.6

Toggle 0.14.6's commit message
Sharpmake 0.14.6

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.

0.14.5

Toggle 0.14.5's commit message
Sharpmake 0.14.5

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
- Added support for .NET Framework 4.8 project generation
- The path to the .bff file in the FastBuildAll .vcxproj is no longer an absolute path.
- The names of Exec, Copy & Test buildsteps are now independent of the absolute project root path.
- Added FastBuild PreBuildDependency support for Pre/PostBuildEvents.
- 2 Sharpmake optims
- Add Ubuntu to appveyor
- Resolve conf.BaseIntermediateOutputPath and conf.XmlDocumentationFile so they can be given relative to SourceRootPath
- 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.
- Also deprecate .net framework 3.0, minimum supported is 3.5
- [ClangForWindows] Fix -nostdinc additional parameter:
- Fix handling of empty conf.XmlDocumentationFile and conf.BaseIntermediateOutputPath properties
- [CSharp] Fix BaseIntermediateOutputPath (and probably other properties)
- [Makefile] Fix implicit defines.
- [Makefile] Fix output file name prefix with OutputType.Dll.
- [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.
- [Bff] Fix crash when a source directory is empty of source files that can be blobbed
- [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
- 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

0.14.4

Toggle 0.14.4's commit message
Sharpmake 0.14.4 release notes

New features / improvements:
- [Csproj] Adding ProductVersion option