Skip to content

Commit 91088ff

Browse files
author
gast1
committed
Adding linking hooks (not verified check in for machine change)
1 parent 28bd6cf commit 91088ff

File tree

5 files changed

+68
-7
lines changed

5 files changed

+68
-7
lines changed

io.sloeber.autoBuild/src/io/sloeber/autoBuild/api/AutoBuildBuilderExtension.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import org.eclipse.core.runtime.CoreException;
77
import org.eclipse.core.runtime.IProgressMonitor;
88

9+
import io.sloeber.autoBuild.extensionPoint.providers.AutoBuildMakeRule;
910
import io.sloeber.autoBuild.extensionPoint.providers.AutoBuildMakeRules;
1011
import io.sloeber.autoBuild.integration.AutoBuildConfigurationDescription;
1112
import io.sloeber.autoBuild.schema.api.IBuilder;
13+
import io.sloeber.autoBuild.schema.api.ITool;
1214

1315
@SuppressWarnings({"static-method","unused" })
1416
public class AutoBuildBuilderExtension {
@@ -42,4 +44,8 @@ public void endOfRuleCreation(AutoBuildMakeRules autoBuildMakeRules,
4244
return ;
4345
}
4446

47+
public String[] modifyRecipes(AutoBuildConfigurationDescription autoBuildConfData, IAutoBuildMakeRule autoBuildMakeRule, String[] buildRecipes) {
48+
return buildRecipes;
49+
}
50+
4551
}

io.sloeber.autoBuild/src/io/sloeber/autoBuild/extensionPoint/providers/AutoBuildMakeRule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.eclipse.core.runtime.IStatus;
3535
import org.eclipse.core.runtime.Status;
3636

