@@ -9,7 +9,8 @@ module fpm_cmd_install
9
9
use fpm_manifest, only : package_config_t, get_package_data
10
10
use fpm_model, only : fpm_model_t, FPM_SCOPE_APP
11
11
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
13
14
use fpm_strings, only : string_t, resize
14
15
implicit none
15
16
private
@@ -28,6 +29,7 @@ subroutine cmd_install(settings)
28
29
type (build_target_ptr), allocatable :: targets(:)
29
30
type (installer_t) :: installer
30
31
character (len= :), allocatable :: lib, dir
32
+ type (string_t), allocatable :: list(:)
31
33
logical :: installable
32
34
33
35
call get_package_data(package, " fpm.toml" , error, apply_defaults= .true. )
@@ -61,13 +63,15 @@ subroutine cmd_install(settings)
61
63
verbosity= merge (2 , 1 , settings% verbose))
62
64
63
65
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)
68
67
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
71
75
end if
72
76
73
77
if (allocated (package% executable)) then
@@ -85,24 +89,17 @@ subroutine install_info(unit, package, model, targets)
85
89
86
90
integer :: ii, ntargets
87
91
character (len= :), allocatable :: lib
88
- type (string_t), allocatable :: install_target(:)
92
+ type (string_t), allocatable :: install_target(:), temp(:)
89
93
90
- call resize (install_target)
94
+ allocate (install_target( 0 ) )
91
95
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)
106
103
107
104
write (unit, ' ("#", *(1x, g0))' ) &
108
105
" total number of installable targets:" , ntargets
0 commit comments