Skip to content

Commit

Permalink
Rename a bunch of properties/methods and mark some Obsolete instead o…
Browse files Browse the repository at this point in the history
…f changing their meaning, making the API change of e4671da more obvious

The biggest change is that the user code should never have to add a leading "." anymore when getting the extensions from sharpmake
Most methods and properties now have "Full" in their name.

- Deprecate conf.OutputExtension and create a new property conf.TargetFileFullExtension to replace it
- conf.TargetFilePrefix now gets back its original meaning, symetric to conf.TargetFileSuffix
- Add conf.TargetFilePlatformPrefix which will be set by sharpmake if left null to the platform specific prefix according to the output, for instance "lib" on linux of libraries
- GetDefaultOutputExtension is now GetDefaultOutputFullExtension
- conf.(Executable|CompressedExecutable|Dll|ProgramDatabase)Extension are now ending with FullExtension instead
- In IPlatformVcxproj, (ExecutableFile|PackageFile|SharedLibraryFile|ProgramDatabaseFile|StaticLibraryFile|StaticOutputLibraryFile)Extension are now ending with FullExtension instead
- GeneratorSetGeneratedInformation is renamed to GeneratorSetOutputFullExtensions, and expect full extensions as arguments
  • Loading branch information
belkiss committed Jul 4, 2021
1 parent ee3c8d0 commit 878b14f
Show file tree
Hide file tree
Showing 15 changed files with 153 additions and 100 deletions.
10 changes: 5 additions & 5 deletions Sharpmake.Generators/FastBuild/Bff.cs
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ List<string> skipFiles
{
fastBuildOutputFileShortName += "_" + subConfigIndex.ToString();

var staticLibExtension = vcxprojPlatform.StaticLibraryFileExtension;
var staticLibExtension = vcxprojPlatform.StaticLibraryFileFullExtension;

fastBuildOutputFile = Path.ChangeExtension(fastBuildOutputFile, null); // removes the extension
fastBuildOutputFile += "_" + subConfigIndex.ToString();
Expand Down Expand Up @@ -1520,7 +1520,7 @@ private static OrderableStrings FillLibrariesOptions(BffGenerationContext contex

Strings ignoreSpecificLibraryNames = Options.GetStrings<Options.Vc.Linker.IgnoreSpecificLibraryNames>(context.Configuration);
ignoreSpecificLibraryNames.ToLower();
ignoreSpecificLibraryNames.InsertSuffix(platformVcxproj.StaticLibraryFileExtension, true);
ignoreSpecificLibraryNames.InsertSuffix(platformVcxproj.StaticLibraryFileFullExtension, true);

context.CommandLineOptions["AdditionalDependencies"] = FileGeneratorUtilities.RemoveLineTag;
context.CommandLineOptions["AdditionalLibraryDirectories"] = FileGeneratorUtilities.RemoveLineTag;
Expand Down Expand Up @@ -1627,11 +1627,11 @@ Strings ignoreSpecificLibraryNames
string extension = Path.GetExtension(libraryFile).ToLower();

// here we could also verify that the path is rooted
if (extension != platformVcxproj.StaticLibraryFileExtension && extension != platformVcxproj.SharedLibraryFileExtension)
if (extension != platformVcxproj.StaticLibraryFileFullExtension && extension != platformVcxproj.SharedLibraryFileFullExtension)
{
libraryFile = libPrefix + libraryFile;
if (!string.IsNullOrEmpty(platformVcxproj.StaticLibraryFileExtension))
libraryFile += platformVcxproj.StaticLibraryFileExtension;
if (!string.IsNullOrEmpty(platformVcxproj.StaticLibraryFileFullExtension))
libraryFile += platformVcxproj.StaticLibraryFileFullExtension;
}
libraryFile = platformPrefix + libraryFile + platformOutputLibraryExtension;

Expand Down
2 changes: 1 addition & 1 deletion Sharpmake.Generators/Generic/Makefile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ private void ValidateProjectConfigurations(
switch (conf.Platform)
{
case Platform.linux:
conf.GeneratorSetGeneratedInformation(".elf", ".elf", ".so", ".pdb");
conf.GeneratorSetOutputFullExtensions(".elf", ".elf", ".so", ".pdb");
break;
default:
break;
Expand Down
10 changes: 5 additions & 5 deletions Sharpmake.Generators/VisualStudio/Androidproj.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,11 @@ private void GenerateConfOptions(GenerationContext context)
// set generator information
var platformVcxproj = context.PresentPlatforms[conf.Platform];
var configurationTasks = PlatformRegistry.Get<Project.Configuration.IConfigurationTasks>(conf.Platform);
conf.GeneratorSetGeneratedInformation(
platformVcxproj.ExecutableFileExtension,
platformVcxproj.PackageFileExtension,
configurationTasks.GetDefaultOutputExtension(Project.Configuration.OutputType.Dll),
platformVcxproj.ProgramDatabaseFileExtension);
conf.GeneratorSetOutputFullExtensions(
platformVcxproj.ExecutableFileFullExtension,
platformVcxproj.PackageFileFullExtension,
configurationTasks.GetDefaultOutputFullExtension(Project.Configuration.OutputType.Dll),
platformVcxproj.ProgramDatabaseFileFullExtension);

projectConfigurationOptions.Add(conf, new Options.ExplicitOptions());
context.CommandLineOptions = new ProjectOptionsGenerator.VcxprojCmdLineOptions();
Expand Down
2 changes: 1 addition & 1 deletion Sharpmake.Generators/VisualStudio/Csproj.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1086,7 +1086,7 @@ List<string> skipFiles
configurationNameMapping[projectUniqueName] = conf;

// set generator information
conf.GeneratorSetGeneratedInformation(".exe", ".exe", ".dll", ".pdb");
conf.GeneratorSetOutputFullExtensions(".exe", ".exe", ".dll", ".pdb");
}

string outputType;
Expand Down
23 changes: 17 additions & 6 deletions Sharpmake.Generators/VisualStudio/IPlatformVcxproj.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,23 @@ public IncludeWithPrefix(string cmdLinePrefix, string includePath)

public interface IPlatformVcxproj
{
string ExecutableFileExtension { get; }
string PackageFileExtension { get; }
string SharedLibraryFileExtension { get; }
string ProgramDatabaseFileExtension { get; }
string StaticLibraryFileExtension { get; }
string StaticOutputLibraryFileExtension { get; }
// ExecutableFileExtension
// PackageFileExtension
// SharedLibraryFileExtension
// ProgramDatabaseFileExtension
// StaticLibraryFileExtension
// StaticOutputLibraryFileExtension

// the above properties have been replaced by their "Full" equivalents below
// because most required sharpmake to add a leading ".", which was an issue on some platforms

string ExecutableFileFullExtension { get; }
string PackageFileFullExtension { get; }
string SharedLibraryFileFullExtension { get; }
string ProgramDatabaseFileFullExtension { get; }
string StaticLibraryFileFullExtension { get; }
string StaticOutputLibraryFileFullExtension { get; }

bool ExcludesPrecompiledHeadersFromBuild { get; }
bool HasUserAccountControlSupport { get; }
bool HasEditAndContinueDebuggingSupport { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1221,7 +1221,7 @@ private void GenerateLinkerOptions(IGenerationContext context, ProjectOptionsGen
context.Options["ImportLibrary"] = FileGeneratorUtilities.RemoveLineTag;
context.CommandLineOptions["ImportLibrary"] = FileGeneratorUtilities.RemoveLineTag;
context.Options["OutputFileName"] = context.Configuration.TargetFileFullName;
context.Options["OutputFileExtension"] = context.Configuration.OutputExtension;
context.Options["OutputFileExtension"] = context.Configuration.TargetFileFullExtension;

context.Options["AdditionalDeploymentFolders"] = "";

Expand Down
18 changes: 9 additions & 9 deletions Sharpmake.Generators/VisualStudio/Vcxproj.cs
Original file line number Diff line number Diff line change
Expand Up @@ -317,11 +317,11 @@ private void GenerateConfOptions(GenerationContext context)
// set generator information
var platformVcxproj = context.PresentPlatforms[conf.Platform];
var configurationTasks = PlatformRegistry.Get<Project.Configuration.IConfigurationTasks>(conf.Platform);
conf.GeneratorSetGeneratedInformation(
platformVcxproj.ExecutableFileExtension,
platformVcxproj.PackageFileExtension,
configurationTasks.GetDefaultOutputExtension(Project.Configuration.OutputType.Dll),
platformVcxproj.ProgramDatabaseFileExtension);
conf.GeneratorSetOutputFullExtensions(
platformVcxproj.ExecutableFileFullExtension,
platformVcxproj.PackageFileFullExtension,
configurationTasks.GetDefaultOutputFullExtension(Project.Configuration.OutputType.Dll),
platformVcxproj.ProgramDatabaseFileFullExtension);

projectConfigurationOptions.Add(conf, new Options.ExplicitOptions());
context.CommandLineOptions = new ProjectOptionsGenerator.VcxprojCmdLineOptions();
Expand Down Expand Up @@ -741,7 +741,7 @@ private static void FillLibrariesOptions(GenerationContext context)

Strings ignoreSpecificLibraryNames = Options.GetStrings<Options.Vc.Linker.IgnoreSpecificLibraryNames>(context.Configuration);
ignoreSpecificLibraryNames.ToLower();
ignoreSpecificLibraryNames.InsertSuffix(platformVcxproj.StaticLibraryFileExtension, true);
ignoreSpecificLibraryNames.InsertSuffix(platformVcxproj.StaticLibraryFileFullExtension, true);

context.Options["AdditionalDependencies"] = FileGeneratorUtilities.RemoveLineTag;
context.Options["AdditionalLibraryDirectories"] = FileGeneratorUtilities.RemoveLineTag;
Expand Down Expand Up @@ -822,11 +822,11 @@ Strings ignoreSpecificLibraryNames
string decoratedName = libraryFile;
string extension = Path.GetExtension(libraryFile).ToLowerInvariant();

if (extension != platformVcxproj.StaticLibraryFileExtension && extension != platformVcxproj.SharedLibraryFileExtension)
if (extension != platformVcxproj.StaticLibraryFileFullExtension && extension != platformVcxproj.SharedLibraryFileFullExtension)
{
decoratedName = libPrefix + libraryFile;
if (!string.IsNullOrEmpty(platformVcxproj.StaticLibraryFileExtension))
decoratedName += platformVcxproj.StaticLibraryFileExtension;
if (!string.IsNullOrEmpty(platformVcxproj.StaticLibraryFileFullExtension))
decoratedName += platformVcxproj.StaticLibraryFileFullExtension;
}

if (!ignoreSpecificLibraryNames.Contains(decoratedName))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,19 @@ public void SetupStaticLibraryPaths(Project.Configuration configuration, Depende
DefaultPlatform.SetupLibraryPaths(configuration, dependencySetting, dependency);
}

public string GetDefaultOutputExtension(Project.Configuration.OutputType outputType)
// The below method was replaced by GetDefaultOutputFullExtension
// string GetDefaultOutputExtension(OutputType outputType);

public string GetDefaultOutputFullExtension(Project.Configuration.OutputType outputType)
{
switch (outputType)
{
case Project.Configuration.OutputType.Exe:
return ExecutableFileExtension;
return ExecutableFileFullExtension;
case Project.Configuration.OutputType.Dll:
return SharedLibraryFileExtension;
return SharedLibraryFileFullExtension;
default:
return StaticLibraryFileExtension;
return StaticLibraryFileFullExtension;
}
}

Expand All @@ -101,10 +104,10 @@ public IEnumerable<string> GetPlatformLibraryPaths(Project.Configuration configu
#endregion

#region IPlatformVcxproj implementation
public override string ProgramDatabaseFileExtension => string.Empty;
public override string SharedLibraryFileExtension => ".so";
public override string StaticLibraryFileExtension => ".a";
public override string ExecutableFileExtension => string.Empty;
public override string ProgramDatabaseFileFullExtension => string.Empty;
public override string SharedLibraryFileFullExtension => ".so";
public override string StaticLibraryFileFullExtension => ".a";
public override string ExecutableFileFullExtension => string.Empty;

public override void GeneratePlatformSpecificProjectDescription(IVcxprojGenerationContext context, IFileGenerator generator)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,11 @@ private void SetConfiguration(CompilerSettings compilerSettings, string compiler


#region IConfigurationTasks
public string GetDefaultOutputExtension(Project.Configuration.OutputType outputType)

// The below method was replaced by GetDefaultOutputFullExtension
// string GetDefaultOutputExtension(OutputType outputType);

public string GetDefaultOutputFullExtension(Project.Configuration.OutputType outputType)
{
switch (outputType)
{
Expand All @@ -264,15 +268,15 @@ public string GetDefaultOutputExtension(Project.Configuration.OutputType outputT
// libraries work better. iOS is Darwin/Cocoa so assuming that the same goes
// for it.
case Project.Configuration.OutputType.Exe:
return ExecutableFileExtension;
return ExecutableFileFullExtension;
case Project.Configuration.OutputType.IosApp:
return ".app";
case Project.Configuration.OutputType.IosTestBundle:
return ".xctest";
case Project.Configuration.OutputType.Lib:
return StaticLibraryFileExtension;
return StaticLibraryFileFullExtension;
case Project.Configuration.OutputType.Dll:
return SharedLibraryFileExtension;
return SharedLibraryFileFullExtension;

// .NET remains the same on all platforms. (Mono loads .exe and .dll regardless
// of platforms, and I assume the same about .NET Core.)
Expand Down Expand Up @@ -344,12 +348,12 @@ public void SetupStaticLibraryPaths(Project.Configuration configuration, Depende
#endregion

#region IPlatformVcxproj implementation
public string ExecutableFileExtension => string.Empty;
public string PackageFileExtension => ExecutableFileExtension;
public string SharedLibraryFileExtension => ".dylib";
public string ProgramDatabaseFileExtension => string.Empty;
public string StaticLibraryFileExtension => ".a";
public string StaticOutputLibraryFileExtension => StaticLibraryFileExtension;
public string ExecutableFileFullExtension => string.Empty;
public string PackageFileFullExtension => ExecutableFileFullExtension;
public string SharedLibraryFileFullExtension => ".dylib";
public string ProgramDatabaseFileFullExtension => string.Empty;
public string StaticLibraryFileFullExtension => ".a";
public string StaticOutputLibraryFileFullExtension => StaticLibraryFileFullExtension;
public bool ExcludesPrecompiledHeadersFromBuild => false;
public bool HasUserAccountControlSupport => false;
public bool HasEditAndContinueDebuggingSupport => false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ public void SetupDynamicLibraryPaths(Project.Configuration configuration, Depend
if (dependencySetting.HasFlag(DependencySetting.LibraryPaths))
configuration.AddDependencyBuiltTargetLibraryPath(dependency.TargetLibraryPath, dependency.TargetLibraryPathOrderNumber);
if (dependencySetting.HasFlag(DependencySetting.LibraryFiles))
configuration.AddDependencyBuiltTargetLibraryFile(dependency.TargetFileFullName + StaticLibraryFileExtension, dependency.TargetFileOrderNumber);
configuration.AddDependencyBuiltTargetLibraryFile(dependency.TargetFileFullName + StaticLibraryFileFullExtension, dependency.TargetFileOrderNumber);
}
else
{
if (dependencySetting.HasFlag(DependencySetting.LibraryPaths))
configuration.DependenciesOtherLibraryPaths.Add(dependency.TargetLibraryPath, dependency.TargetLibraryPathOrderNumber);
if (dependencySetting.HasFlag(DependencySetting.LibraryFiles))
configuration.DependenciesOtherLibraryFiles.Add(dependency.TargetFileFullName + StaticLibraryFileExtension, dependency.TargetFileOrderNumber);
configuration.DependenciesOtherLibraryFiles.Add(dependency.TargetFileFullName + StaticLibraryFileFullExtension, dependency.TargetFileOrderNumber);
}
}

Expand All @@ -59,16 +59,19 @@ public void SetupStaticLibraryPaths(Project.Configuration configuration, Depende
DefaultPlatform.SetupLibraryPaths(configuration, dependencySetting, dependency);
}

public string GetDefaultOutputExtension(Project.Configuration.OutputType outputType)
// The below method was replaced by GetDefaultOutputFullExtension
// string GetDefaultOutputExtension(OutputType outputType);

public string GetDefaultOutputFullExtension(Project.Configuration.OutputType outputType)
{
switch (outputType)
{
case Project.Configuration.OutputType.Exe:
case Project.Configuration.OutputType.DotNetConsoleApp:
case Project.Configuration.OutputType.DotNetWindowsApp:
return ExecutableFileExtension;
return ExecutableFileFullExtension;
case Project.Configuration.OutputType.Lib:
return StaticLibraryFileExtension;
return StaticLibraryFileFullExtension;
case Project.Configuration.OutputType.Dll:
case Project.Configuration.OutputType.DotNetClassLibrary:
return ".dll";
Expand Down Expand Up @@ -128,10 +131,10 @@ protected void GetLinkerExecutableInfo(Project.Configuration conf, out string li
#endregion

#region IPlatformVcxproj implementation
public override string ExecutableFileExtension => ".exe";
public override string SharedLibraryFileExtension => ".lib";
public override string ProgramDatabaseFileExtension => ".pdb";
public override string StaticLibraryFileExtension => ".lib";
public override string ExecutableFileFullExtension => ".exe";
public override string SharedLibraryFileFullExtension => ".lib";
public override string ProgramDatabaseFileFullExtension => ".pdb";
public override string StaticLibraryFileFullExtension => ".lib";
#endregion

public enum RuntimeLibrary
Expand Down
12 changes: 6 additions & 6 deletions Sharpmake.Platforms/Sharpmake.CommonPlatforms/BasePlatform.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,12 +130,12 @@ public virtual void AddCompilerSettings(IDictionary<string, CompilerSettings> ma
#endregion

#region IPlatformVcxproj implementation
public abstract string ExecutableFileExtension { get; }
public virtual string PackageFileExtension => ExecutableFileExtension;
public abstract string SharedLibraryFileExtension { get; }
public abstract string ProgramDatabaseFileExtension { get; }
public virtual string StaticLibraryFileExtension => ".lib";
public virtual string StaticOutputLibraryFileExtension => StaticLibraryFileExtension;
public abstract string ExecutableFileFullExtension { get; }
public virtual string PackageFileFullExtension => ExecutableFileFullExtension;
public abstract string SharedLibraryFileFullExtension { get; }
public abstract string ProgramDatabaseFileFullExtension { get; }
public virtual string StaticLibraryFileFullExtension => ".lib";
public virtual string StaticOutputLibraryFileFullExtension => StaticLibraryFileFullExtension;
public virtual bool ExcludesPrecompiledHeadersFromBuild => false;
public virtual bool HasUserAccountControlSupport => false;
public virtual bool HasEditAndContinueDebuggingSupport => false;
Expand Down
Loading

0 comments on commit 878b14f

Please sign in to comment.