build_target_t Derived Type

type, public :: build_target_t

Type describing a generated build target


Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: compile_flags

Compile flags for this build target

type(build_target_ptr), public, allocatable :: dependencies(:)

Resolved build dependencies

integer(kind=int64), public, allocatable :: digest_cached

Previous source file hash

type(fortran_features_t), public :: features

Language features

character(len=:), public, allocatable :: link_flags

Link flags for this build target

type(string_t), public, allocatable :: link_libraries(:)

Native libraries to link against

type(string_t), public, allocatable :: link_objects(:)

Objects needed to link this target

type(string_t), public, allocatable :: macros(:)

List of macros

character(len=:), public, allocatable :: output_dir

File path of output directory

character(len=:), public, allocatable :: output_file

File path of build target object relative to cwd

character(len=:), public, allocatable :: output_log_file

File path of build log file relative to cwd

character(len=:), public, allocatable :: output_name

File path of build target object relative to output_dir

character(len=:), public, allocatable :: package_name

Name of parent package

integer, public :: schedule = -1

Targets in the same schedule group are guaranteed to be independent

logical, public :: skip = .false.

Flag set if build target will be skipped (not built)

logical, public :: sorted = .false.

Flag set if build target is sorted for building

type(srcfile_t), public, allocatable :: source

Primary source for this build target

integer, public :: target_type = FPM_TARGET_UNKNOWN

Target type

logical, public :: touched = .false.

Flag set when first visited to check for circular dependencies

character(len=:), public, allocatable :: version

Version number


Type-Bound Procedures

procedure, public :: is_executable_target

  • private elemental function is_executable_target(target_ptr, scope) result(is_exe)

    Arguments

    Type IntentOptional Attributes Name
    class(build_target_t), intent(in) :: target_ptr
    integer, intent(in) :: scope

    Return Value logical

Source Code

type build_target_t

    !> File path of build target object relative to cwd
    character(:), allocatable :: output_file

    !> File path of build target object relative to output_dir
    character(:), allocatable :: output_name

    !> File path of output directory
    character(:), allocatable :: output_dir

    !> File path of build log file relative to cwd
    character(:), allocatable :: output_log_file

    !> Name of parent package
    character(:), allocatable :: package_name

    !> Primary source for this build target
    type(srcfile_t), allocatable :: source

    !> Resolved build dependencies
    type(build_target_ptr), allocatable :: dependencies(:)

    !> Target type
    integer :: target_type = FPM_TARGET_UNKNOWN

    !> Native libraries to link against
    type(string_t), allocatable :: link_libraries(:)

    !> Objects needed to link this target
    type(string_t), allocatable :: link_objects(:)

    !> Link flags for this build target
    character(:), allocatable :: link_flags

    !> Compile flags for this build target
    character(:), allocatable :: compile_flags

    !> Flag set when first visited to check for circular dependencies
    logical :: touched = .false.

    !> Flag set if build target is sorted for building
    logical :: sorted = .false.

    !> Flag set if build target will be skipped (not built)
    logical :: skip = .false.

    !> Language features
    type(fortran_features_t) :: features

    !> Targets in the same schedule group are guaranteed to be independent
    integer :: schedule = -1

    !> Previous source file hash
    integer(int64), allocatable :: digest_cached

    !> List of macros
    type(string_t), allocatable :: macros(:)

    !> Version number
    character(:), allocatable :: version
    
    contains
    
        procedure :: is_executable_target

end type build_target_t