From 82b3d2e292355c7b30f35e68e9506ccbd3c48a34 Mon Sep 17 00:00:00 2001 From: Mark Donszelmann Date: Mon, 30 Nov 2009 09:11:43 +0100 Subject: Fixed NAR-112 --- .../net/sf/antcontrib/cpptasks/gcc/GppLinker.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/main/java/net/sf/antcontrib/cpptasks/gcc/GppLinker.java') 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); } -- cgit v1.2.3