aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Costa <p.simoes.costa@gmail.com>2021-12-13 07:02:02 +0000
committerGitHub <noreply@github.com>2021-12-13 08:02:02 +0100
commitd99ad594f731511413f5bad96f0c0dfe0c2c08aa (patch)
treebb2ae9a678d659c5ff00788acf65582794e7dfb8
parentcc8a92006cdb1be73457734f354a4abff5167555 (diff)
downloadfpm-d99ad594f731511413f5bad96f0c0dfe0c2c08aa.tar.gz
fpm-d99ad594f731511413f5bad96f0c0dfe0c2c08aa.zip
Better extraction of the Fortran compiler from the MPI wrapper (#634)
- changed command to one supported by more (all?) MPI libraries
-rw-r--r--src/fpm_compiler.f9012
1 files changed, 8 insertions, 4 deletions
diff --git a/src/fpm_compiler.f90 b/src/fpm_compiler.f90
index c0c5b73..bccff74 100644
--- a/src/fpm_compiler.f90
+++ b/src/fpm_compiler.f90
@@ -40,7 +40,7 @@ use fpm_environment, only: &
OS_UNKNOWN
use fpm_filesystem, only: join_path, basename, get_temp_filename, delete_file, unix_path, &
& getline
-use fpm_strings, only: string_cat, string_t
+use fpm_strings, only: split, string_cat, string_t
implicit none
public :: compiler_t, new_compiler, archiver_t, new_archiver
public :: debug
@@ -467,7 +467,7 @@ function get_compiler_id(compiler) result(id)
character(len=*), intent(in) :: compiler
integer(kind=compiler_enum) :: id
- character(len=:), allocatable :: command, output
+ character(len=:), allocatable :: full_command, full_command_parts(:), command, output
integer :: stat, io
! Check whether we are dealing with an MPI compiler wrapper first
@@ -475,14 +475,18 @@ function get_compiler_id(compiler) result(id)
& .or. check_compiler(compiler, "mpif90") &
& .or. check_compiler(compiler, "mpif77")) then
output = get_temp_filename()
- call run(compiler//" -showme:command > "//output//" 2>&1", &
+ call run(compiler//" -show > "//output//" 2>&1", &
& echo=.false., exitstat=stat)
if (stat == 0) then
open(file=output, newunit=io, iostat=stat)
- if (stat == 0) call getline(io, command, stat)
+ if (stat == 0) call getline(io, full_command, stat)
close(io, iostat=stat)
! If we get a command from the wrapper, we will try to identify it
+ call split(full_command, full_command_parts, delimiters=' ')
+ if(size(full_command_parts) > 0)then
+ command = trim(full_command_parts(1))
+ endif
if (allocated(command)) then
id = get_id(command)
if (id /= id_unknown) return