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

Fri, 18 Apr 2025 20:19:53 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 18 Apr 2025 20:19:53 +0200
changeset 137
19953f64e1be
parent 116
41981a23aff8
child 165
f4f11f755ee7
permissions
-rw-r--r--

fix syntax error in check_cpp_compiler C++ test file

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<>();
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
15
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
16 private final Set<String> lang = new HashSet<>();
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
17
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
18 public Project(Element root) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
19 Util.getChildElements(root).forEach(element -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
20 switch (element.getNodeName()) {
116
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
21 case "config" -> configList.add(new Config(element));
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
22 case "dependency" -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
23 final var dependency = new Dependency(element);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
24 lang.addAll(dependency.getLang());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
25 if (dependency.hasName()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
26 namedDependencies.computeIfAbsent(dependency.getId(), k -> new LinkedList<>()).add(dependency);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
27 } else {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
28 dependencies.add(dependency);
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
29 }
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
30 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
31 case "target" -> {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
32 final var target = new Target(element);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
33 targets.add(target);
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
34 features.addAll(target.getFeatures());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
35 options.addAll(target.getOptions());
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
36 }
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
37 }
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
38 });
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
39
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
40 // add default target, if no target was specified
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
41 if (targets.isEmpty()) {
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
42 targets.add(Target.defaultTarget());
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
43 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
44
74
30b70a68ad26 make alldependencies element work - fixes #304
Mike Becker <universe@uap-core.de>
parents: 72
diff changeset
45 // check if some targets want all named dependencies
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
46 targets.stream().filter(Target::wantsAllDependencies)
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
47 .forEach(t -> t.replaceAllDependencies(namedDependencies.keySet()));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 public List<NamedDependency> getNamedDependencies() {
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
51 var ret = new LinkedList<NamedDependency>();
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
52 for (var entry : namedDependencies.entrySet()) {
113
24f32dbd88cd minimize application code
Mike Becker <universe@uap-core.de>
parents: 109
diff changeset
53 ret.add(new NamedDependency(entry.getKey(), entry.getValue()));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 return ret;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
57
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 public List<Dependency> getDependencies() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 return dependencies;
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
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 public List<Target> getTargets() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 return targets;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
65
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 public List<Option> getOptions() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 return options;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
69
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 public List<Feature> getFeatures() {
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 return features;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 }
40
b42bfc9e9983 first minor code improvements
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
73
116
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
74 public List<Config> getConfig() {
41981a23aff8 add platform attributes to config element
Mike Becker <universe@uap-core.de>
parents: 113
diff changeset
75 return configList;
7
686991ae6e2f add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 0
diff changeset
76 }
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
77
72
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
78 public Collection<String> getLang() {
d1e78c98a250 simplify code which computes the required languages
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
79 return lang;
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 52
diff changeset
80 }
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 }

mercurial