Sat, 29 Nov 2025 18:11:18 +0100
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 | } |