@@ -110,37 +110,23 @@ subroutine build_model(model, settings, package, error)
110110 model% packages(i)% version = package% version% s()
111111
112112 ! > Add this dependency's manifest macros
113- allocate ( model% packages(i)% macros( 0 ) )
113+ call model% packages(i)% preprocess % destroy( )
114114
115115 if (allocated (dependency% preprocess)) then
116116 do j = 1 , size (dependency% preprocess)
117- if (dependency% preprocess(j)% name == " cpp" ) then
118- if (.not. has_cpp) has_cpp = .true.
119- if (allocated (dependency% preprocess(j)% macros)) then
120- model% packages(i)% macros = [model% packages(i)% macros, dependency% preprocess(j)% macros]
121- end if
122- else
123- write (stderr, ' (a)' ) ' Warning: Preprocessor ' // package% preprocess(i)% name // &
124- ' is not supported; will ignore it'
125- end if
117+ call model% packages(i)% preprocess% add_config(dependency% preprocess(j))
126118 end do
127119 end if
128120
129121 ! > Add this dependency's package-level macros
130122 if (allocated (dep% preprocess)) then
131123 do j = 1 , size (dep% preprocess)
132- if (dep% preprocess(j)% name == " cpp" ) then
133- if (.not. has_cpp) has_cpp = .true.
134- if (allocated (dep% preprocess(j)% macros)) then
135- model% packages(i)% macros = [model% packages(i)% macros, dep% preprocess(j)% macros]
136- end if
137- else
138- write (stderr, ' (a)' ) ' Warning: Preprocessor ' // package% preprocess(i)% name // &
139- ' is not supported; will ignore it'
140- end if
124+ call model% packages(i)% preprocess% add_config(dep% preprocess(j))
141125 end do
142126 end if
143127
128+ if (model% packages(i)% preprocess% is_cpp()) has_cpp = .true.
129+
144130 if (.not. allocated (model% packages(i)% sources)) allocate (model% packages(i)% sources(0 ))
145131
146132 if (allocated (dependency% library)) then
@@ -149,7 +135,7 @@ subroutine build_model(model, settings, package, error)
149135 lib_dir = join_path(dep% proj_dir, dependency% library% source_dir)
150136 if (is_dir(lib_dir)) then
151137 call add_sources_from_dir(model% packages(i)% sources, lib_dir, FPM_SCOPE_LIB, &
152- error= error)
138+ with_f_ext = model % packages(i) % preprocess % suffixes, error= error)
153139 if (allocated (error)) exit
154140 end if
155141 end if
@@ -187,7 +173,8 @@ subroutine build_model(model, settings, package, error)
187173 ! Add sources from executable directories
188174 if (is_dir(' app' ) .and. package% build% auto_executables) then
189175 call add_sources_from_dir(model% packages(1 )% sources,' app' , FPM_SCOPE_APP, &
190- with_executables= .true. , error= error)
176+ with_executables= .true. , with_f_ext= model% packages(1 )% preprocess% suffixes,&
177+ error= error)
191178
192179 if (allocated (error)) then
193180 return
@@ -196,7 +183,8 @@ subroutine build_model(model, settings, package, error)
196183 end if
197184 if (is_dir(' example' ) .and. package% build% auto_examples) then
198185 call add_sources_from_dir(model% packages(1 )% sources,' example' , FPM_SCOPE_EXAMPLE, &
199- with_executables= .true. , error= error)
186+ with_executables= .true. , &
187+ with_f_ext= model% packages(1 )% preprocess% suffixes,error= error)
200188
201189 if (allocated (error)) then
202190 return
@@ -205,7 +193,8 @@ subroutine build_model(model, settings, package, error)
205193 end if
206194 if (is_dir(' test' ) .and. package% build% auto_tests) then
207195 call add_sources_from_dir(model% packages(1 )% sources,' test' , FPM_SCOPE_TEST, &
208- with_executables= .true. , error= error)
196+ with_executables= .true. , &
197+ with_f_ext= model% packages(1 )% preprocess% suffixes,error= error)
209198
210199 if (allocated (error)) then
211200 return
@@ -215,6 +204,7 @@ subroutine build_model(model, settings, package, error)
215204 if (allocated (package% executable)) then
216205 call add_executable_sources(model% packages(1 )% sources, package% executable, FPM_SCOPE_APP, &
217206 auto_discover= package% build% auto_executables, &
207+ with_f_ext= model% packages(1 )% preprocess% suffixes, &
218208 error= error)
219209
220210 if (allocated (error)) then
@@ -225,6 +215,7 @@ subroutine build_model(model, settings, package, error)
225215 if (allocated (package% example)) then
226216 call add_executable_sources(model% packages(1 )% sources, package% example, FPM_SCOPE_EXAMPLE, &
227217 auto_discover= package% build% auto_examples, &
218+ with_f_ext= model% packages(1 )% preprocess% suffixes, &
228219 error= error)
229220
230221 if (allocated (error)) then
@@ -235,6 +226,7 @@ subroutine build_model(model, settings, package, error)
235226 if (allocated (package% test)) then
236227 call add_executable_sources(model% packages(1 )% sources, package% test, FPM_SCOPE_TEST, &
237228 auto_discover= package% build% auto_tests, &
229+ with_f_ext= model% packages(1 )% preprocess% suffixes, &
238230 error= error)
239231
240232 if (allocated (error)) then
0 commit comments