Skip to content
This repository was archived by the owner on Aug 11, 2021. It is now read-only.

Commit ab340a1

Browse files
committed
[packages,C|MakeFileBuilder|Publisher] Fixes #335. MakeFileBuilder.MakeFileCommonMetaData.Directories and Environment properties are no longer public. Instead, accessors called AddDirectory has been added (ExtendEnvironmentVariables already existed), and utility functions to export both of these to a StringBuilder have been added to the class (ExportEnvironment and ExportDirectories).
1 parent d9cb079 commit ab340a1

File tree

12 files changed

+75
-27
lines changed

12 files changed

+75
-27
lines changed

Changelog.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
15-May-2017 Fixes #335. MakeFileBuilder.MakeFileCommonMetaData.Directories and Environment properties are no longer public. Instead, accessors called AddDirectory has been added (ExtendEnvironmentVariables already existed), and utility functions to export both of these to a StringBuilder have been added to the class (ExportEnvironment and ExportDirectories).
2+
13
15-May-2017 Fixes #334. Following tests are now tested in Linux with additional build modes: ObjectiveCTest1 (Native,MakeFile); ProceduralHeaderTest1 (MakeFile); DeltaSettingsTest1 (MakeFile); EmbedStaticIntoDynamicLibrary (MakeFile); PublishingTest1 (MakeFile) and PublishingTest2 (MakeFile).
24

35
14-May-2017 Fixes #331. Added C.PatchUtilities static utility class, with the helper functions GetCompiler and GetBitDepth. These are useful in static patch functions, that only have the Module property on the settings input to determine compiler versions and the architecture built for. When patch lambdas are inlined into the Init() function of a module, access to module's properties are immediately available, but in static patch functions, these utilities are recommended. Test8 has been updated to illustrate using the PatchUtilities functions.

packages/C/bam/MakeFileBuilder/MakeFileArchiving.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public sealed class MakeFileLibrarian :
6464
rule.AddShellCommand(command.ToString());
6565

6666
var libraryFileDir = System.IO.Path.GetDirectoryName(libraryPath.ToString());
67-
meta.CommonMetaData.Directories.AddUnique(libraryFileDir);
67+
meta.CommonMetaData.AddDirectory(libraryFileDir);
6868
meta.CommonMetaData.ExtendEnvironmentVariables(tool.EnvironmentVariables);
6969
}
7070
}

packages/C/bam/MakeFileBuilder/MakeFileAssembly.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public sealed class MakeFileAssembly :
5757
args.Add("$<");
5858
rule.AddShellCommand(args.ToString(' '));
5959

60-
meta.CommonMetaData.Directories.AddUnique(System.IO.Path.GetDirectoryName(outputPath));
60+
meta.CommonMetaData.AddDirectory(System.IO.Path.GetDirectoryName(outputPath));
6161
}
6262
}
6363
}

packages/C/bam/MakeFileBuilder/MakeFileCompilation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public sealed class MakeFileCompilation :
6161
rule.AddShellCommand(command.ToString());
6262

6363
var objectFileDir = System.IO.Path.GetDirectoryName(objectFilePath.ToString());
64-
meta.CommonMetaData.Directories.AddUnique(objectFileDir);
64+
meta.CommonMetaData.AddDirectory(objectFileDir);
6565
meta.CommonMetaData.ExtendEnvironmentVariables(tool.EnvironmentVariables);
6666

6767
// add dependencies, such as procedurally generated headers

packages/C/bam/MakeFileBuilder/MakeFileLinker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public sealed class MakeFileLinker :
120120
rule.AddShellCommand(commands.ToString());
121121

122122
var executableDir = System.IO.Path.GetDirectoryName(executablePath.ToString());
123-
meta.CommonMetaData.Directories.AddUnique(executableDir);
123+
meta.CommonMetaData.AddDirectory(executableDir);
124124
meta.CommonMetaData.ExtendEnvironmentVariables(tool.EnvironmentVariables);
125125
}
126126
}

packages/C/bam/MakeFileBuilder/MakeFileProceduralHeaderFromToolOutput.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public sealed class MakeFileProceduralHeaderFromToolOutput :
5151
rule.AddShellCommand(args.ToString(' '));
5252

5353
var outputDir = System.IO.Path.GetDirectoryName(outputPath.Parse());
54-
meta.CommonMetaData.Directories.AddUnique(outputDir);
54+
meta.CommonMetaData.AddDirectory(outputDir);
5555
}
5656
}
5757

packages/MakeFileBuilder/bam/Scripts/MakeFileCommonMetaData.cs

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2828
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2929
#endregion // License
30+
using System.Linq;
3031
namespace MakeFileBuilder
3132
{
3233
// Notes:
@@ -47,18 +48,25 @@ public MakeFileCommonMetaData()
4748
}
4849
}
4950

