@@ -9,7 +9,8 @@ module fpm
99use fpm_model, only: fpm_model_t, srcfile_t, show_model, &
1010 FPM_SCOPE_UNKNOWN, FPM_SCOPE_LIB, FPM_SCOPE_DEP, &
1111 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
1314
1415
1516use fpm_sources, only: add_executable_sources, add_sources_from_dir
@@ -43,6 +44,7 @@ subroutine build_model(model, settings, package, error)
4344 integer :: i, j
4445 type (package_config_t) :: dependency
4546 character (len= :), allocatable :: manifest, lib_dir
47+ character (len= :), allocatable :: fortran_compiler, fortran_compiler_flags, c_compiler
4648
4749 logical :: duplicates_found = .false.
4850 type (string_t) :: include_dir
@@ -58,25 +60,27 @@ subroutine build_model(model, settings, package, error)
5860 if (allocated (error)) return
5961
6062 if (settings% compiler.eq. ' ' )then
61- model % fortran_compiler = ' gfortran'
63+ fortran_compiler = ' gfortran'
6264 else
63- model % fortran_compiler = settings% compiler
65+ fortran_compiler = settings% compiler
6466 endif
6567
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)
6870
69- if (is_unknown_compiler(model % fortran_compiler)) then
71+ if (is_unknown_compiler(fortran_compiler)) then
7072 write (* , ' (*(a:,1x))' ) &
71- " <WARN>" , " Unknown compiler" , model % fortran_compiler, " requested!" , &
73+ " <WARN>" , " Unknown compiler" , fortran_compiler, " requested!" , &
7274 " Defaults for this compiler might be incorrect"
7375 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)
7577
76- call get_module_flags(model % fortran_compiler, &
78+ call get_module_flags(fortran_compiler, &
7779 & 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()
8084
8185 allocate (model% packages(model% deps% ndep))
8286
@@ -185,9 +189,9 @@ subroutine build_model(model, settings, package, error)
185189
186190 if (settings% verbose) then
187191 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
191195 write (* ,* )' <INFO> INCLUDE DIRECTORIES: [' , string_cat(model% include_dirs,' ,' ),' ]'
192196 end if
193197
0 commit comments