2 package org
.de
.metux
.unitool
.tools
;
4 import org
.de
.metux
.unitool
.base
.LinkerParam
;
5 import org
.de
.metux
.util
.Exec
;
6 import org
.de
.metux
.util
.Environment
;
8 public class LinkExecutable
extends LinkerBase
10 public LinkExecutable(LinkerParam p
)
19 String linker_command
=
20 param
.config
.getConfigStr(
21 LinkerParam
.cf_linker_executable_command
,
22 Environment
.getenv("CC"));
27 gcc
= new Gcc_cmdline(linker_command
);
28 gcc
.setNormalizer(param
.normalizer
);
29 gcc
.shared(param
.isLinktypeShared());
30 gcc
.verbatims(param
.getVerbatims());
31 gcc
.output_filename(param
.getOutputFile());
33 gcc
.libpath(param
.getLibraryPathes_dec_sysroot());
34 gcc
.rpath(param
.getRuntimeLibraryPathes());
35 gcc
.dynlink(param
.getSharedLinks());
37 gcc
.staticlink(param
.getStaticLinks());
38 gcc
.objlink(param
.getObjectLinks_add_sysroot());
40 // clear already processed stuff from parameter set
41 // evrything's remaining is junk. warn about that
42 param
.clearVerbatim();
43 param
.clearOutputFile();
44 param
.clearLinktype();
45 param
.clearLibraryPath();
46 param
.clearRuntimeLibraryPath();
47 param
.clearStaticLink();
48 param
.clearSharedLink();
49 param
.clearObjectLink();
51 // add misc GCC dependend stuff -- fixme!
52 String cmdline
= gcc
.toString();
54 System
.out
.println("==> ExecutableLinker: "+cmdline
);
55 Exec exec
= new Exec();
57 if (!exec
.run(cmdline
))
58 throw new RuntimeException("Exec failed: "+cmdline
);