Skip to content

Commit 5bc88d0

Browse files
committed
fix wrong matching sdl build type
1 parent 8cd8e3d commit 5bc88d0

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

app/src/main/java/com/duy/ccppcompiler/compiler/compilers/NativeCompileImpl.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.duy.ccppcompiler.compiler.model.OutputScope;
2525
import com.duy.ccppcompiler.compiler.shell.ArgumentBuilder;
2626
import com.duy.ccppcompiler.compiler.shell.CommandResult;
27+
import com.duy.ccppcompiler.compiler.shell.GccArgumentBuilder;
2728
import com.duy.ccppcompiler.compiler.shell.Shell;
2829
import com.duy.ccppcompiler.packagemanager.Environment;
2930
import com.duy.common.DLog;
@@ -72,6 +73,8 @@ public CommandResult compile(File[] sourceFiles, ILogger logger) {
7273
argumentBuilder.addFlags(args);
7374

7475
final String cmd = argumentBuilder.build();
76+
String debugStr = cmd.replaceAll("\\s+", "\n");
77+
if (DLog.DEBUG) DLog.d(TAG, "debugStr = \n" + debugStr);
7578
if (logger != null) {
7679
logger.verbose("Compiler argument: " + cmd);
7780
}
@@ -93,7 +96,7 @@ protected void clean() {
9396
}
9497

9598
private String buildArgs(File[] sourceFiles) {
96-
ArgumentBuilder args = new ArgumentBuilder();
99+
GccArgumentBuilder args = new GccArgumentBuilder();
97100
for (File sourceFile : sourceFiles) {
98101
args.addFlags(sourceFile.getAbsolutePath());
99102
}
@@ -118,13 +121,15 @@ private String buildArgs(File[] sourceFiles) {
118121
return args.build();
119122
}
120123

121-
private void resolveLdFlagsFromSource(ArgumentBuilder args, File[] sourceFiles) {
124+
private void resolveLdFlagsFromSource(GccArgumentBuilder args, File[] sourceFiles) {
122125
LinkerFlagsDetector detector = LinkerFlagsDetector.INSTANCE;
123126
try {
124-
final Set<String> detect = detector.detect(sourceFiles);
125-
args.addFlags(detect);
127+
final Set<String> detected = detector.detect(sourceFiles);
128+
for (String f : detected) {
129+
args.addFlag(GccArgumentBuilder.Type.LD_FLAG, f);
130+
}
126131
} catch (IOException e) {
127-
e.printStackTrace();
132+
//unexpected
128133
}
129134
}
130135

@@ -134,9 +139,10 @@ protected void addUserSettingFlags(ArgumentBuilder args) {
134139

135140
protected abstract String getCompilerProgram();
136141

137-
private void addDefaultLdFlags(ArgumentBuilder args) {
142+
private void addDefaultLdFlags(GccArgumentBuilder args) {
138143
//lib math and lib log
139-
args.addFlags("-lm", "-llog");
144+
args.addFlag(GccArgumentBuilder.Type.LD_FLAG, "-lm");
145+
args.addFlag(GccArgumentBuilder.Type.LD_FLAG, "-llog");
140146
}
141147

142148
private void buildExecutableFlags(ArgumentBuilder args, File[] sourceFiles) {
@@ -169,7 +175,7 @@ private void buildNativeActivityFlags(ArgumentBuilder args, File[] sourceFiles)
169175
.addFlags("-o", outputScope.getBinaryFile().getAbsolutePath());
170176
}
171177

172-
private void buildSDLActivity(ArgumentBuilder args, File[] sourceFiles) {
178+
private void buildSDLActivity(GccArgumentBuilder args, File[] sourceFiles) {
173179
File source = sourceFiles[0];
174180
String nameNoExt = source.getName().substring(0, source.getName().lastIndexOf("."));
175181

app/src/main/java/com/duy/ccppcompiler/compiler/shell/GccArgumentBuilder.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.util.Collections;
99
import java.util.Comparator;
1010

11-
public class GccArgumentBuilder {
11+
public class GccArgumentBuilder extends ArgumentBuilder {
1212
private String program;
1313
private ArrayList<Pair<Type, String>> mFlags = new ArrayList<>();
1414

@@ -32,8 +32,8 @@ public GccArgumentBuilder addFlag(String flag) {
3232
return this;
3333
}
3434

35-
private void addFlag(Type type, String name) {
36-
mFlags.add(new Pair<Type, String>(type, name));
35+
public void addFlag(Type type, String name) {
36+
mFlags.add(new Pair<>(type, name));
3737
}
3838

3939
public GccArgumentBuilder addFlags(Collection<String> flags) {
@@ -55,11 +55,7 @@ public String build() {
5555
@SuppressWarnings("ConstantConditions")
5656
@Override
5757
public int compare(Pair<Type, String> o1, Pair<Type, String> o2) {
58-
if (!o1.first.getPriority().equals(o2.first.getPriority())) {
59-
return o1.first.getPriority().compareTo(o2.first.getPriority());
60-
} else {
61-
return o1.second.compareTo(o2.second);
62-
}
58+
return -o1.first.getPriority().compareTo(o2.first.getPriority());
6359
}
6460
});
6561
Pair<Type, String> prev = null;
@@ -76,15 +72,15 @@ public int compare(Pair<Type, String> o1, Pair<Type, String> o2) {
7672
if (cmd.length() != 0) {
7773
cmd.append(" ");
7874
}
79-
cmd.append(flag);
75+
cmd.append(name);
8076
prev = flag;
8177
}
8278
}
8379
return cmd.toString();
8480
}
8581

8682

87-
enum Type {
83+
public enum Type {
8884
UNSPECIFIED(4, true),
8985
CPP_FLAG(3, true),
9086
C_FLAG(2, true),

app/src/main/java/com/duy/ccppcompiler/ide/editor/CodeEditorActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ private int detectBuildType() {
255255
//#include "android_native_app_glue.h" in C++
256256
//#inlcude <android_native_app_glue.h> in C
257257
Pattern.compile("#include\\s+([<\"])SDL.h[>\"]");
258-
if (nativeActivityPattern.matcher(srcCode).find()) {
258+
if (sdl.matcher(srcCode).find()) {
259259
return NativeCompileImpl.BUILD_SDL_ACTIVITY;
260260
}
261261

0 commit comments

Comments
 (0)