Skip to content

Commit c19ff1a

Browse files
committed
fix unallocated build
1 parent fb9153f commit c19ff1a

File tree

2 files changed

+38
-21
lines changed

2 files changed

+38
-21
lines changed

src/fpm.f90

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ subroutine build_model(model, settings, package, error)
4848
type(package_config_t), pointer :: manifest
4949
character(len=:), allocatable :: file_name, lib_dir
5050
logical :: has_cpp
51-
logical :: duplicates_found
51+
logical :: duplicates_found, auto_exe, auto_example, auto_test
5252
type(string_t) :: include_dir
5353

5454
model%package_name = package%name
@@ -71,9 +71,11 @@ subroutine build_model(model, settings, package, error)
7171
call new_compiler_flags(model,settings)
7272
model%build_dir = settings%build_dir
7373
model%build_prefix = join_path(settings%build_dir, basename(model%compiler%fc))
74-
model%include_tests = settings%build_tests
75-
model%enforce_module_names = package%build%module_naming
76-
model%module_prefix = package%build%module_prefix
74+
model%include_tests = settings%build_tests
75+
if (allocated(package%build)) then
76+
model%enforce_module_names = package%build%module_naming
77+
model%module_prefix = package%build%module_prefix
78+
endif
7779

7880
! Resolve meta-dependencies into the package and the model
7981
call resolve_metapackages(model,package,settings,error)
@@ -159,18 +161,22 @@ subroutine build_model(model, settings, package, error)
159161
end if
160162

161163
end if
164+
165+
if (allocated(manifest%build)) then
162166

163-
if (allocated(manifest%build%link)) then
164-
model%link_libraries = [model%link_libraries, manifest%build%link]
165-
end if
167+
if (allocated(manifest%build%link)) then
168+
model%link_libraries = [model%link_libraries, manifest%build%link]
169+
end if
166170

167-
if (allocated(manifest%build%external_modules)) then
168-
model%external_modules = [model%external_modules, manifest%build%external_modules]
169-
end if
171+
if (allocated(manifest%build%external_modules)) then
172+
model%external_modules = [model%external_modules, manifest%build%external_modules]
173+
end if
170174

171-
! Copy naming conventions from this dependency's manifest
172-
model%packages(i)%enforce_module_names = manifest%build%module_naming
173-
model%packages(i)%module_prefix = manifest%build%module_prefix
175+
! Copy naming conventions from this dependency's manifest
176+
model%packages(i)%enforce_module_names = manifest%build%module_naming
177+
model%packages(i)%module_prefix = manifest%build%module_prefix
178+
179+
endif
174180

175181
end associate
176182
end do
@@ -180,7 +186,18 @@ subroutine build_model(model, settings, package, error)
180186
if (has_cpp) call set_cpp_preprocessor_flags(model%compiler%id, model%fortran_compile_flags)
181187

182188
! Add sources from executable directories
183-
if (is_dir('app') .and. package%build%auto_executables) then
189+
190+
if (allocated(package%build)) then
191+
auto_exe = package%build%auto_executables
192+
auto_example = package%build%auto_examples
193+
auto_test = package%build%auto_tests
194+
else
195+
auto_exe = .true.
196+
auto_example = .true.
197+
auto_test = .true.
198+
endif
199+
200+
if (is_dir('app') .and. auto_exe) then
184201
call add_sources_from_dir(model%packages(1)%sources,'app', FPM_SCOPE_APP, &
185202
with_executables=.true., with_f_ext=model%packages(1)%preprocess%suffixes,&
186203
error=error)
@@ -190,7 +207,7 @@ subroutine build_model(model, settings, package, error)
190207
end if
191208

192209
end if
193-
if (is_dir('example') .and. package%build%auto_examples) then
210+
if (is_dir('example') .and. auto_example) then
194211
call add_sources_from_dir(model%packages(1)%sources,'example', FPM_SCOPE_EXAMPLE, &
195212
with_executables=.true., &
196213
with_f_ext=model%packages(1)%preprocess%suffixes,error=error)
@@ -200,7 +217,7 @@ subroutine build_model(model, settings, package, error)
200217
end if
201218

202219
end if
203-
if (is_dir('test') .and. package%build%auto_tests) then
220+
if (is_dir('test') .and. auto_test) then
204221
call add_sources_from_dir(model%packages(1)%sources,'test', FPM_SCOPE_TEST, &
205222
with_executables=.true., &
206223
with_f_ext=model%packages(1)%preprocess%suffixes,error=error)
@@ -212,7 +229,7 @@ subroutine build_model(model, settings, package, error)
212229
end if
213230
if (allocated(package%executable)) then
214231
call add_executable_sources(model%packages(1)%sources, package%executable, FPM_SCOPE_APP, &
215-
auto_discover=package%build%auto_executables, &
232+
auto_discover=auto_exe, &
216233
with_f_ext=model%packages(1)%preprocess%suffixes, &
217234
error=error)
218235

@@ -223,7 +240,7 @@ subroutine build_model(model, settings, package, error)
223240
end if
224241
if (allocated(package%example)) then
225242
call add_executable_sources(model%packages(1)%sources, package%example, FPM_SCOPE_EXAMPLE, &
226-
auto_discover=package%build%auto_examples, &
243+
auto_discover=auto_example, &
227244
with_f_ext=model%packages(1)%preprocess%suffixes, &
228245
error=error)
229246

@@ -234,7 +251,7 @@ subroutine build_model(model, settings, package, error)
234251
end if
235252
if (allocated(package%test)) then
236253
call add_executable_sources(model%packages(1)%sources, package%test, FPM_SCOPE_TEST, &
237-
auto_discover=package%build%auto_tests, &
254+
auto_discover=auto_test, &
238255
with_f_ext=model%packages(1)%preprocess%suffixes, &
239256
error=error)
240257

src/fpm/manifest/fortran.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ module fpm_manifest_fortran
2020
character(:), allocatable :: source_form
2121

2222
contains
23-
23+
2424
!> Serialization interface
2525
procedure :: serializable_is_same => fortran_is_same
2626
procedure :: dump_to_toml
@@ -33,7 +33,7 @@ module fpm_manifest_fortran
3333
contains
3434

3535
!> Initialize fortran config
36-
pure subroutine default_fortran_config(self)
36+
subroutine default_fortran_config(self)
3737
type(fortran_config_t), intent(inout) :: self
3838

3939
self%implicit_external = .false.

0 commit comments

Comments
 (0)