blob: d7638b85c1103bb47f4e4841f0fd2b645677acb5 [file] [log] [blame] [raw]
Austin Mortonde85aec2020-09-27 00:20:19 -04001// Copyright (c) 2018, Forschungzentrum Juelich GmbH, Juelich Supercomputing Centre
dbroemmel6c5f1dd2018-10-23 11:17:28 +02002// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are met:
6//
7// * Redistributions of source code must retain the above copyright notice,
8// this list of conditions and the following disclaimer.
9// * Redistributions in binary form must reproduce the above copyright
10// notice, this list of conditions and the following disclaimer in the
11// documentation and/or other materials provided with the distribution.
12//
13// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
17// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23// POSSIBILITY OF SUCH DAMAGE.
24
Austin Morton044dcfb2020-09-26 16:59:26 -040025import path from 'path';
dbroemmel6c5f1dd2018-10-23 11:17:28 +020026
Austin Morton044dcfb2020-09-26 16:59:26 -040027import { BaseCompiler } from '../base-compiler';
28import * as utils from '../utils';
29
30export class FortranCompiler extends BaseCompiler {
Austin Mortonbac07fe2020-09-25 11:21:30 -040031 static get key() { return 'fortran'; }
32
Matt Godboltf25940c2020-01-21 08:10:14 -060033 async runCompiler(compiler, options, inputFilename, execOptions) {
dbroemmel6c5f1dd2018-10-23 11:17:28 +020034 if (!execOptions) {
35 execOptions = this.getDefaultExecOptions();
36 }
dbroemmel90f60d72018-10-23 12:01:24 +020037 // Switch working directory of compiler to temp directory that also holds the source.
38 // This makes it possible to generate .mod files.
dbroemmel6c5f1dd2018-10-23 11:17:28 +020039 execOptions.customCwd = path.dirname(inputFilename);
40
Matt Godboltf25940c2020-01-21 08:10:14 -060041 const result = await this.exec(compiler, options, execOptions);
42 result.inputFilename = inputFilename;
Partoufdc236122020-07-14 20:41:21 +020043 const baseFilename = './' + path.basename(inputFilename);
44 result.stdout = utils.parseOutput(result.stdout, baseFilename);
45 result.stderr = utils.parseOutput(result.stderr, baseFilename);
Matt Godboltf25940c2020-01-21 08:10:14 -060046 return result;
dbroemmel6c5f1dd2018-10-23 11:17:28 +020047 }
48}