From 755572c1115c9c419441625dee5dd5e38701e9df Mon Sep 17 00:00:00 2001 From: bentley Date: Fri, 15 Jan 2010 10:52:38 -0700 Subject: [PATCH] replace linkfile functionality with command-line options Instead of running: $ xlink linkfile.txt where the linkfile looks like: --- [Objects] foo.o bar.o [Libraries] foo.l bar.l [Output] baz.gb --- we now do: $ xlink -o baz.gb -l foo.l -l bar.l foo.o bar.o --- src/link/main.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/link/main.c b/src/link/main.c index dc5e4102..f57b4726 100644 --- a/src/link/main.c +++ b/src/link/main.c @@ -118,19 +118,23 @@ main(int argc, char *argv[]) int ch; char *ep; - SLONG argn = 0; - if (argc == 1) usage(); - while ((ch = getopt(argc, argv, "m:n:s:t:z:")) != -1) { + while ((ch = getopt(argc, argv, "l:m:n:o:s:t:z:")) != -1) { switch (ch) { + case 'l': + lib_Readfile(optarg); + break; case 'm': SetMapfileName(optarg); break; case 'n': SetSymfileName(optarg); break; + case 'o': + out_Setname(optarg); + break; case 's': options |= OPT_SMART_C_LINK; strcpy(smartlinkstartsymbol, optarg); @@ -171,16 +175,18 @@ main(int argc, char *argv[]) argc -= optind; argv += optind; - if (argc == 1) { - ProcessLinkfile(argv[argc - 1]); - AddNeededModules(); - AssignSections(); - CreateSymbolTable(); - Patch(); - Output(); - CloseMapfile(); - } else + if (argc == 0) usage(); + for (int i = 0; i < argc; ++i) + obj_Readfile(argv[i]); + + AddNeededModules(); + AssignSections(); + CreateSymbolTable(); + Patch(); + Output(); + CloseMapfile(); + return (0); }