/src/org/ooc/frontend/compilers/Gcc.java

http://github.com/nddrylliog/ooc · Java · 93 lines · 68 code · 20 blank · 5 comment · 1 complexity · 41bc3a23ba4a9926c5931c5e0a1e3e9e MD5 · raw file

  1. package org.ooc.frontend.compilers;
  2. /**
  3. * Gnu Compilers Collection
  4. *
  5. * @author Amos Wenger
  6. */
  7. public class Gcc extends BaseCompiler {
  8. public Gcc() {
  9. super("gcc");
  10. }
  11. public Gcc(String executableName) {
  12. super(executableName);
  13. }
  14. public void addDynamicLibrary(String library) {
  15. command.add("-l"+library);
  16. }
  17. public void addIncludePath(String path) {
  18. command.add("-I"+path);
  19. }
  20. public void addLibraryPath(String path) {
  21. command.add("-L"+path);
  22. }
  23. public void addObjectFile(String file) {
  24. command.add(file);
  25. }
  26. public void addOption(String option) {
  27. command.add(option);
  28. }
  29. public void setOutputPath(String path) {
  30. command.add("-o");
  31. command.add(path);
  32. }
  33. public void setCompileOnly() {
  34. command.add("-c");
  35. }
  36. public void setDebugEnabled() {
  37. command.add("-g");
  38. }
  39. @Override
  40. public void reset() {
  41. super.reset();
  42. command.add("-std=gnu99");
  43. command.add("-Wall");
  44. command.add("-O2");
  45. }
  46. public boolean supportsDeclInFor() {
  47. return true;
  48. }
  49. public boolean supportsVLAs() {
  50. return true;
  51. }
  52. @Override
  53. public Gcc clone() {
  54. return new Gcc();
  55. }
  56. public void defineSymbol(String symbolName) {
  57. command.add("-D" + symbolName);
  58. }
  59. public void undefineSymbol(String symbolName) {
  60. command.add("-U" + symbolName);
  61. }
  62. public void setFatArchitectures(String[] archs) {
  63. for (String arch: archs) {
  64. command.add("-arch");
  65. command.add(arch);
  66. }
  67. }
  68. public void setOSXSDKAndDeploymentTarget(String version) {
  69. command.add("-isysroot");
  70. command.add("/Developer/SDKs/MacOSX" + version + ".sdk");
  71. command.add("-mmacosx-version-min=" + version);
  72. }
  73. }