Skip to content

Releases: ubisoft/Sharpmake

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

Sharpmake 0.14.1

15 Jul 14:31
Compare
Choose a tag to compare

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

Sharpmake 0.14.0

11 Jun 14:56
Compare
Choose a tag to compare

Important notes

This version changes the way the vs overrides work, especially with vs2019.

New features / improvements

  • [WindowsSDK] Add helper to auto detect highest installed windows sdk instead of using hardcoded version.
  • Add support for CPP 17 in Xcode
  • 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.
  • 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

  • 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
  • [Scripts] Reset console color before running scripts that change console color on completion.
  • Fix ResolvedDependsFiles, it shouldn't contain TargetCopyFiles
  • Fix dynamic library dependency when you change OutputExtension option
  • [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.
  • 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
  • Use proper devEnv value when retrieving the CppPlatformFolder

Sharpmake 0.13.3

20 May 08:37
Compare
Choose a tag to compare

Bug fixes

  • Fix win64 support for old vs versions.

Sharpmake 0.13.2

19 May 13:44
Compare
Choose a tag to compare

New features / improvements

  • [Util] Added file copy readonly policy
  • Changes the behavior of DependencySetting.OnlyBuildOrder to add the target as a vcxproj project reference, or a prebuild dependency in FastBuild.
  • Prevent writing empty sections in win64 vcxproj when toolchains are not overriden
  • Add a conf option to allow the generator to output full paths instead of relative paths.
  • Adds support for whole archive in Linux.
  • Add new utility extension method GetVisualStudioVCRedistVersion
  • Add support for Windows SDK 10.0.19041.0
  • Add Compile Sharpmake script for MacOS
  • Add a HasPrecomp method in IPlatformVcxproj, since not all platforms need to have a PrecompSource to activate pch
  • [Android] Change default Stl lib to libc++_shared
  • [Android] Add "Latest" to the AndroidAPILevel option, that will allow sharpmake to auto-detect and set the latest api level found
  • [Android] Change the way we do the override of MSBuild files with vs2017, in some cases the files from the local VS install were still used
  • [Android] Add a Default option in ShowAndroidPathsVerbosity, which will use whatever msbuild has as default, and use it as default
  • [Androidproj] Implement ShowAndroidPathVerbosity option
  • [Android] Implement toolchain and MSBuild files redirection with vs2017
  • Remove restriction of devenv on SetAdditionalVCTargetsPath
  • [Android] Implement clang 3.6 as an option, in case we use AppTypeRevision 1.0, and add the revisions supported by each entry as a comment
  • [Vcproj][Android] Make ApplicationTypeRevision an option
  • [Vcxproj|AndroidProj] Android support improvements
  • Remove redundant attributes on configures in unit-test
  • [Vcxproj] Linux support improvements
  • Add macOS to AppVeyor CI, and various improvements
  • Improve error log when the resolver cannot resolve
  • Update solution generation info in Readme

Bug fixes

  • Fix hardcoded .dll extension, since it depends on the platform, we query it
  • [Vcxproj|Linux] Fix LocalRemoteCopySources tag, should write true/false instead of Yes/No
  • Fix generation of vs2019 when additionalVCTargetsPath is null
  • Fixed discrepancy in how Sharpmake determines which projects to build between single and multithreaded modes
  • Make sure JSON float serialization is culture invariant
  • [Android] Fix the post import section, was written more than necessary
  • Fix NDKRoot option
  • Fix default values in string options, they need to be public as well as static
  • Fix dependency tracker crash when a FastBuildAll project is generated in a solution.