@@ -9,7 +9,8 @@ module fpm_cmd_install
99 use fpm_manifest, only : package_config_t, get_package_data
1010 use fpm_model, only : fpm_model_t, FPM_SCOPE_APP
1111 use fpm_targets, only: targets_from_sources, build_target_t, &
12- build_target_ptr, FPM_TARGET_EXECUTABLE
12+ build_target_ptr, FPM_TARGET_EXECUTABLE, &
13+ filter_library_targets, filter_executable_targets
1314 use fpm_strings, only : string_t, resize
1415 implicit none
1516 private
@@ -28,6 +29,7 @@ subroutine cmd_install(settings)
2829 type (build_target_ptr), allocatable :: targets(:)
2930 type (installer_t) :: installer
3031 character (len= :), allocatable :: lib, dir
32+ type (string_t), allocatable :: list(:)
3133 logical :: installable
3234
3335 call get_package_data(package, " fpm.toml" , error, apply_defaults= .true. )
@@ -61,13 +63,15 @@ subroutine cmd_install(settings)
6163 verbosity= merge (2 , 1 , settings% verbose))
6264
6365 if (allocated (package% library) .and. package% install% library) then
64- dir = join_path(model% output_directory, model% package_name)
65- lib = " lib" // model% package_name// " .a"
66- call installer% install_library(join_path(dir, lib), error)
67- call handle_error(error)
66+ call filter_library_targets(targets, list)
6867
69- call install_module_files(installer, dir, error)
70- call handle_error(error)
68+ if (size (list) > 0 ) then
69+ call installer% install_library(list(1 )% s, error)
70+ call handle_error(error)
71+
72+ call install_module_files(installer, dir, error)
73+ call handle_error(error)
74+ end if
7175 end if
7276
7377 if (allocated (package% executable)) then
@@ -85,24 +89,17 @@ subroutine install_info(unit, package, model, targets)
8589
8690 integer :: ii, ntargets
8791 character (len= :), allocatable :: lib
88- type (string_t), allocatable :: install_target(:)
92+ type (string_t), allocatable :: install_target(:), temp(:)
8993
90- call resize (install_target)
94+ allocate (install_target( 0 ) )
9195
92- ntargets = 0
93- if (allocated (package% library) .and. package% install% library) then
94- ntargets = ntargets + 1
95- lib = join_path(model% output_directory, model% package_name, &
96- " lib" // model% package_name// " .a" )
97- install_target(ntargets)% s = lib
98- end if
99- do ii = 1 , size (targets)
100- if (is_executable_target(targets(ii)% ptr)) then
101- if (ntargets >= size (install_target)) call resize(install_target)
102- ntargets = ntargets + 1
103- install_target(ntargets)% s = targets(ii)% ptr% output_file
104- end if
105- end do
96+ call filter_library_targets(targets, temp)
97+ install_target = [install_target, temp]
98+
99+ call filter_executable_targets(targets, FPM_SCOPE_APP, temp)
100+ install_target = [install_target, temp]
101+
102+ ntargets = size (install_target)
106103
107104 write (unit, ' ("#", *(1x, g0))' ) &
108105 " total number of installable targets:" , ntargets
0 commit comments