Skip to content

Commit 240c8cd

Browse files
committed
Update: model with list of include dirs
A library package must consist of at least a source directory, an include directory or both. Default values of "src" and "include" are ignored if non-existent.
1 parent d958be1 commit 240c8cd

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

fpm/src/fpm.f90

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ subroutine build_model(model, settings, package, error)
4242
integer :: i
4343
type(package_config_t) :: dependency
4444
character(len=:), allocatable :: manifest, lib_dir
45+
type(string_t) :: include_dir
4546

4647
if(settings%verbose)then
4748
write(*,*)'<INFO>BUILD_NAME:',settings%build_name
@@ -50,6 +51,7 @@ subroutine build_model(model, settings, package, error)
5051

5152
model%package_name = package%name
5253

54+
allocate(model%include_dirs(0))
5355
allocate(model%link_libraries(0))
5456

5557
call new_dependency_tree(model%deps, cache=join_path("build", "cache.toml"))
@@ -141,10 +143,23 @@ subroutine build_model(model, settings, package, error)
141143
model%packages(i)%name = dependency%name
142144

143145
if (allocated(dependency%library)) then
144-
lib_dir = join_path(dep%proj_dir, dependency%library%source_dir)
145-
call add_sources_from_dir(model%packages(i)%sources, lib_dir, FPM_SCOPE_LIB, &
146-
error=error)
147-
if (allocated(error)) exit
146+
147+
if (allocated(dependency%library%source_dir)) then
148+
lib_dir = join_path(dep%proj_dir, dependency%library%source_dir)
149+
if (is_dir(lib_dir)) then
150+
call add_sources_from_dir(model%packages(i)%sources, lib_dir, FPM_SCOPE_LIB, &
151+
error=error)
152+
if (allocated(error)) exit
153+
end if
154+
end if
155+
156+
if (allocated(dependency%library%include_dir)) then
157+
include_dir%s = join_path(dep%proj_dir, dependency%library%include_dir)
158+
if (is_dir(include_dir%s)) then
159+
model%include_dirs = [model%include_dirs, include_dir]
160+
end if
161+
end if
162+
148163
end if
149164

150165
if (allocated(dependency%build%link)) then

fpm/src/fpm_model.f90

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ module fpm_model
123123
!> Base directory for build
124124
character(:), allocatable :: output_directory
125125

126+
!> Include directories
127+
type(string_t), allocatable :: include_dirs(:)
128+
126129
!> Native libraries to link against
127130
type(string_t), allocatable :: link_libraries(:)
128131

0 commit comments

Comments
 (0)