@@ -6,16 +6,16 @@ module fpm
6
6
use fpm_dependency, only : new_dependency_tree
7
7
use fpm_environment, only: run
8
8
use fpm_filesystem, only: is_dir, join_path, number_of_rows, list_files, exists, basename
9
- use fpm_model, only: fpm_model_t, srcfile_t, build_target_t , &
9
+ use fpm_model, only: fpm_model_t, srcfile_t, show_model , &
10
10
FPM_SCOPE_UNKNOWN, FPM_SCOPE_LIB, FPM_SCOPE_DEP, &
11
- FPM_SCOPE_APP, FPM_SCOPE_EXAMPLE, FPM_SCOPE_TEST, &
12
- FPM_TARGET_EXECUTABLE, FPM_TARGET_ARCHIVE, show_model
11
+ FPM_SCOPE_APP, FPM_SCOPE_EXAMPLE, FPM_SCOPE_TEST
13
12
use fpm_compiler, only: add_compile_flag_defaults
14
13
15
14
16
15
use fpm_sources, only: add_executable_sources, add_sources_from_dir
17
16
use fpm_targets, only: targets_from_sources, resolve_module_dependencies, &
18
- resolve_target_linking
17
+ resolve_target_linking, build_target_t, build_target_ptr, &
18
+ FPM_TARGET_EXECUTABLE, FPM_TARGET_ARCHIVE
19
19
use fpm_manifest, only : get_package_data, package_config_t
20
20
use fpm_error, only : error_t, fatal_error
21
21
use fpm_manifest_test, only : test_config_t
@@ -157,27 +157,14 @@ subroutine build_model(model, settings, package, error)
157
157
end do
158
158
if (allocated (error)) return
159
159
160
- call targets_from_sources(model)
161
-
162
- do i = 1 , size (model% link_libraries)
163
- model% link_flags = model% link_flags // " -l" // model% link_libraries(i)% s
164
- end do
165
-
166
- if (model% targets(1 )% ptr% target_type == FPM_TARGET_ARCHIVE) then
167
- model% library_file = model% targets(1 )% ptr% output_file
168
- end if
169
-
170
- call resolve_module_dependencies(model% targets,error)
171
-
172
- call resolve_target_linking(model% targets)
173
-
174
160
end subroutine build_model
175
161
176
162
177
163
subroutine cmd_build (settings )
178
164
type (fpm_build_settings), intent (in ) :: settings
179
165
type (package_config_t) :: package
180
166
type (fpm_model_t) :: model
167
+ type (build_target_ptr), allocatable :: targets(:)
181
168
type (error_t), allocatable :: error
182
169
183
170
integer :: i
@@ -194,14 +181,20 @@ subroutine cmd_build(settings)
194
181
error stop 1
195
182
end if
196
183
184
+ call targets_from_sources(targets,model,error)
185
+ if (allocated (error)) then
186
+ print ' (a)' , error% message
187
+ error stop 1
188
+ end if
189
+
197
190
if (settings% list)then
198
- do i= 1 ,size (model % targets)
199
- write (stderr,* ) model % targets(i)% ptr% output_file
191
+ do i= 1 ,size (targets)
192
+ write (stderr,* ) targets(i)% ptr% output_file
200
193
enddo
201
194
else if (settings% show_model) then
202
195
call show_model(model)
203
196
else
204
- call build_package(model)
197
+ call build_package(targets, model)
205
198
endif
206
199
207
200
end subroutine
@@ -216,6 +209,7 @@ subroutine cmd_run(settings,test)
216
209
type (error_t), allocatable :: error
217
210
type (package_config_t) :: package
218
211
type (fpm_model_t) :: model
212
+ type (build_target_ptr), allocatable :: targets(:)
219
213
type (string_t) :: exe_cmd
220
214
type (string_t), allocatable :: executables(:)
221
215
type (build_target_t), pointer :: exe_target
@@ -234,6 +228,12 @@ subroutine cmd_run(settings,test)
234
228
error stop 1
235
229
end if
236
230
231
+ call targets_from_sources(targets,model,error)
232
+ if (allocated (error)) then
233
+ print ' (a)' , error% message
234
+ error stop 1
235
+ end if
236
+
237
237
if (test) then
238
238
run_scope = FPM_SCOPE_TEST
239
239
else
@@ -244,9 +244,9 @@ subroutine cmd_run(settings,test)
244
244
col_width = - 1
245
245
found(:) = .false.
246
246
allocate (executables(0 ))
247
- do i= 1 ,size (model % targets)
247
+ do i= 1 ,size (targets)
248
248
249
- exe_target = > model % targets(i)% ptr
249
+ exe_target = > targets(i)% ptr
250
250
251
251
if (exe_target% target_type == FPM_TARGET_EXECUTABLE .and. &
252
252
allocated (exe_target% dependencies)) then
@@ -307,9 +307,9 @@ subroutine cmd_run(settings,test)
307
307
j = 1
308
308
nCol = LINE_WIDTH/ col_width
309
309
write (stderr,* ) ' Available names:'
310
- do i= 1 ,size (model % targets)
310
+ do i= 1 ,size (targets)
311
311
312
- exe_target = > model % targets(i)% ptr
312
+ exe_target = > targets(i)% ptr
313
313
314
314
if (exe_target% target_type == FPM_TARGET_EXECUTABLE .and. &
315
315
allocated (exe_target% dependencies)) then
@@ -333,7 +333,7 @@ subroutine cmd_run(settings,test)
333
333
334
334
end if
335
335
336
- call build_package(model)
336
+ call build_package(targets, model)
337
337
338
338
do i= 1 ,size (executables)
339
339
if (settings% list) then
0 commit comments