Adding version extension according to ChangeLog CVS revision
[fw/sdcc] / src / SDCCmain.c
index 999bf9ca98e57492ef398d2c4682b7d178783d6d..9aa914aa0f33f814474c63bb169e409ced7ead42 100644 (file)
@@ -400,6 +400,7 @@ _findProcessor (int argc, char **argv)
   /* no error if processor was not specified. */
 }
 
+
 /*-----------------------------------------------------------------*/
 /* printVersionInfo - prints the version info        */
 /*-----------------------------------------------------------------*/
@@ -417,7 +418,7 @@ printVersionInfo (void)
 #ifdef SDCC_SUB_VERSION_STR
           "/" SDCC_SUB_VERSION_STR
 #endif
-           " (" __DATE__ ")"
+           " #%s (" __DATE__ ")"
 #ifdef __CYGWIN__
           " (CYGWIN)\n"
 #elif defined __MINGW32__
@@ -431,7 +432,7 @@ printVersionInfo (void)
 #else
           " (UNIX) \n"
 #endif
-    );
+    , getBuildNumber() );
 }
 
 static void
@@ -1017,6 +1018,7 @@ parseCmdLine (int argc, char **argv)
          if (!port->parseOption (&argc, argv, &i))
            {
              werror (W_UNKNOWN_OPTION, argv[i]);
+             continue;
            }
          else
            {
@@ -1619,18 +1621,36 @@ linkEdit (char **envp)
   if (port->linker.cmd)
     {
       char buffer2[PATH_MAX];
-      set *libSet=NULL;
+      char buffer3[PATH_MAX];
+      set *tempSet=NULL, *libSet=NULL;
 
+      strcpy(buffer3, dstFileName);
       if(TARGET_IS_PIC16) {
-         /* use $3 to set the linker include directories */
-         libSet = appendStrSet(libDirsSet, "-I\"", "\"");
-
-         /* now add the libraries from command line */
+        
+         /* use $l to set the linker include directories */
+         tempSet = appendStrSet(libDirsSet, "-I\"", "\"");
+         mergeSets(&linkOptionsSet, tempSet);
+         
+         tempSet = appendStrSet(libPathsSet, "-I\"", "\"");
+         mergeSets(&linkOptionsSet, tempSet);
+
+         /* use $3 for libraries from command line --> libSet */
          mergeSets(&libSet, libFilesSet);
+
+         tempSet = appendStrSet(relFilesSet, "", "");
+         mergeSets(&libSet, tempSet);
+//         libSet = reverseSet(libSet);
+
+       if(fullSrcFileName) {
+//             strcpy(buffer3, strrchr(fullSrcFileName, DIR_SEPARATOR_CHAR)+1);
+               /* if it didn't work, revert to old behaviour */
+               if(!strlen(buffer3))strcpy(buffer3, dstFileName);
+               strcat(buffer3, port->linker.rel_ext);
+               
+       } else strcpy(buffer3, "");
       }
       
-      buildCmdLine (buffer2, port->linker.cmd, dstFileName, scratchFileName, (libSet?joinStrSet(libSet):NULL), linkOptionsSet);
-      if(libSet)deleteSet(&libSet);
+      buildCmdLine (buffer2, port->linker.cmd, buffer3, scratchFileName, (libSet?joinStrSet(libSet):NULL), linkOptionsSet);
 
       buildCmdLine2 (buffer, sizeof(buffer), buffer2);
     }
@@ -2054,6 +2074,7 @@ static void doPrintSearchDirs(void)
 
     printf("libdir:\n");
     fputStrSet(stdout, libDirsSet);
+    fputStrSet(stdout, libPathsSet);
 }