2 package org
.de
.metux
.unitool
.tools
;
4 import org
.de
.metux
.util
.HTMLEntities
;
5 import org
.de
.metux
.util
.PathNormalizer
;
6 import org
.de
.metux
.util
.FileOps
;
7 import org
.de
.metux
.util
.StrUtil
;
9 public class LD_cmdline
15 boolean prohibit_undefined
= false;
16 boolean strip_debug
= false;
18 PathNormalizer normalizer
;
20 public LD_cmdline(String ld_command
, PathNormalizer n
)
26 public String
toString()
29 throw new RuntimeException("LD_cmdline() missing output file");
31 // FIXME !!! we better should split off into gcc_cmdline and ld_cmdline
35 (StrUtil
.isEmpty(soname
)?
"":" -Wl,-soname -Wl,"+soname
+" ")+
36 (prohibit_undefined ?
" -Wl,-no-undefined ":"")+
37 (strip_debug ?
" -S ":"")+
41 public void dlname(String n
)
46 public void libpath(String p
)
48 if (!StrUtil
.isEmpty(p
))
49 addpar
+= " -L"+normalizer
.dec_sysroot(p
);
52 public void libpath(String
[] par
)
55 for (int x
=0; x
<par
.length
; x
++)
59 public void output_filename(String fn
)
61 if (StrUtil
.isEmpty(fn
))
62 throw new RuntimeException("output_filename() fn is empty!");
64 FileOps
.mkdir(PathNormalizer
.dirname(fn
));
68 public void dynlink(String
[] par
)
70 if (!StrUtil
.isEmpty(par
))
71 for (int x
=0; x
<par
.length
; x
++)
72 if (par
[x
].length()>0)
73 addpar
+= " -l"+par
[x
];
76 public void objlink(String
[] par
)
78 if (!StrUtil
.isEmpty(par
))
79 for (int x
=0; x
<par
.length
; x
++)
80 if (par
[x
].length()>0)
84 public void linker_flag(String flag
)
86 if (StrUtil
.isEmpty(flag
))
89 if (flag
.equals("no-undefined"))
90 prohibit_undefined
= true;
91 else if (flag
.equals("strip-debug"))
94 throw new RuntimeException("unhandled flag: "+flag
);
97 public void linker_flag(String
[] par
)
100 for (int x
=0; x
<par
.length
; x
++)
105 public void staticlink(String
[] par
)
108 for (int x
=0; x
<par
.length
; x
++)
112 public void staticlink(String filename
)
114 if (!StrUtil
.isEmpty(filename
))
115 addpar
+= " -Wl,--whole-archive -Wl,"+filename
;
118 /* add an --rpath option */
119 public void rpath(String rpath
)
121 if (!StrUtil
.isEmpty(rpath
))
122 addpar
+= " -Wl,--rpath -Wl,"+rpath
;
125 public void rpath(String
[] par
)
127 if (!StrUtil
.isEmpty(par
))
128 for (int x
=0; x
<par
.length
; x
++)
132 public void exportSymbols(String re
[])
135 for (int x
=0; x
<re
.length
; x
++)
136 if ((re
[x
]!=null) && (re
[x
].length()!=0))
137 System
.err
.println("WARN: -export-symbols not implemented yet");
138 // addpar += " -Wl,-export-symbols -Wl,\""+re[x]+"\"";
141 public void exportSymbolsRegex(String re
[])
144 for (int x
=0; x
<re
.length
; x
++)
145 if ((re
[x
]!=null) && (re
[x
].length()!=0))
146 System
.err
.println("-export-symbols-regex not implemented yet");
147 // addpar += " -Wl,--export-symbols-regex -Wl,\""+re[x]+"\"";
150 public void verbatims(String
[] par
)
152 if (!StrUtil
.isEmpty(par
))
153 for (int x
=0; x
<par
.length
; x
++)
154 if (par
[x
].length()>0)
156 System
.err
.println("WARNING: LD: adding verbatim parameter \""+par
[x
]+"\" -- will be removed soon!");
157 cmdline
+= " \""+par
[x
]+"\"";
158 // throw new RuntimeException(" !!! VERBATIM PARAMETERS NO LONGER SUPPORTED !!!: "+par[x]);