Skip to content

Commit f28ac3e

Browse files
committed
Separate target type for c objects
1 parent 6652c86 commit f28ac3e

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/fpm_backend.f90

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ module fpm_backend
3030
use fpm_environment, only: run
3131
use fpm_filesystem, only: dirname, join_path, exists, mkdir
3232
use fpm_model, only: fpm_model_t
33-
use fpm_targets, only: build_target_t, build_target_ptr, &
34-
FPM_TARGET_OBJECT, FPM_TARGET_ARCHIVE, FPM_TARGET_EXECUTABLE
33+
use fpm_targets, only: build_target_t, build_target_ptr, FPM_TARGET_OBJECT, &
34+
FPM_TARGET_C_OBJECT, FPM_TARGET_ARCHIVE, FPM_TARGET_EXECUTABLE
3535

3636
use fpm_strings, only: string_cat
3737

@@ -241,6 +241,10 @@ subroutine build_target(model,target)
241241
call run(model%fortran_compiler//" -c " // target%source%file_name // target%compile_flags &
242242
// " -o " // target%output_file)
243243

244+
case (FPM_TARGET_C_OBJECT)
245+
call run(model%c_compiler//" -c " // target%source%file_name &
246+
// " -o " // target%output_file)
247+
244248
case (FPM_TARGET_EXECUTABLE)
245249

246250
call run(model%fortran_compiler// " " // target%compile_flags &

src/fpm_targets.f90

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ module fpm_targets
3535
private
3636

3737
public FPM_TARGET_UNKNOWN, FPM_TARGET_EXECUTABLE, &
38-
FPM_TARGET_ARCHIVE, FPM_TARGET_OBJECT
38+
FPM_TARGET_ARCHIVE, FPM_TARGET_OBJECT, &
39+
FPM_TARGET_C_OBJECT
3940
public build_target_t, build_target_ptr
4041
public targets_from_sources, resolve_module_dependencies
4142
public resolve_target_linking, add_target, add_dependency
@@ -50,7 +51,8 @@ module fpm_targets
5051
integer, parameter :: FPM_TARGET_ARCHIVE = 2
5152
!> Target type is compiled object
5253
integer, parameter :: FPM_TARGET_OBJECT = 3
53-
54+
!> Target type is c compiled object
55+
integer, parameter :: FPM_TARGET_C_OBJECT = 4
5456

5557
!> Wrapper type for constructing arrays of `[[build_target_t]]` pointers
5658
type build_target_ptr
@@ -194,7 +196,8 @@ subroutine build_target_list(targets,model)
194196
case (FPM_UNIT_MODULE,FPM_UNIT_SUBMODULE,FPM_UNIT_SUBPROGRAM,FPM_UNIT_CSOURCE)
195197

196198
call add_target(targets,source = sources(i), &
197-
type = FPM_TARGET_OBJECT,&
199+
type = merge(FPM_TARGET_C_OBJECT,FPM_TARGET_OBJECT,&
200+
sources(i)%unit_type==FPM_UNIT_CSOURCE), &
198201
output_file = get_object_name(sources(i)))
199202

200203
if (with_lib .and. sources(i)%unit_scope == FPM_SCOPE_LIB) then

0 commit comments

Comments
 (0)