37+
import io.sloeber.autoBuild.api.AutoBuildBuilderExtension;
3738
import io.sloeber.autoBuild.api.IAutoBuildMakeRule;
3839
import io.sloeber.autoBuild.core.Activator;
3940
import io.sloeber.autoBuild.integration.AutoBuildConfigurationDescription;
@@ -346,6 +347,10 @@ public String[] getRecipes(IFolder buildFolder, AutoBuildConfigurationDescriptio
346347
String buildRecipes[] = myTool.getRecipes(autoBuildConfData, buildFolder, inputFiles, toolCommandVars,
347348
targetFile);
348349

350+
AutoBuildBuilderExtension builderExt =autoBuildConfData.getProjectType().getBuilderExtension();
351+
if(builderExt!=null) {
352+
buildRecipes = builderExt.modifyRecipes( autoBuildConfData,this,buildRecipes);
353+
}
349354
// expand the recipes
350355
ArrayList<String> ret = new ArrayList<>();
351356
for (String curRecipe : buildRecipes) {

io.sloeber.core/src/io/sloeber/core/api/BoardDescription.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.Map.Entry;
1616
import java.util.Set;
1717
import java.util.TreeMap;
18+
import java.util.TreeSet;
1819

1920
import org.eclipse.cdt.core.parser.util.StringUtil;
2021
import org.eclipse.core.runtime.IPath;
@@ -1042,7 +1043,7 @@ private Map<String, String> getEnvVarsPostProcessing(Map<String, String> vars) {
10421043
return extraVars;
10431044
}
10441045

1045-
public TreeMap<String, String> getHookSteps(String hookName,IAutoBuildConfigurationDescription autoData) {
1046+
public TreeMap<String, String> getHookSteps(TreeSet<String> hookNames,IAutoBuildConfigurationDescription autoData) {
10461047
TreeMap<String, String> hookSteps = new TreeMap<>();
10471048
KeyValueTree keyValueTree = KeyValueTree.createRoot();
10481049

@@ -1067,7 +1068,10 @@ public TreeMap<String, String> getHookSteps(String hookName,IAutoBuildConfigurat
10671068
}
10681069
}
10691070

1070-
KeyValueTree hooks = keyValueTree.getChild(RECIPE).getChild(HOOKS).getChild(hookName);
1071+
KeyValueTree hooks = keyValueTree.getChild(RECIPE).getChild(HOOKS);
1072+
for(String hookName:hookNames) {
1073+
hooks=hooks.getChild(hookName);
1074+
}
10711075

10721076
// Try to find the nums from 1 to 10 in order
10731077
// that is 01 1 02 2

io.sloeber.core/src/io/sloeber/core/builder/SloeberBuilderExtension.java

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import java.io.File;
77
import java.io.IOException;
88
import java.nio.charset.Charset;
9+
import java.util.Arrays;
10+
import java.util.TreeMap;
11+
import java.util.TreeSet;
912

1013
import org.apache.commons.io.FileUtils;
1114
import org.eclipse.cdt.core.IMarkerGenerator;
@@ -17,16 +20,50 @@
1720
import io.sloeber.autoBuild.api.AutoBuildBuilderExtension;
1821
import io.sloeber.autoBuild.api.AutoBuildProject;
1922
import io.sloeber.autoBuild.api.IAutoBuildConfigurationDescription;
23+
import io.sloeber.autoBuild.api.IAutoBuildMakeRule;
2024
import io.sloeber.autoBuild.api.IAutoBuildMakeRules;
25+
import io.sloeber.autoBuild.extensionPoint.providers.AutoBuildMakeRule;
2126
import io.sloeber.autoBuild.helpers.api.AutoBuildConstants;
27+
import io.sloeber.autoBuild.integration.AutoBuildConfigurationDescription;
2228
import io.sloeber.autoBuild.schema.api.IBuilder;
2329
import io.sloeber.core.Messages;
30+
import io.sloeber.core.api.BoardDescription;
2431
import io.sloeber.core.api.Common;
2532
import io.sloeber.core.api.ISloeberConfiguration;
33+
import io.sloeber.core.internal.SloeberConfiguration;
2634
import io.sloeber.core.tools.Helpers;
2735

2836
public class SloeberBuilderExtension extends AutoBuildBuilderExtension {
2937

38+
@Override
39+
public String[] modifyRecipes(AutoBuildConfigurationDescription autoBuildConfData,IAutoBuildMakeRule autoBuildMakeRule, String[] buildRecipes) {
40+
switch (autoBuildMakeRule.getTool().getId()) {
41+
42+
default:
43+
return super.modifyRecipes(autoBuildConfData,autoBuildMakeRule,buildRecipes);
44+
case "io.sloeber.tool.combine":
45+
SloeberConfiguration confDesc = SloeberConfiguration.getFromAutoBuildConfDesc(autoBuildConfData);
46+
BoardDescription boardDescription=confDesc.getBoardDescription();
47+
TreeSet<String> recipes=new TreeSet<String>();
48+
TreeMap<String, String> pre=new TreeMap<>();
49+
TreeSet <String> preHooks=new TreeSet<>();
50+
preHooks.add("linking");
51+
preHooks.add("prelink");
52+
TreeSet <String> postHooks=new TreeSet<>();
53+
postHooks.add("linking");
54+
postHooks.add("postlink");
55+
pre.putAll(boardDescription.getHookSteps(preHooks,autoBuildConfData)); //$NON-NLS-1$
56+
TreeMap<String, String> post=new TreeMap<>();
57+
post.putAll(boardDescription.getHookSteps(postHooks,autoBuildConfData)); //$NON-NLS-1$
58+
recipes.addAll(pre.values());
59+
recipes.addAll(Arrays.asList(buildRecipes));
60+
recipes.addAll(post.values());
61+
return super.modifyRecipes(autoBuildConfData,autoBuildMakeRule, recipes.toArray(new String[recipes.size()]));
62+
}
63+
64+
}
65+
66+
3067
@Override
3168
public void beforeAddingSourceRules(IAutoBuildMakeRules makeRules,
3269
IAutoBuildConfigurationDescription autoBuildConfData) {
@@ -91,8 +128,7 @@ public SloeberBuilderExtension() {
91128
@SuppressWarnings("nls")
92129
private static void generateAwkFile(IAutoBuildConfigurationDescription autoBuildConfData) {
93130
IFile sizeAwkFile1 = autoBuildConfData.getBuildFolder().getFile("size.awk");
94-
ISloeberConfiguration confDesc = (ISloeberConfiguration) autoBuildConfData
95-
.getAutoBuildConfigurationExtensionDescription();
131+
SloeberConfiguration confDesc = SloeberConfiguration.getFromAutoBuildConfDesc(autoBuildConfData);
96132

97133
File sizeAwkFile = sizeAwkFile1.getLocation().toFile();
98134
String regex = Common.getBuildEnvironmentVariable(confDesc, "recipe.size.regex", EMPTY);

io.sloeber.core/src/io/sloeber/core/internal/SloeberConfiguration.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.Map.Entry;
88
import java.util.Set;
99
import java.util.TreeMap;
10+
import java.util.TreeSet;
1011

1112
import static io.sloeber.core.api.Common.*;
1213
import static io.sloeber.core.api.Const.*;
@@ -54,7 +55,12 @@ public class SloeberConfiguration extends AutoBuildConfigurationExtensionDescrip
5455

5556
// derived data
5657
private Map<String, String> myEnvironmentVariables = new HashMap<>();
57-
58+
public static SloeberConfiguration getFromAutoBuildConfDesc(IAutoBuildConfigurationDescription autoBuildConfData) {
59+
return (SloeberConfiguration) autoBuildConfData.getAutoBuildConfigurationExtensionDescription();
60+
}
61+
62+
63+
5864
/**
5965
* copy constructor This constructor must be implemented for each derived class
6066
* of AutoBuildConfigurationExtensionDescription or you will get run time errors
@@ -580,14 +586,18 @@ public boolean equals(AutoBuildConfigurationExtensionDescription base) {
580586
@Override
581587
public TreeMap<String, String> getPrebuildSteps() {
582588
TreeMap<String, String> ret=new TreeMap<>();
583-
ret.putAll(myBoardDescription.getHookSteps("prebuild",getAutoBuildDescription())); //$NON-NLS-1$
589+
TreeSet <String> hookNamess=new TreeSet<>();
590+
hookNamess.add("prebuild");
591+
ret.putAll(myBoardDescription.getHookSteps(hookNamess,getAutoBuildDescription())); //$NON-NLS-1$
584592
return ret;
585593
}
586594

587595
@Override
588596
public TreeMap<String, String> getPostbuildSteps() {
589597
TreeMap<String, String> ret=new TreeMap<>();
590-
ret.putAll(myBoardDescription.getHookSteps("postbuild",getAutoBuildDescription())); //$NON-NLS-1$
598+
TreeSet <String> hookNamess=new TreeSet<>();
599+
hookNamess.add("postbuild");
600+
ret.putAll(myBoardDescription.getHookSteps(hookNamess,getAutoBuildDescription())); //$NON-NLS-1$
591601
return ret;
592602
}
593603

0 commit comments

Comments
 (0)