|
21 | 21 | import android.preference.PreferenceManager; |
22 | 22 |
|
23 | 23 | import com.duy.ccppcompiler.R; |
| 24 | +import com.duy.ccppcompiler.compiler.shell.CommandBuilder; |
24 | 25 |
|
25 | 26 | /** |
26 | 27 | * Created by Duy on 17-May-18. |
27 | 28 | */ |
28 | 29 |
|
29 | 30 | public class CompileSetting implements ICompileSetting { |
30 | | - private SharedPreferences mPreferences; |
| 31 | + private SharedPreferences mPref; |
31 | 32 | private Context mContext; |
32 | 33 |
|
33 | 34 | public CompileSetting(Context context) { |
34 | 35 | mContext = context; |
35 | | - mPreferences = PreferenceManager.getDefaultSharedPreferences(context); |
| 36 | + mPref = PreferenceManager.getDefaultSharedPreferences(context); |
36 | 37 | } |
37 | 38 |
|
38 | 39 | @Override |
39 | 40 | public String getCFlags() { |
40 | | - return mPreferences.getString(mContext.getString(R.string.pref_key_c_options), ""); |
| 41 | + CommandBuilder builder = new CommandBuilder(); |
| 42 | + builder.addFlags(getGCCFlags()); |
| 43 | + |
| 44 | + String cFlags = mPref.getString(mContext.getString(R.string.pref_key_c_options), ""); |
| 45 | + builder.addFlags(cFlags); |
| 46 | + |
| 47 | + return builder.buildCommand(); |
41 | 48 | } |
42 | 49 |
|
43 | 50 | @Override |
44 | 51 | public String getCxxFlags() { |
45 | | - return mPreferences.getString(mContext.getString(R.string.pref_key_cxx_options), ""); |
| 52 | + CommandBuilder builder = new CommandBuilder(); |
| 53 | + builder.addFlags(getGCCFlags()); |
| 54 | + |
| 55 | + String cxxFlags = mPref.getString(mContext.getString(R.string.pref_key_cxx_options), ""); |
| 56 | + builder.addFlags(cxxFlags); |
| 57 | + |
| 58 | + return builder.buildCommand(); |
46 | 59 |
|
47 | 60 | } |
48 | 61 |
|
49 | 62 | @Override |
50 | 63 | public String getMakeFlags() { |
51 | 64 | return ""; |
52 | 65 | } |
| 66 | + |
| 67 | + private String getGCCFlags() { |
| 68 | + CommandBuilder builder = new CommandBuilder(); |
| 69 | + |
| 70 | + |
| 71 | + //-ansi |
| 72 | + builder.addFlags(mPref.getBoolean(mContext.getString(R.string.pref_c_options_ansi), false) |
| 73 | + ? "-ansi" : ""); |
| 74 | + //-fno-asm |
| 75 | + builder.addFlags(mPref.getBoolean(mContext.getString(R.string.pref_c_options_fno_asm), false) |
| 76 | + ? "-fno-asm" : ""); |
| 77 | + //-traditional-cpp |
| 78 | + builder.addFlags(mPref.getBoolean(mContext.getString(R.string.pref_c_options_ansi), false) |
| 79 | + ? "-traditional-cpp" : ""); |
| 80 | + |
| 81 | + //optimize |
| 82 | + String optimize = mPref.getString(mContext.getString(R.string.pref_option_optimization_level), ""); |
| 83 | + if (!optimize.isEmpty()) { |
| 84 | + builder.addFlags("-O" + optimize); |
| 85 | + } |
| 86 | + |
| 87 | + //language standard |
| 88 | + String std = mPref.getString(mContext.getString(R.string.pref_option_language_standard), ""); |
| 89 | + if (!std.isEmpty()) { |
| 90 | + builder.addFlags("-std=" + std); |
| 91 | + } |
| 92 | + return builder.buildCommand(); |
| 93 | + } |
| 94 | + |
53 | 95 | } |
0 commit comments