[Top][All Lists]
[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);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/ilalink Makefile.am,1.11,1.12 link_main.c,1.12,1.13,
Rhys Weatherley <address@hidden> <=