import from svn
[unitool.git] / tools / LinkExecutable.java
blob7b4402e15d9e91a8a439e2f6718f4655b0d04f43
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)
12 super(p);
15 public void run()
17 Gcc_cmdline gcc;
19 String linker_command =
20 param.config.getConfigStr(
21 LinkerParam.cf_linker_executable_command,
22 Environment.getenv("CC"));
24 handle_static_libs();
25 filter_objects();
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);