diff options
author | Mark Donszelmann <Mark.Donszelmann@gmail.com> | 2009-11-30 09:11:43 +0100 |
---|---|---|
committer | Mark Donszelmann <Mark.Donszelmann@gmail.com> | 2009-11-30 09:11:43 +0100 |
commit | 82b3d2e292355c7b30f35e68e9506ccbd3c48a34 (patch) | |
tree | 4e3972614993e8eafd6d0cb4f404f2b7f6211ea5 /src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java | |
parent | 97c4b6bd774960fe9301829cf2d1ac23882e8958 (diff) | |
download | cpptasks-parallel-82b3d2e292355c7b30f35e68e9506ccbd3c48a34.tar.gz cpptasks-parallel-82b3d2e292355c7b30f35e68e9506ccbd3c48a34.tar.bz2 cpptasks-parallel-82b3d2e292355c7b30f35e68e9506ccbd3c48a34.tar.xz cpptasks-parallel-82b3d2e292355c7b30f35e68e9506ccbd3c48a34.zip |
Fixed NAR-112
Diffstat (limited to 'src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java')
-rw-r--r-- | src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java index 043720d..ce9f2fb 100644 --- a/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java +++ b/src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java @@ -63,7 +63,7 @@ public class GppLinker extends AbstractLdLinker { private File[] libDirs; private String runtimeLibrary; // FREEEHEP - private String gccLibrary, gfortranLibrary; + private String gccLibrary, gfortranLibrary, gfortranMainLibrary; protected GppLinker(String command, String[] extensions, String[] ignoredExtensions, String outputPrefix, @@ -97,6 +97,22 @@ public class GppLinker extends AbstractLdLinker { gfortranLibrary = "-lgfortran"; } } + + gfortranMainLibrary = null; + if (linkType.linkFortran()) { + if (linkType.isExecutable() && linkType.linkFortranMain() && !isDarwin()) { + if (linkType.isStaticRuntime()) { + String[] cmdin = new String[] { "gfortran", + "-print-file-name=libgfortranbegin.a" }; + String[] cmdout = CaptureStreamHandler.run(cmdin); + if ((cmdout.length > 0) && (cmdout[0].indexOf('/') >= 0)) { + gfortranMainLibrary = cmdout[0]; + } + } else { + gfortranMainLibrary = "-lgfortranbegin"; + } + } + } runtimeLibrary = null; if (linkType.linkCPP()) { @@ -137,6 +153,9 @@ public class GppLinker extends AbstractLdLinker { if (gfortranLibrary != null) { endargs.addElement(gfortranLibrary); } + if (gfortranMainLibrary != null) { + endargs.addElement(gfortranMainLibrary); + } if (gccLibrary != null) { endargs.addElement(gccLibrary); } |