Skip to content

Tags: constcuriosity/Sharpmake

Tags

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

0.14.3

Toggle 0.14.3's commit message
Sharpmake 0.14.3

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.

0.14.2

Toggle 0.14.2's commit message
Sharpmake 0.14.2

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

0.14.1

Toggle 0.14.1's commit message
Sharpmake 0.14.1

New features / improvements:
- Allow Fastbuild executable projects to be generated individually.
- [Android] Specify the name of the AppLib in the Android Package
- Add a TryGetFragment method to retrieve a fragment only if it exists without throwing an exception
- [DebugSolutionGenerator] Remove the convoluted code to detect if we should use the local sharpmake DLL, since from the core's perspective, it should always be the case
- [HelloXCodeSample] Add as an example a define with a string value containing a space
- [XCode] Add possibility to force quotes in list and item formatter, and use it
- [XCode] Add a GenerationContext (thanks to Guillaume Buchle)
- [XCode] Add new Options for XCode projects
- Add new utility method to test the existence of a typed option in a configuration
- [XCode] Add strip linked product option
- [ClangForWindows] Standardize the path passed by the user
- [XCode] Add support for legacy targets and FastBuild
- [FastBuild] Experimental: a fastbuild project configuration will now keep a list of the master bff path it appears in
- [FastBuild|Vcxproj] Rename the internal NMake command generator to better match what it is and does
- [Util] Add Resolve and fix case methods for string and generic enumable types
- [Clang] Add Target Triple generator
- Add utility method to return the platform executing sharpmake
- Update FastBuild executable to 1.01 version, and add osx version
- [XCode] Change the product type for OutputType.Exe to tool instead of application
- [XCode] Add Enable Bitcode to options
- [Optimization] Regex match cache
- Add simple binding redirect to latest referenced version in Builder
- Updates pyproj generator to be compatible with vs2017+ versions
- Fix to enable FastBuild on other IDE than VisualStudio
- [XCode] Enable fastbuild generation xcode
- [IOS] Add FastBuild support for iOS
- Have sharpmake generate a default .csproj.user for each sample to ease their debugging
- Add new sample, HelloXCode
- [XCode] Add support for OutputType.Dll
- [XCode] Disable exceptions by default, for consistency purposes with other platforms
- Added GeneratedAssemblyConfig for C# projects
- [XCode] Change the default LibraryStandard to LibCxx to match recent XCode versions
- Experimental! In vcxproj, in case we've overriden the vs install, set the variable in the vcxproj to disable installed VCTargets use.
- Change the way Vc overrides work with vs: we don't write the global VCTargetsPath anymore, since this is very error prone
- Add a new extension method to retrieve the vcTargetsPath and vcInstallDir keys to use per devenv in the vcxproj files
- Add new utility method to retrieve the default devenv corresponding to a platform toolset. Will return null if unknown.
- Add new extension method to retrieve the VCTargetsPath corresponding to a devenv
- Add an accessor to know if the kits root for a particular devenv has been overriden
- Add a new untyped option container, to allow an option to take whatever as argument, like another option
- Make the GetLLVMOverridesSection method public so it can be accessed from platform modules
- New FastBuildSettings option: FastBuildNoSummaryOnError, false by default

Bug fixes:
- [Android] Fix the Cpp standard for Visual Studio
- [XCode] Fix Xcode duplication of build phases
- Removed logic in BuildStepCopy that determined IsFileCopy based on a '.' in the destination path
- [Vcxproj] Disable use of versioned VCTargets key when importing default props, for some reasons it breaks loading old vcxproj in recent visual studio
- [FastBuild][XCode] Fix defines in XCodeProj and Bff
- [XCode] Fix XCode Scheme option, missing template declaration
- [Util] Fix Windows platform detection, use correct PlatformID
- [XCode] Only add one product per target, and its output file
- [XCode] Set proper prefix to output files
- [XCode] Fix BuildableName prefix in case of DLL output
- Restrict type probing to visible ones when looking for builder event attributes to prevent exceptions with mono
- enforce bash for .sh scripts
- [XCode] Fix single element format with space
- [XCode] Use tabs in the xcodeproj template to match what XCode writes.
- [XCode] Fix OutputType.None, and workaround for IosApp and IosBundle output types
- [Apple|FastBuild] Add the platform library files
- [Apple|FastBuild] Workaround to get the map file properly generated
- [Apple|FastBuild] Fix output type and extension
- [Apple] Move SDK root setting to the base apple platform instead of iOS, and implement it on MacOS
- Use Path combine to create the path of the map file
- [Apple] TODO: UseThinArchives cannot use the linux linker option
- [Mac|FastBuild] Move most of the code from iOsPlatform to the BaseApplePlatform, since they are non specific
- [FastBuild] Fix quotes macos for defines and include path
- [FastBuild] Only write the Environment section if a bff has at least a config needing it
- [FastBuild] Fix the TEMP environment variable for MacOS
- Only fill manifest tool options in case visual studio is used
- [Apple] Move non-specific code from iosPlatform to base Apple Platform
- Fix project generation issues on Android.
- [XCode] Fix space in configuration name
- [XCode] Fix list format
- Add scriptable build phase XCode
- Disable compile stage fastbuild xcode
- Fix typo in default sample sharpmake main extension...
- Formatting and license headers fixes
- [XCode] Fix libary files and path management
- [XCode] Readability improvement: use auto properties in more classes
- [XCode] Update template to have open brackets on the same line as equal sign, closer to what XCode generates
- [XCode] Fix scheme file optimization: write the first configuration target name instead of hardcoding Debug
- [XCode] Change default archs value to 64_BIT only
- [XCode] Fix source files excluded from build
- [XCode] Add utility methods to write list of string items, properly formatted
- [XCode] Fix MachOType for OutputType.Dll
- [XCode] Move setting of ProvisioningStyle with ProvisioningProfile
- Sort sample classes by name, help my sanity
- Fix XCode output Path for static libraries
- Fixed compile error of AssemblerContext in SharpmakeFileParserTest.
- Allow new defines at parsing stage
- [XCWorkspace] Remove duplicated call to GetCapitalizedPath
- Fix multidots in resolver exception message when printing subobjects properties
- Fix CURRENT_DIR in .sh files, in case the script is called from another one
- Fix systemIncludes in vcxproj in case no include path was previously set
- Fix discrepancies between MT and non MT generations.
- Stop parsing of sharpmake files in case the first line begins with namespace
- Fix ResolvedDependsFiles, it shouldn't contain TargetCopyFiles
- Add support for CPP 17 in Xcode
- Fix dynamic library dependency when you change OutputExtension option
- Add DS_Store to gitignore
- [FastBuild] Fix Link of IosApp for FastBuild conf
- Use the versionned VCTargetsPath variable in case vs is overriden to get the correct props/targets imported.
- In new NetCore project .csproj, we can support multiple DotNet framework in the same .csproj. When finding multiple frameworks, Sharpmake will automatically switch to new netcore projects schema to properly support multiple framework configuration. We had to tweak .sln generation to avoid duplication in configuration name in that case, MSBuild support compiling all targets for a configuration name.
- Use proper devEnv value when retrieving the CppPlatformFolder