PageRenderTime 28ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/src/launch.w32/mosml.c

https://github.com/bluegnu/mosml
C | 95 lines | 79 code | 13 blank | 3 comment | 38 complexity | dcf2c0581bcfd56ff3c9afb7b26a4edc MD5 | raw file
Possible License(s): GPL-2.0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "driver.h"
  5. __declspec(dllimport) int caml_main(int argc, char * argv[]);
  6. char* stdlib = NULL;
  7. char* opt = "";
  8. char* usefiles = "";
  9. char* mosmltop = NULL;
  10. int argc2;
  11. char** argv2;
  12. int main(int argc, char* argv[])
  13. {
  14. int i;
  15. char * a;
  16. stdlib = getenv("MOSMLLIB");
  17. if (stdlib == NULL)
  18. {
  19. fprintf(stderr, "Variable MOSMLLIB is undefined.\n");
  20. exit(2);
  21. }
  22. // argv2 will be filled as follows:
  23. // argv[0], %MOSMLLIB%\mosmltop, -stdlib, %MOSMLLIB%, options, filenames
  24. argv2 = (char **) xmalloc( sizeof(char *) * (argc + 4) );
  25. argv2[0] = argv[0];
  26. argv2[2] = "-stdlib";
  27. argc2 = 4;
  28. for (i = 1; i < argc; i++)
  29. {
  30. a = argv[i];
  31. if (eq(a, "-I") || eq(a, "-include") || eq(a, "-P") || eq(a, "-perv") ||
  32. eq(a, "-m") || eq(a, "-msgstyle"))
  33. {
  34. argv2[argc2++] = a;
  35. i++;
  36. if( i < argc )
  37. argv2[argc2++] = argv[i];
  38. }
  39. else if (eq(a, "-quietdec") || eq(a, "-valuepoly") || eq(a, "-imptypes") ||
  40. eq(a, "-orthodox") || eq(a, "-conservative") || eq(a, "-liberal") )
  41. {
  42. argv2[argc2++] = a;
  43. }
  44. else if (eq(a, "-stdlib"))
  45. {
  46. i++;
  47. if( i < argc )
  48. stdlib = argv[i];
  49. }
  50. else if (prefix(a, "-"))
  51. {
  52. fprintf(stderr, "Unknown option \"%s\", ignored\n", a);
  53. }
  54. else
  55. {
  56. /* reformat(&usefiles, "%s %s", usefiles, a); */
  57. }
  58. }
  59. for (i = 1; i < argc; i++)
  60. {
  61. a = argv[i];
  62. if (eq(a, "-I") || eq(a, "-include") || eq(a, "-P") || eq(a, "-perv") ||
  63. eq(a, "-m") || eq(a, "-msgstyle"))
  64. i++;
  65. else if (eq(a, "-quietdec") || eq(a, "-valuepoly") || eq(a, "-imptypes") ||
  66. eq(a, "-orthodox") || eq(a, "-conservative") || eq(a, "-liberal") )
  67. ;
  68. else if (eq(a, "-stdlib"))
  69. i++;
  70. else if (prefix(a, "-"))
  71. ;
  72. else
  73. {
  74. argv2[argc2++] = a;
  75. }
  76. }
  77. format(&mosmltop, "%s\\mosmltop", stdlib);
  78. argv2[1] = mosmltop;
  79. argv2[3] = stdlib;
  80. argv2[argc2] = NULL;
  81. return caml_main(argc2, argv2);
  82. }