src/main/java/de/unixwork/uwproj/Project.java

Sat, 29 Nov 2025 18:11:18 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 29 Nov 2025 18:11:18 +0100
changeset 167
fa31a6d0ec56
parent 165
f4f11f755ee7
child 170
2b62b9a7fd38
permissions
-rw-r--r--

improve 64 libdir detection on solaris

0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 package de.unixwork.uwproj;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 import org.w3c.dom.Element;
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 8
diff changeset
4
72
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
5 import java.util.*;
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 public class Project {
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
8 private final HashMap<String, List<Dependency>> namedDependencies = new HashMap<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
9 private final List<Dependency> dependencies = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
10 private final List<Target> targets = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
11 private final List<Option> options = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
12 private final List<Feature> features = new LinkedList<>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
13
116
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
14 private final List<Config> configList = new LinkedList<>();
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
15 private final Set<String> configOptions = new HashSet<>();
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
16 private final List<ConfigVar> vars = new LinkedList<>();
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
17
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
18 private final Set<String> lang = new HashSet<>();
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
19
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
20 public Project(Element root) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
21 Util.getChildElements(root).forEach(element -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
22 switch (element.getNodeName()) {
116
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
23 case "config" -> configList.add(new Config(element));
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
24 case "dependency" -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
25 final var dependency = new Dependency(element);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
26 lang.addAll(dependency.getLang());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
27 if (dependency.hasName()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
28 namedDependencies.computeIfAbsent(dependency.getId(), k -> new LinkedList<>()).add(dependency);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
29 } else {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
30 dependencies.add(dependency);
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
31 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
32 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
33 case "target" -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
34 final var target = new Target(element);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
35 targets.add(target);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
36 features.addAll(target.getFeatures());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
37 options.addAll(target.getOptions());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
38 }
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
39 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
40 });
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
41
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
42 // add default target, if no target was specified
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
43 if (targets.isEmpty()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
44 targets.add(Target.defaultTarget());
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
45 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
46
74
30b70a68ad26 make alldependencies element work - fixes #304
Mike Becker <universe@uap-core.de>
parents: 72
diff changeset
47 // check if some targets want all named dependencies
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
48 targets.stream().filter(Target::wantsAllDependencies)
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
49 .forEach(t -> t.replaceAllDependencies(namedDependencies.keySet()));
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
50
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
51 // collect and de-duplicate config options
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
52 configList.forEach(config -> {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
53 config.getVars().forEach(configVar -> {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
54 if (configOptions.add(configVar.getArg())) {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
55 vars.add(configVar);
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
56 }
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
57 });
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
58 });
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 public List<NamedDependency> getNamedDependencies() {
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
62 var ret = new LinkedList<NamedDependency>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
63 for (var entry : namedDependencies.entrySet()) {
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
64 ret.add(new NamedDependency(entry.getKey(), entry.getValue()));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 return ret;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
68
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 public List<Dependency> getDependencies() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 return dependencies;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 public List<Target> getTargets() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 return targets;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
76
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 public List<Option> getOptions() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 return options;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
80
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 public List<Feature> getFeatures() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 return features;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
84
116
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
85 public List<Config> getConfig() {
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
86 return configList;
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
87 }
165
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
88
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
89 public List<ConfigVar> getVars() {
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
90 return vars;
f4f11f755ee7 add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents: 116
diff changeset
91 }
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
92
72
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
93 public Collection<String> getLang() {
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
94 return lang;
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
95 }
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 }

mercurial