dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnet/ilalink Makefile.am,1.11,1.12 link_main


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/ilalink Makefile.am,1.11,1.12 link_main.c,1.12,1.13
Date: Fri, 13 Dec 2002 00:45:31 -0500

Update of /cvsroot/dotgnu-pnet/pnet/ilalink
In directory subversions:/tmp/cvs-serv19402/ilalink

Modified Files:
        Makefile.am link_main.c 
Log Message:


Implement options for "ilalink" that make it compatible with "al";
hard link "al" to point to "ilalink".


Index: Makefile.am
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilalink/Makefile.am,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** Makefile.am 3 Aug 2002 04:13:34 -0000       1.11
--- Makefile.am 13 Dec 2002 05:45:29 -0000      1.12
***************
*** 22,23 ****
--- 22,26 ----
  
  AM_CFLAGS = -I$(top_srcdir)/include
+ 
+ install-exec-hook:
+       ln $(DESTDIR)$(bindir)/ilalink $(DESTDIR)$(bindir)/al

Index: link_main.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ilalink/link_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** link_main.c 25 Aug 2002 04:05:32 -0000      1.12
--- link_main.c 13 Dec 2002 05:45:29 -0000      1.13
***************
*** 117,126 ****
--- 117,163 ----
        {"-f", 'f', 1, 0, 0},
        {"-m", 'm', 1, 0, 0},
+       {"-v", 'v', 0, 0, 0},
        {"--version", 'v', 0,
                "--version                   or -v",
                "Print the version of the program"},
+       {"-h", 'h', 0, 0, 0},
        {"--help", 'h', 0,
                "--help",
                "Print this help message."},
+ 
+       /* Options for compatibility with Microsoft's IL linker, "al" */
+       {"/algid", 'H', 1, 0, 0},               /* "/algid:id" */
+       {"/base*", '?', 1, 0, 0},               /* "/baseaddress:addr" */
+       {"/bugreport", '?', 1, 0, 0},   /* "/bugreport:filename" */
+       {"/comp*", '?', 1, 0, 0},               /* "/company:text" */
+       {"/comp*", '?', 1, 0, 0},               /* "/company:text" */
+       {"/config*", '?', 1, 0, 0},             /* "/configuration:text" */
+       {"/copy*", '?', 1, 0, 0},               /* "/copyright:text" */
+       {"/c*", '?', 1, 0, 0},                  /* "/culture:text" */
+       {"/delay*", '?', 0, 0, 0},              /* "/delaysign[+|-]" */
+       {"/descr*", '?', 1, 0, 0},              /* "/description:text" */
+       {"/embed*", 'Q', 1, 0, 0},              /* "/embedresource:filename" */
+       {"/e*", '?', 1, 0, 0},                  /* "/evidence:text" */
+       {"/fileversion", '?', 1, 0, 0}, /* "/fileversion:version" */
+       {"/flags", '?', 1, 0, 0},               /* "/flags:flags" */
+       {"/fullpaths", '?', 0, 0, 0},   /* "/fullpaths" */
+       {"/help", 'h', 0, 0, 0},                /* "/help" */
+       {"/keyf*", '?', 1, 0, 0},               /* "/keyfile:filename" */
+       {"/keyn*", '?', 1, 0, 0},               /* "/keyname:name" */
+       {"/link*", '?', 1, 0, 0},               /* "/linkresource:filename" */
+       {"/main", 'E', 1, 0, 0},                /* "/main:method" */
+       {"/nologo", '?', 0, 0, 0},              /* "/nologo" */
+       {"/out", 'o', 1, 0, 0},                 /* "/out:filename" */
+       {"/productv*", '?', 1, 0, 0},   /* "/productversion:text" */
+       {"/prod*", '?', 1, 0, 0},               /* "/product:text" */
+       {"/template", '?', 1, 0, 0},    /* "/template:filename" */
+       {"/title", '?', 1, 0, 0},               /* "/title:text" */
+       {"/trade*", '?', 1, 0, 0},              /* "/trademark:text" */
+       {"/t*", 'F', 1, 0, 0},                  /* "/target:lib|exe|win" */
+       {"/v*", 'A', 1, 0, 0},                  /* "/version:version" */
+       {"/win32icon", '?', 1, 0, 0},   /* "/win32icon:filename" */
+       {"/win32res", '?', 1, 0, 0},    /* "/win32res:filename" */
+       {"/?", 'h', 0, 0, 0},                   /* "/?" */
+ 
        {0, 0, 0, 0, 0}
  };
***************
*** 164,167 ****
--- 201,206 ----
        char *stdCLibrary = 0;
        char **resources;
+       char **resourceNames;
+       int *resourcePrivate;
        int numResources = 0;
        int jvmMode = 0;
***************
*** 169,172 ****
--- 208,212 ----
        int isStatic = 0;
        int privateResources = 0;
+       int defaultIsLib = 0;
        int firstFile;
        int temp, temp2;
***************
*** 188,196 ****
  
        /* Allocate an array to hold the resource files to link against */
!       resources = (char **)ILCalloc(argc, sizeof(char **));
        if(!resources)
        {
                outOfMemory();
        }
  
        /* Parse the command-line arguments */
--- 228,246 ----
  
        /* Allocate an array to hold the resource files to link against */
