1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.github.maven_nar.cpptasks.openwatcom;
21
22 import java.io.File;
23 import java.util.Vector;
24
25 import org.apache.tools.ant.types.Environment;
26
27 import com.github.maven_nar.cpptasks.CUtil;
28 import com.github.maven_nar.cpptasks.OptimizationEnum;
29 import com.github.maven_nar.cpptasks.compiler.CommandLineCompiler;
30 import com.github.maven_nar.cpptasks.compiler.LinkType;
31 import com.github.maven_nar.cpptasks.compiler.Processor;
32
33
34
35
36
37
38 public abstract class OpenWatcomCompiler extends CommandLineCompiler {
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 protected OpenWatcomCompiler(final String command, final String identifierArg, final String[] sourceExtensions,
56 final String[] headerExtensions, final boolean newEnvironment, final Environment env) {
57 super(command, identifierArg, sourceExtensions, headerExtensions, ".obj", false, null, newEnvironment, env);
58 }
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 @Override
79 protected final void addImpliedArgs(final Vector<String> args, final boolean debug, final boolean multithreaded,
80 final boolean exceptions, final LinkType linkType, final Boolean rtti, final OptimizationEnum optimization) {
81 args.addElement("/c");
82 if (exceptions) {
83 args.addElement("/xs");
84 }
85 if (multithreaded) {
86 args.addElement("/bm");
87 }
88 if (debug) {
89 args.addElement("/d2");
90 args.addElement("/od");
91 args.addElement("/d_DEBUG");
92 } else {
93 if (optimization != null) {
94 if (optimization.isSize()) {
95 args.addElement("/os");
96 }
97 if (optimization.isSpeed()) {
98 args.addElement("/ot");
99 }
100 }
101 args.addElement("/dNDEBUG");
102 }
103 if (rtti != null && rtti.booleanValue()) {
104 args.addElement("/xr");
105 }
106 }
107
108
109
110
111
112
113
114
115
116 @Override
117 protected final void addWarningSwitch(final Vector<String> args, final int level) {
118 OpenWatcomProcessor.addWarningSwitch(args, level);
119 }
120
121
122
123
124
125
126
127
128
129
130 @Override
131 public final Processor changeEnvironment(final boolean newEnvironment, final Environment env) {
132 return this;
133 }
134
135
136
137
138
139
140
141
142
143
144
145 @Override
146 protected final void getDefineSwitch(final StringBuffer buffer, final String define, final String value) {
147 OpenWatcomProcessor.getDefineSwitch(buffer, define, value);
148 }
149
150
151
152
153
154
155 @Override
156 protected final File[] getEnvironmentIncludePath() {
157 return CUtil.getPathFromEnvironment("INCLUDE", ";");
158 }
159
160
161
162
163
164
165
166
167 @Override
168 protected final String getIncludeDirSwitch(final String includeDir) {
169 return OpenWatcomProcessor.getIncludeDirSwitch(includeDir);
170 }
171
172
173
174
175
176
177 @Override
178 public final int getMaximumCommandLength() {
179 return 4096;
180 }
181
182
183
184
185
186
187
188
189
190 @Override
191 protected final void getUndefineSwitch(final StringBuffer buffer, final String define) {
192 OpenWatcomProcessor.getUndefineSwitch(buffer, define);
193 }
194
195 }