@@ -9,7 +9,8 @@ module fpm
9
9
use fpm_model, only: fpm_model_t, srcfile_t, show_model, &
10
10
FPM_SCOPE_UNKNOWN, FPM_SCOPE_LIB, FPM_SCOPE_DEP, &
11
11
FPM_SCOPE_APP, FPM_SCOPE_EXAMPLE, FPM_SCOPE_TEST
12
- use fpm_compiler, only: get_module_flags, is_unknown_compiler, get_default_c_compiler
12
+ use fpm_compiler, only: get_module_flags, is_unknown_compiler, get_default_c_compiler, &
13
+ & archiver_t, compiler_t
13
14
14
15
15
16
use fpm_sources, only: add_executable_sources, add_sources_from_dir
@@ -43,6 +44,7 @@ subroutine build_model(model, settings, package, error)
43
44
integer :: i, j
44
45
type (package_config_t) :: dependency
45
46
character (len= :), allocatable :: manifest, lib_dir
47
+ character (len= :), allocatable :: fortran_compiler, fortran_compiler_flags, c_compiler
46
48
47
49
logical :: duplicates_found = .false.
48
50
type (string_t) :: include_dir
@@ -58,25 +60,27 @@ subroutine build_model(model, settings, package, error)
58
60
if (allocated (error)) return
59
61
60
62
if (settings% compiler.eq. ' ' )then
61
- model % fortran_compiler = ' gfortran'
63
+ fortran_compiler = ' gfortran'
62
64
else
63
- model % fortran_compiler = settings% compiler
65
+ fortran_compiler = settings% compiler
64
66
endif
65
67
66
- call get_default_c_compiler(model % fortran_compiler, model % c_compiler)
67
- model % c_compiler = get_env(' FPM_C_COMPILER' ,model % c_compiler)
68
+ call get_default_c_compiler(fortran_compiler, c_compiler)
69
+ c_compiler = get_env(' FPM_C_COMPILER' , c_compiler)
68
70
69
- if (is_unknown_compiler(model % fortran_compiler)) then
71
+ if (is_unknown_compiler(fortran_compiler)) then
70
72
write (* , ' (*(a:,1x))' ) &
71
- " <WARN>" , " Unknown compiler" , model % fortran_compiler, " requested!" , &
73
+ " <WARN>" , " Unknown compiler" , fortran_compiler, " requested!" , &
72
74
" Defaults for this compiler might be incorrect"
73
75
end if
74
- model% output_directory = join_path(' build' ,basename(model % fortran_compiler)// ' _' // settings% build_name)
76
+ model% output_directory = join_path(' build' ,basename(fortran_compiler)// ' _' // settings% build_name)
75
77
76
- call get_module_flags(model % fortran_compiler, &
78
+ call get_module_flags(fortran_compiler, &
77
79
& join_path(model% output_directory,model% package_name), &
78
- & model% fortran_compile_flags)
79
- model% fortran_compile_flags = settings% flag // model% fortran_compile_flags
80
+ & fortran_compiler_flags)
81
+ model% compiler = compiler_t(fortran_compiler, settings% flag // fortran_compiler_flags)
82
+ model% c_compiler = compiler_t(c_compiler, settings% flag // fortran_compiler_flags)
83
+ model% archiver = archiver_t()
80
84
81
85
allocate (model% packages(model% deps% ndep))
82
86
@@ -185,9 +189,9 @@ subroutine build_model(model, settings, package, error)
185
189
186
190
if (settings% verbose) then
187
191
write (* ,* )' <INFO> BUILD_NAME: ' ,settings% build_name
188
- write (* ,* )' <INFO> COMPILER: ' ,settings % compiler
189
- write (* ,* )' <INFO> C COMPILER: ' ,model% c_compiler
190
- write (* ,* )' <INFO> COMPILER OPTIONS: ' , model% fortran_compile_flags
192
+ write (* ,* )' <INFO> COMPILER: ' ,model % compiler% prog
193
+ write (* ,* )' <INFO> C COMPILER: ' ,model% c_compiler% prog
194
+ write (* ,* )' <INFO> COMPILER OPTIONS: ' , model% compiler % flags
191
195
write (* ,* )' <INFO> INCLUDE DIRECTORIES: [' , string_cat(model% include_dirs,' ,' ),' ]'
192
196
end if
193
197
0 commit comments