!       resources = (char **)ILCalloc(argc, sizeof(char *));
        if(!resources)
        {
                outOfMemory();
        }
+       resourceNames = (char **)ILCalloc(argc, sizeof(char *));
+       if(!resourceNames)
+       {
+               outOfMemory();
+       }
+       resourcePrivate = (int *)ILCalloc(argc, sizeof(int));
+       if(!resourcePrivate)
+       {
+               outOfMemory();
+       }
  
        /* Parse the command-line arguments */
***************
*** 227,235 ****
                        case 'F':
                        {
                                if(!strcmp(param, "exe"))
                                {
                                        format = IL_IMAGETYPE_EXE;
                                }
!                               else if(!strcmp(param, "dll"))
                                {
                                        format = IL_IMAGETYPE_DLL;
--- 277,292 ----
                        case 'F':
                        {
+                               /* Note: "exe", "dll", and "obj" are standard, 
while
+                                  "win" and "lib" exist for compatibility only 
*/
                                if(!strcmp(param, "exe"))
                                {
                                        format = IL_IMAGETYPE_EXE;
                                }
!                               else if(!strcmp(param, "win"))
!                               {
!                                       format = IL_IMAGETYPE_EXE;
!                                       flags |= IL_WRITEFLAG_SUBSYS_GUI;
!                               }
!                               else if(!strcmp(param, "dll") || !strcmp(param, 
"lib"))
                                {
                                        format = IL_IMAGETYPE_DLL;
***************
*** 297,301 ****
                        case 'r':
                        {
!                               resources[numResources++] = param;
                        }
                        break;
--- 354,402 ----
                        case 'r':
                        {
!                               resources[numResources] = param;
!                               resourceNames[numResources] = param;
!                               resourcePrivate[numResources] = -1;
!                               ++numResources;
!                       }
!                       break;
! 
!                       case 'Q':
!                       {
!                               /* Parse an 
"/embedresource:file[,name[,private]]" option */
!                               int len = 0;
!                               char *filename = param;
!                               char *name;
!                               int filenamelen;
!                               int namelen;
!                               int isPrivate = 0;
!                               while(param[len] != '\0' && param[len] != ',')
!                               {
!                                       ++len;
!                               }
!                               filenamelen = len;
!                               param += len;
!                               if(*param == ',')
!                               {
!                                       *param++ = '\0';
!                               }
!                               len = 0;
!                               name = param;
!                               while(param[len] != '\0' && param[len] != ',')
!                               {
!                                       ++len;
!                               }
!                               namelen = len;
!                               if(!ILStrICmp(param + len, ",private"))
!                               {
!                                       isPrivate = 1;
!                               }
!                               if(*param == ',')
!                               {
!                                       *param = '\0';
!                               }
!                               resources[numResources] = filename;
!                               resourceNames[numResources] = (namelen > 0 ? 
name : filename);
!                               resourcePrivate[numResources] = isPrivate;
!                               ++numResources;
                        }
                        break;
***************
*** 390,394 ****
                                else if(!strncmp(param, "resources=", 10))
                                {
!                                       resources[numResources++] = param + 10;
                                }
                                else if(!strncmp(param, "hash-algorithm=", 15))
--- 491,498 ----
                                else if(!strncmp(param, "resources=", 10))
                                {
!                                       resources[numResources] = param + 10;
!                                       resourceNames[numResources] = param + 
10;
!                                       resourcePrivate[numResources] = -1;
!                                       ++numResources;
                                }
                                else if(!strncmp(param, "hash-algorithm=", 15))
***************
*** 454,457 ****
--- 558,570 ----
                        break;
  
+                       case '?':
+                       {
+                               /* Ignore this compatibility option that we 
don't support.
+                                  "/nologo" or a similar innocuous option is 
also used
+                                  to flip the default output format to "dll" 
from "exe" */
+                               defaultIsLib = 1;
+                       }
+                       break;
+ 
                        case 'v':
                        {
***************
*** 481,485 ****
        if(format == -1)
        {
!               format = IL_IMAGETYPE_EXE;
                if(outputFile)
                {
--- 594,605 ----
        if(format == -1)
        {
!               if(defaultIsLib)
!               {
!                       format = IL_IMAGETYPE_DLL;
!               }
!               else
!               {
!                       format = IL_IMAGETYPE_EXE;
!               }
                if(outputFile)
                {
***************
*** 501,504 ****
--- 621,628 ----
                                        format = IL_IMAGETYPE_OBJ;
                                }
+                               else if(!ILStrICmp(outputFile + len, "exe"))
+                               {
+                                       format = IL_IMAGETYPE_EXE;
+                               }
                        }
                }
***************
*** 680,685 ****
                        if(infile != NULL)
                        {
!                               errors |= addResource(linker, resources[temp], 
infile,
!                                                                         
privateResources, 0);
                        }
                }
--- 804,818 ----
                        if(infile != NULL)
                        {
!                               int isPrivate;
!                               if(resourcePrivate[temp] != -1)
!                               {
!                                       isPrivate = resourcePrivate[temp];
!                               }
!                               else
!                               {
!                                       isPrivate = privateResources;
!                               }
!                               errors |= addResource(linker, 
resourceNames[temp], infile,
!                                                                         
isPrivate, 0);
                        }
                }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]