Sun, 30 Nov 2025 22:31:04 +0100
fix missing blank line after config vars in config.mk
|
7
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | package de.unixwork.uwproj; |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | import org.w3c.dom.Element; |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
5 | public final class ConfigVar extends AbstractOption { |
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
45
diff
changeset
|
6 | private final String varName; |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
45
diff
changeset
|
7 | private final String value; |
|
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
45
diff
changeset
|
8 | private final boolean exec; |
|
40
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
7
diff
changeset
|
9 | |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
10 | public ConfigVar(String varName) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
11 | this.varName = varName; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
12 | desc = getDefaultHelpText(varName); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
13 | arg = varName.toLowerCase().replace('_', '-'); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
14 | value = ""; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
15 | exec = false; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
16 | } |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
17 | |
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
45
diff
changeset
|
18 | public ConfigVar(Element e) { |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
19 | this(e, e.getNodeName().replace('-', '_')); |
|
40
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
7
diff
changeset
|
20 | } |
|
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
7
diff
changeset
|
21 | |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
22 | public ConfigVar(Element e, String defaultVarName) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
23 | super(); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
24 | varName = Util.getAttrOrDefault(e, "name", defaultVarName); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
25 | desc = Util.getAttrOrDefault(e, "option-help", getDefaultHelpText(varName)); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
26 | if (desc.isEmpty()) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
27 | // no help text, add an option only when requested |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
28 | arg = e.getAttribute("option"); |
|
40
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
7
diff
changeset
|
29 | } else { |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
30 | // there is a help text, generate an option if none is specified |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
31 | arg = Util.getAttrOrDefault(e, "option", varName.toLowerCase().replace('_', '-')); |
|
7
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | } |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
33 | |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
34 | if (e.hasChildNodes()) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
35 | value = Util.getContent(e); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
36 | } else if (arg.equals("prefix")) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
37 | // special treatment for prefix |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
38 | value = "/usr"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
39 | } else { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
40 | value = ""; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
41 | } |
|
113
24f32dbd88cd
minimize application code
Mike Becker <universe@uap-core.de>
parents:
45
diff
changeset
|
42 | exec = Boolean.parseBoolean(e.getAttribute("exec")); |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
43 | |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
44 | if (exec) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
45 | desc = desc.replace("%default", String.format("{{%s}}", value)); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
46 | } else { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
47 | desc = desc.replace("%default", value); |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
48 | } |
|
7
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | } |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
50 | |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
51 | /** |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
52 | * A set of default help texts for standard config variables. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
53 | * <p> |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
54 | * Returns an empty string for custom config variables. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
55 | * |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
56 | * @param varName the variable name |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
57 | * @return the default help text |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
58 | */ |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
59 | private static String getDefaultHelpText(String varName) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
60 | return switch (varName) { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
61 | case "prefix" -> "path prefix for architecture-independent files [%default]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
62 | case "exec_prefix" -> "path prefix for architecture-dependent files [PREFIX]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
63 | case "bindir" -> "user executables [EPREFIX/bin]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
64 | case "sbindir" -> "system admin executables [EPREFIX/sbin]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
65 | case "libexecdir" -> "program executables [EPREFIX/libexec]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
66 | case "sysconfdir" -> "system configuration files [PREFIX/etc]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
67 | case "sharedstatedir" -> "modifiable architecture-independent data [PREFIX/com]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
68 | case "localstatedir" -> "modifiable single-machine data [PREFIX/var]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
69 | case "runstatedir" -> "run-time variable data [LOCALSTATEDIR/run]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
70 | case "libdir" -> "object code libraries [EPREFIX/lib]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
71 | case "includedir" -> "C header files [PREFIX/include]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
72 | case "datarootdir" -> "read-only architecture-independent data root [PREFIX/share]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
73 | case "datadir" -> "read-only architecture-independent data [DATAROOTDIR]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
74 | case "infodir" -> "info documentation [DATAROOTDIR/info]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
75 | case "mandir" -> "man documentation [DATAROOTDIR/man]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
76 | case "localedir" -> "locale-dependent data [DATAROOTDIR/locale]"; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
77 | default -> ""; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
78 | }; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
79 | } |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
80 | |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
81 | /** |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
82 | * The name of the variable where the value will be stored. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
83 | * <p> |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
84 | * This is also the name of the variable that shall be added to the make config. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
85 | * |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
86 | * @return the variable name |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
87 | */ |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
88 | @Override |
|
40
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
7
diff
changeset
|
89 | public String getVarName() { |
|
b42bfc9e9983
first minor code improvements
Mike Becker <universe@uap-core.de>
parents:
7
diff
changeset
|
90 | return varName; |
|
7
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
91 | } |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
92 | |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
93 | @Override |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
94 | public String getHelpTextArg() { |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
95 | return "--" + arg; |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
96 | } |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
97 | |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
98 | /** |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
99 | * The value with which this variable shall be initialized. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
100 | * <p> |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
101 | * If {@link #isExec()} returns {@code true}, this value is used as the command to execute. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
102 | * |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
103 | * @return the initial value for this variable |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
104 | */ |
|
7
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
105 | public String getValue() { |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
106 | return value; |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
107 | } |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
108 | |
|
165
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
109 | /** |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
110 | * Indicates whether the value is a command to execute. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
111 | * |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
112 | * @return {@code true} if the value is a command, {@code false} otherwise. |
|
f4f11f755ee7
add full spectrum config var configurations
Mike Becker <universe@uap-core.de>
parents:
113
diff
changeset
|
113 | */ |
|
7
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
114 | public boolean isExec() { |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
115 | return exec; |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
116 | } |
|
686991ae6e2f
add configureable make variables
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
117 | } |