main.cc
changeset 46 fc1b78ea6d84
parent 0 fb772792efd1
child 47 017efb738d95
equal deleted inserted replaced
45:3b6bf2b5f1df 46:fc1b78ea6d84
    80 
    80 
    81 
    81 
    82 /* forward declarations... */
    82 /* forward declarations... */
    83 int stage1_2(const char *filename, const char *includedir, symbol_c **tree_root);
    83 int stage1_2(const char *filename, const char *includedir, symbol_c **tree_root);
    84 //int stage3(symbol_c *tree_root);
    84 //int stage3(symbol_c *tree_root);
    85 int stage4(symbol_c *tree_root);
    85 int stage4(symbol_c *tree_root, const char *builddir);
    86 
    86 
    87 
    87 
    88 static void printusage(const char *cmd) {
    88 static void printusage(const char *cmd) {
    89   printf("%s [<input_file>] [-I <include_directory>]\n", cmd);
    89   printf("%s [<input_file>] [-I <include_directory>]\n", cmd);
    90 }
    90 }
    92 
    92 
    93 
    93 
    94 int main(int argc, char **argv) {
    94 int main(int argc, char **argv) {
    95   symbol_c *tree_root;
    95   symbol_c *tree_root;
    96   char * includedir = NULL;
    96   char * includedir = NULL;
       
    97   char * builddir = NULL;
       
    98 
       
    99   if (argc == 5) {
       
   100     builddir = argv[4];
       
   101     argc = 4;
       
   102   }
    97 
   103 
    98   if (argc == 4) {
   104   if (argc == 4) {
    99     if (strcmp(argv[2], "-I") != 0) {
   105     if (strcmp(argv[2], "-I") != 0) {
   100       printusage(argv[0]);
   106       printusage(argv[0]);
   101       return EXIT_FAILURE;
   107       return EXIT_FAILURE;
   102     }
   108     }
   103     includedir = argv[3];
   109     includedir = argv[3];
   104     argc = 2;
   110     argc = 2;
   105   }
   111   }
       
   112 
       
   113   if (argc == 3) {
       
   114     builddir = argv[2];
       
   115     argc = 2;
       
   116   }    
   106 
   117 
   107   if (argc != 2) {
   118   if (argc != 2) {
   108     printusage(argv[0]);
   119     printusage(argv[0]);
   109     return EXIT_FAILURE;
   120     return EXIT_FAILURE;
   110   }
   121   }
   119   if (stage3(tree_root) < 0)
   130   if (stage3(tree_root) < 0)
   120     return EXIT_FAILURE;
   131     return EXIT_FAILURE;
   121   */
   132   */
   122 
   133 
   123   /* 3rd Pass */
   134   /* 3rd Pass */
   124   if (stage4(tree_root) < 0)
   135   if (stage4(tree_root, builddir) < 0)
   125     return EXIT_FAILURE;
   136     return EXIT_FAILURE;
   126 
   137 
   127   /* 4th Pass */
   138   /* 4th Pass */
   128   /* Currently implemented in the Makefile! */
   139   /* Currently implemented in the Makefile! */
   129 
   140