50-
public Bam.Core.StringArray Directories
51+
private Bam.Core.StringArray Directories
5152
{
5253
get;
53-
private set;
54+
set;
5455
}
5556

56-
public System.Collections.Generic.Dictionary<string, Bam.Core.StringArray> Environment
57+
private System.Collections.Generic.Dictionary<string, Bam.Core.StringArray> Environment
5758
{
5859
get;
59-
private set;
60+
set;
6061
}
6162

63+
/// <summary>
64+
/// Add key-value pairs (using strings and TokenizedStringArrays) which represent
65+
/// an environment variable name, and its value (usually multiple paths), to be used
66+
/// when the MakeFile is executed.
67+
/// Duplicates values are not added.
68+
/// </summary>
69+
/// <param name="import">The dictionary of key-value pairs to add.</param>
6270
public void
6371
ExtendEnvironmentVariables(
6472
System.Collections.Generic.Dictionary<string, Bam.Core.TokenizedStringArray> import)
@@ -78,5 +86,55 @@ public void
7886
}
7987
}
8088
}
89+
90+
/// <summary>
91+
/// Add a directory to those to be created when running the MakeFile.
92+
/// Duplicates are not added.
93+
/// </summary>
94+
/// <param name="path">Path to the directory to be added.</param>
95+
public void
96+
AddDirectory(
97+
string path)
98+
{
99+
lock (this)
100+
{
101+
this.Directories.AddUnique(path);
102+
}
103+
}
104+
105+
/// <summary>
106+
/// Write the environment variables to be exported to the MakeFile.
107+
/// </summary>
108+
/// <param name="output">Where to write the environment variables to.</param>
109+
public void
110+
ExportEnvironment(
111+
System.Text.StringBuilder output)
112+
{
113+
foreach (var env in this.Environment)
114+
{
115+
output.AppendFormat("{0}:={1}", env.Key, env.Value.ToString(System.IO.Path.PathSeparator));
116+
output.AppendLine();
117+
}
118+
}
119+
120+
/// <summary>
121+
/// Write the directories to be created when running the MakeFile.
122+
/// </summary>
123+
/// <param name="output">Where to write the directories to.</param>
124+
public void
125+
ExportDirectories(
126+
System.Text.StringBuilder output)
127+
{
128+
if (!this.Directories.Any())
129+
{
130+
return;
131+
}
132+
output.Append("DIRS:=");
133+
foreach (var dir in this.Directories)
134+
{
135+
output.AppendFormat("{0} ", dir);
136+
}
137+
output.AppendLine();
138+
}
81139
}
82140
}

packages/MakeFileBuilder/bam/Scripts/MakeFileMeta.cs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,21 +88,9 @@ public static void PostExecution()
8888

8989
// delete suffix rules
9090
makeEnvironment.AppendLine(".SUFFIXES:");
91-
foreach (var env in commonMeta.Environment)
92-
{
93-
makeEnvironment.AppendFormat("{0}:={1}", env.Key, env.Value.ToString(System.IO.Path.PathSeparator));
94-
makeEnvironment.AppendLine();
95-
}
9691

97-
if (commonMeta.Directories.Count > 0)
98-
{
99-
makeVariables.Append("DIRS:=");
100-
foreach (var dir in commonMeta.Directories)
101-
{
102-
makeVariables.AppendFormat("{0} ", dir);
103-
}
104-
makeVariables.AppendLine();
105-
}
92+
commonMeta.ExportEnvironment(makeEnvironment);
93+
commonMeta.ExportDirectories(makeVariables);
10694

10795
// all rule
10896
makeRules.Append("all:");

packages/Publisher/bam/MakeFileBuilder/MakeFileCollatedObject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public sealed class MakeFileCollatedObject :
7676
}
7777
}
7878

79-
meta.CommonMetaData.Directories.AddUnique(sender.Macros["CopyDir"].Parse());
79+
meta.CommonMetaData.AddDirectory(sender.Macros["CopyDir"].Parse());
8080

8181
var commandLine = new Bam.Core.StringArray();
8282
(sender.Settings as CommandLineProcessor.IConvertToCommandLine).Convert(commandLine);

packages/Publisher/bam/MakeFileBuilder/MakeFileDSymUtil.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public sealed class MakeFileDSymUtil :
4444

4545
var sourceFilename = System.IO.Path.GetFileName(originalPath.Parse());
4646

47-
meta.CommonMetaData.Directories.AddUnique(sender.CreateTokenizedString("@dir($(0))", copiedPath).Parse());
47+
meta.CommonMetaData.AddDirectory(sender.CreateTokenizedString("@dir($(0))", copiedPath).Parse());
4848
rule.AddTarget(copiedPath, variableName: "dSYM" + sourceFilename, isPhony: true);
4949

5050
var commandLine = new Bam.Core.StringArray();

0 commit comments

Comments
 (0)