# eCos saved configuration

# ---- commands --------------------------------------------------------
# This section contains information about the savefile format.
# It should not be edited. Any modifications made to this section
# may make it impossible for the configuration tools to read
# the savefile.

cdl_savefile_version 1;
cdl_savefile_command cdl_savefile_version {};
cdl_savefile_command cdl_savefile_command {};
cdl_savefile_command cdl_configuration { description hardware template package };
cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };

# ---- toplevel --------------------------------------------------------
# This section defines the toplevel configuration object. The only
# values that can be changed are the name of the configuration and
# the description field. It is not possible to modify the target,
# the template or the set of packages simply by editing the lines
# below because these changes have wide-ranging effects. Instead
# the appropriate tools should be used to make such modifications.

cdl_configuration eCos {
    description "" ;

    # These fields should not be modified.
    hardware    stm32f4discovery ;
    template    default ;
    package -template CYGPKG_HAL current ;
    package -template CYGPKG_IO current ;
    package -template CYGPKG_IO_SERIAL current ;
    package -template CYGPKG_INFRA current ;
    package -template CYGPKG_KERNEL current ;
    package -template CYGPKG_MEMALLOC current ;
    package -template CYGPKG_ISOINFRA current ;
    package -template CYGPKG_LIBC current ;
    package -template CYGPKG_LIBC_I18N current ;
    package -template CYGPKG_LIBC_SETJMP current ;
    package -template CYGPKG_LIBC_SIGNALS current ;
    package -template CYGPKG_LIBC_STARTUP current ;
    package -template CYGPKG_LIBC_STDIO current ;
    package -template CYGPKG_LIBC_STDLIB current ;
    package -template CYGPKG_LIBC_STRING current ;
    package -template CYGPKG_LIBC_TIME current ;
    package -template CYGPKG_LIBM current ;
    package -template CYGPKG_IO_WALLCLOCK current ;
    package -template CYGPKG_ERROR current ;
    package -hardware CYGPKG_HAL_CORTEXM current ;
    package -hardware CYGPKG_HAL_CORTEXM_STM32 current ;
    package -hardware CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY current ;
    package -hardware CYGPKG_DEVS_FLASH_STM32 current ;
    package -hardware CYGPKG_IO_SERIAL_CORTEXM_STM32 current ;
};

# ---- conflicts -------------------------------------------------------
# There are no conflicts.

# ---- contents --------------------------------------------------------
# >
# >
# Flash driver support
# Control flash device support for STM32F4-Discovery board.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_FLASH {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FLASH
    #     CYGPKG_IO_FLASH (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Global build options
# Global build options including control over
# compiler flags, linker flags and choice of toolchain.
#
cdl_component CYGBLD_GLOBAL_OPTIONS {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Global command prefix
# This option specifies the command prefix used when
# invoking the build tools.
#
cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
    # Flavor: data
    user_value arm-none-eabi
    # value_source user
    # Default value: arm-eabi
};

# Global compiler flags
# This option controls the global compiler flags which are used to
# compile all packages by default. Individual packages may define
# options which override these global flags.
#
cdl_option CYGBLD_GLOBAL_CFLAGS {
    # Flavor: data
    user_value "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    # value_source user
    # Default value:  CYGBLD_GLOBAL_WARNFLAGS . "-mcpu=cortex-m3 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions" 
    #     CYGBLD_GLOBAL_WARNFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings "
    #   --> "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m3 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"

    # The following properties are affected by this value
    # option CYGBLD_INFRA_CFLAGS_WARNINGS_AS_ERRORS
    #     Requires:  is_substr(CYGBLD_GLOBAL_CFLAGS, " -Werror") 
    # option CYGBLD_INFRA_CFLAGS_PIPE
    #     Requires:  is_substr(CYGBLD_GLOBAL_CFLAGS, " -pipe") 
    # package CYGPKG_HAL_CORTEXM
    #     Requires:  CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             is_substr(CYGBLD_GLOBAL_CFLAGS,   " -mbig-endian ") &&
    #             is_substr(CYGBLD_GLOBAL_LDFLAGS,  " -mbig-endian ") 
    # package CYGPKG_HAL_CORTEXM
    #     Requires:  !CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             !is_substr(CYGBLD_GLOBAL_CFLAGS,  " -mbig-endian ") &&
    #             !is_substr(CYGBLD_GLOBAL_LDFLAGS, " -mbig-endian ") 
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# Global linker flags
# This option controls the global linker flags. Individual
# packages may define options which override these global flags.
#
cdl_option CYGBLD_GLOBAL_LDFLAGS {
    # Flavor: data
    user_value "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    # value_source user
    # Default value: "-mcpu=cortex-m3 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM
    #     Requires:  CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             is_substr(CYGBLD_GLOBAL_CFLAGS,   " -mbig-endian ") &&
    #             is_substr(CYGBLD_GLOBAL_LDFLAGS,  " -mbig-endian ") 
    # package CYGPKG_HAL_CORTEXM
    #     Requires:  !CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             !is_substr(CYGBLD_GLOBAL_CFLAGS,  " -mbig-endian ") &&
    #             !is_substr(CYGBLD_GLOBAL_LDFLAGS, " -mbig-endian ") 
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# Standard compiler warning flags
# This option specifies the default warning-related compiler flags used
# on all eCos platforms.
#
cdl_option CYGBLD_GLOBAL_WARNFLAGS {
    # Calculated value:  "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings " 
    # Flavor: data
    # Current_value: -Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings 

    # The following properties are affected by this value
    # option CYGBLD_GLOBAL_CFLAGS
    #     DefaultValue:  CYGBLD_GLOBAL_WARNFLAGS . "-mcpu=cortex-m3 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions" 
};

# Build common GDB stub ROM image
# Unless a target board has specific requirements to the
# stub implementation, it can use a simple common stub.
# This option, which gets enabled by platform HALs as
# appropriate, controls the building of the common stub.
#
cdl_option CYGBLD_BUILD_COMMON_GDB_STUBS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0
};

# <
# STM32 FLASH memory support
# Flash memory support for on-chip flash on STM32 devices and compatibles.
# This driver implements the V2 flash driver API.
#
cdl_package CYGPKG_DEVS_FLASH_STM32 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FLASH
    #     CYGPKG_IO_FLASH (unknown) == 0
    #   --> 0

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# Number of words to write per burst
# On typical hardware programming the flash requires disabling
# interrupts for an extended period of time.
# Some or all of the flash hardware will be unusable while each word
# is programmed, and disabling interrupts is the only reliable
# way of ensuring that no interrupt handler or other thread will
# try to access the flash in the middle of an operation. This
# can have a major impact on the real-time responsiveness of
# typical applications. To ameliorate this the driver will
# perform writes in small bursts, briefly re-enabling the cache
# and interrupts between each burst. The number of write operations
# per burst is determined by this option: reducing the number of
# writes per burst will improve real-time response, but will add
# overhead so the actual flash program operation will take
# longer; conversely more writes per burst will worsen response
# times but reduce overhead.
#
cdl_option CYGNUM_DEVS_FLASH_STM32_V2_PROGRAM_BURST_SIZE {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_STM32 is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 256
    # value_source default
    # Default value: 256
    # Legal values: 4 to 4096
};

# Program/erase parallelism
# The Flash interface of the STM32 F2 and F4 families can program or erase
# multiple bits in one step. The maximum possible parallelism depends
# on the supply voltage. The default value of this option (32)
# corresponds to supply voltage of 2.7 - 3.6V, but another value
# may be chosen if a different voltage is used.
#
cdl_option CYGNUM_DEVS_FLASH_STM32_PARALLELISM {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_STM32 is not active
    # ActiveIf constraint:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values:  8 16 32 64 
};

# STM32 driver build options
# Package specific build options including control over
# compiler flags used only in building the STM32
# flash driver, and details of which tests are built.
#
cdl_component CYGPKG_DEVS_FLASH_STM32_OPTIONS {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_STM32 is not active

    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the STM32 flash driver. These flags
# are used in addition to the set of global flags.
#
cdl_option CYGPKG_DEVS_FLASH_STM32_CFLAGS_ADD {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_STM32_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the STM32 flash driver. These flags
# are removed from the set of global flags if present.
#
cdl_option CYGPKG_DEVS_FLASH_STM32_CFLAGS_REMOVE {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_STM32_OPTIONS is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# <
# eCos HAL
# doc: ref/the-ecos-hardware-abstraction-layer.html
# The eCos HAL package provide a porting layer for
# higher-level parts of the system such as the kernel and the
# C library. Each installation should have HAL packages for
# one or more architectures, and for each architecture there
# may be one or more supported platforms. It is necessary to
# select one target architecture and one platform for that
# architecture. There are also a number of configuration
# options that are common to all HAL packages.
#
cdl_package CYGPKG_HAL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_INFRA
    #     CYGPKG_INFRA == current
    #   --> 1

    # The following properties are affected by this value
};

# >
# Platform-independent HAL options
# A number of configuration options are common to most or all
# HAL packages, for example options controlling how much state
# should be saved during a context switch. The implementations
# of these options will vary from architecture to architecture.
#
cdl_component CYGPKG_HAL_COMMON {
    # There is no associated value.
};

# >
# Provide eCos kernel support
# The HAL can be configured to either support the full eCos
# kernel, or to support only very simple applications which do
# not require a full kernel. If kernel support is not required
# then some of the startup, exception, and interrupt handling
# code can be eliminated.
#
cdl_option CYGFUN_HAL_COMMON_KERNEL_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# HAL exception support
# When a processor exception occurs, for example an attempt to
# execute an illegal instruction or to perform a divide by
# zero, this exception may be handled in a number of different
# ways. If the target system has gdb support then typically
# the exception will be handled by gdb code. Otherwise if the
# HAL exception support is enabled then the HAL will invoke a
# routine deliver_exception(). Typically this routine will be
# provided by the eCos kernel, but it is possible for
# application code to provide its own implementation. If the
# HAL exception support is not enabled and a processor
# exception occurs then the behaviour of the system is
# undefined.
#
cdl_option CYGPKG_HAL_EXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS == 1
    #   --> 1
    # Requires: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS == 1
    #   --> 1

    # The following properties are affected by this value
    # component CYGPKG_KERNEL_EXCEPTIONS
    #     Requires: CYGPKG_HAL_EXCEPTIONS
};

# Stop calling constructors early
# This option supports environments where some constructors
# must be run in the context of a thread rather than at
# simple system startup time. A boolean flag named
# cyg_hal_stop_constructors is set to 1 when constructors
# should no longer be invoked. It is up to some other
# package to deal with the rest of the constructors.
# In the current version this is only possible with the
# C library.
#
cdl_option CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires: CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
};

# HAL uses the MMU and allows for CDL manipulation of it's use
#
cdl_interface CYGINT_HAL_SUPPORTS_MMU_TABLES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGSEM_HAL_INSTALL_MMU_TABLES
    #     ActiveIf: CYGINT_HAL_SUPPORTS_MMU_TABLES
};

# Install MMU tables.
# This option controls whether this application installs
# its own Memory Management Unit (MMU) tables, or relies on the
# existing environment to run.
#
cdl_option CYGSEM_HAL_INSTALL_MMU_TABLES {
    # This option is not active
    # ActiveIf constraint: CYGINT_HAL_SUPPORTS_MMU_TABLES
    #     CYGINT_HAL_SUPPORTS_MMU_TABLES == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYG_HAL_STARTUP != "RAM" 
    #     CYG_HAL_STARTUP == ROM
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_STATIC_MMU_TABLES
    #     Requires: CYGSEM_HAL_INSTALL_MMU_TABLES
};

# Use static MMU tables.
# This option defines an environment where any Memory
# Management Unit (MMU) tables are constant.  Normally used by ROM
# based environments, this provides a way to save RAM usage which
# would otherwise be required for these tables.
#
cdl_option CYGSEM_HAL_STATIC_MMU_TABLES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_HAL_INSTALL_MMU_TABLES
    #     CYGSEM_HAL_INSTALL_MMU_TABLES == 0
    #   --> 0
};

# Route diagnostic output to debug channel
# If not inheriting the console setup from the ROM monitor,
# it is possible to redirect diagnostic output to the debug
# channel by enabling this option. Depending on the debugger
# used it may also be necessary to select a mangler for the
# output to be displayed by the debugger.
#
cdl_component CYGDBG_HAL_DIAG_TO_DEBUG_CHAN {
    # ActiveIf constraint: !CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE == 0
    #   --> 1
    # ActiveIf constraint:  CYGPKG_HAL_ARM || CYGPKG_HAL_POWERPC_MPC8xx  || CYGPKG_HAL_V85X_V850 || CYGSEM_HAL_VIRTUAL_VECTOR_DIAG 
    #     CYGPKG_HAL_ARM (unknown) == 0
    #     CYGPKG_HAL_POWERPC_MPC8xx (unknown) == 0
    #     CYGPKG_HAL_V85X_V850 (unknown) == 0
    #     CYGSEM_HAL_VIRTUAL_VECTOR_DIAG == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  (CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS  || CYG_HAL_STARTUP == "RAM") ? 1 : 0
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #     CYG_HAL_STARTUP == ROM
    #   --> 0

    # The following properties are affected by this value
    # option CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
    #     Calculated:  !CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE  && !CYGDBG_HAL_DIAG_TO_DEBUG_CHAN 
};

# >
# Mangler used on diag output
# It is sometimes necessary to mangle (encode) the
# diag ASCII text output in order for it to show up at the
# other end. In particular, GDB may silently ignore raw
# ASCII text.
#
cdl_option CYGSEM_HAL_DIAG_MANGLER {
    # This option is not active
    # The parent CYGDBG_HAL_DIAG_TO_DEBUG_CHAN is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value GDB
    # value_source default
    # Default value: GDB
    # Legal values: "GDB" "None"
};

# <
# Grouped libraries for linking
# This option provides a list of libraries used to satisfy
# linker dependencies, but necessary for building eCos. It is passed
# to a GROUP() directive in the linker script, which is analogous
# to using the "-(" aka "--start-group", and "-)" aka
# "--end-group" options on the linker command line.
# It provides a similar function to adding "-llibname" to the
# linker, but with the added feature that each library in the group
# is scanned in turn for unresolved symbols, and this process is
# repeated until there are no more unresolved symbols. This is important
# for system libraries as there are often mutual dependencies.
# This option should not be used for adding application specific
# libraries. That should be done in the application's own makefile
# or link line.
# Users wishing to use the GNU Compiler prior to GCC 3.0 will
# need to remove libsupc++.a from this option.
# Note that libtarget.a is always required to build eCos.
#
cdl_component CYGBLD_HAL_LINKER_GROUPED_LIBS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "libtarget.a libgcc.a libsupc++.a"
    # value_source default
    # Default value: CYGBLD_HAL_LINKER_GROUPED_LIBS_DEFAULT
    #     CYGBLD_HAL_LINKER_GROUPED_LIBS_DEFAULT == "libtarget.a libgcc.a libsupc++.a"
    #   --> "libtarget.a libgcc.a libsupc++.a"
    # Requires:  is_substr(CYGBLD_HAL_LINKER_GROUPED_LIBS, "libtarget.a") 
    #     CYGBLD_HAL_LINKER_GROUPED_LIBS == "libtarget.a libgcc.a libsupc++.a"
    #   --> 1

    # The following properties are affected by this value
    # component CYGBLD_HAL_LINKER_GROUPED_LIBS
    #     Requires:  is_substr(CYGBLD_HAL_LINKER_GROUPED_LIBS, "libtarget.a") 
};

# >
# Default setting
# This option is intended to be used by other eCos packages (including
# HAL packages) to provide a different default value for
# CYGBLD_HAL_LINKER_GROUPED_LIBS.
# This is separated into its own option to continue to
# allow the user to make customisations to the grouped library
# list.
#
cdl_option CYGBLD_HAL_LINKER_GROUPED_LIBS_DEFAULT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "libtarget.a libgcc.a libsupc++.a"
    # value_source default
    # Default value: "libtarget.a libgcc.a libsupc++.a"

    # The following properties are affected by this value
    # component CYGBLD_HAL_LINKER_GROUPED_LIBS
    #     DefaultValue: CYGBLD_HAL_LINKER_GROUPED_LIBS_DEFAULT
};

# <
# <
# HAL interrupt handling
# A number of configuration options related to interrupt
# handling are common to most or all HAL packages, even though
# the implementations will vary from architecture to
# architecture.
#
cdl_component CYGPKG_HAL_COMMON_INTERRUPTS {
    # There is no associated value.
};

# >
# Use separate stack for interrupts
# When an interrupt occurs this interrupt can be handled either
# on the current stack or on a separate stack maintained by the
# HAL. Using a separate stack requires a small number of extra
# instructions in the interrupt handling code, but it has the
# advantage that it is no longer necessary to allow extra space
# in every thread stack for the interrupt handlers. The amount
# of extra space required depends on the interrupt handlers
# that are being used.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Interrupt stack size
# This configuration option specifies the stack size in bytes
# for the interrupt stack. Typically this should be a multiple
# of 16, but the exact requirements will vary from architecture
# to architecture. The interrupt stack serves two separate
# purposes. It is used as the stack during system
# initialization. In addition, if the interrupt system is
# configured to use a separate stack then all interrupts will
# be processed on this stack. The exact memory requirements
# will vary from application to application, and will depend
# heavily on whether or not other interrupt-related options,
# for example nested interrupts, are enabled. On most targets,
# in a configuration with no kernel this stack will also be
# the stack used to invoke the application, and must obviously
# be appropriately large in that case.
#
cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4096
    # value_source default
    # Default value:  CYGPKG_KERNEL ? 4096 : 32768 
    #     CYGPKG_KERNEL == current
    #   --> 4096
    # Legal values: 128 to 1048576
};

# Allow nested interrupts
# When an interrupt occurs the HAL interrupt handling code can
# either leave interrupts disabled for the duration of the
# interrupt handling code, or by doing some extra work it can
# reenable interrupts before invoking the interrupt handler and
# thus allow nested interrupts to happen. If all the interrupt
# handlers being used are small and do not involve any loops
# then it is usually better to disallow nested interrupts.
# However if any of the interrupt handlers are more complicated
# than nested interrupts will usually be required.
#
cdl_option CYGSEM_HAL_COMMON_INTERRUPTS_ALLOW_NESTING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Save minimum context on interrupt
# The HAL interrupt handling code can exploit the calling conventions
# defined for a given architecture to reduce the amount of state
# that has to be saved. Generally this improves performance and
# reduces code size. However it can make source-level debugging
# more difficult.
#
cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
};

# Chain all interrupts together
# Interrupts can be attached to vectors either singly, or be
# chained together. The latter is necessary if there is no way
# of discovering which device has interrupted without
# inspecting the device itself. It can also reduce the amount
# of RAM needed for interrupt decoding tables and code.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGIMP_KERNEL_INTERRUPTS_CHAIN
    #     Requires: CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
};

# Ignore spurious [fleeting] interrupts
# On some hardware, interrupt sources may not be de-bounced or
# de-glitched.  Rather than try to handle these interrupts (no
# handling may be possible), this option allows the HAL to simply
# ignore them.  In most cases, if the interrupt is real it will
# reoccur in a detectable form.
#
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# HAL context switch support
# A number of configuration options related to thread contexts
# are common to most or all HAL packages, even though the
# implementations will vary from architecture to architecture.
#
cdl_component CYGPKG_HAL_COMMON_CONTEXT {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Use minimum thread context
# The thread context switch code can exploit the calling
# conventions defined for a given architecture to reduce the
# amount of state that has to be saved during a context
# switch. Generally this improves performance and reduces
# code size. However it can make source-level debugging more
# difficult.
#
cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
};

# <
# Explicit control over cache behaviour
# These options let the default behaviour of the caches 
# be easily configurable.
#
cdl_component CYGPKG_HAL_CACHE_CONTROL {
    # There is no associated value.
};

# >
# Enable DATA cache on startup
# Enabling this option will cause the data cache to be enabled
# as soon as practicable when eCos starts up.  One would choose
# to disable this if the data cache cannot safely be turned on,
# such as a case where the cache(s) require additional platform
# specific setup.
#
cdl_component CYGSEM_HAL_ENABLE_DCACHE_ON_STARTUP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# DATA cache mode on startup
# This option controls the mode the cache will be set to
# when enabled on startup.
#
cdl_option CYGSEM_HAL_DCACHE_STARTUP_MODE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value COPYBACK
    # value_source default
    # Default value: COPYBACK
    # Legal values:  "COPYBACK" "WRITETHRU" 
};

# <
# Enable INSTRUCTION cache on startup
# Enabling this option will cause the instruction cache to be enabled
# as soon as practicable when eCos starts up.  One would choose
# to disable this if the instruction cache cannot safely be turned on,
# such as a case where the cache(s) require additional platform
# specific setup.
#
cdl_option CYGSEM_HAL_ENABLE_ICACHE_ON_STARTUP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Source-level debugging support
# If the source level debugger gdb is to be used for debugging
# application code then it may be necessary to configure in support
# for this in the HAL.
#
cdl_component CYGPKG_HAL_DEBUG {
    # There is no associated value.
};

# >
# Support for GDB stubs
# The HAL implements GDB stubs for the target.
#
cdl_interface CYGINT_HAL_DEBUG_GDB_STUBS {
    # Implemented by CYGPKG_HAL_CORTEXM_STM32, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     ActiveIf: CYGINT_HAL_DEBUG_GDB_STUBS
};

# Include GDB stubs in HAL
# This option causes a set of GDB stubs to be included into the
# system. On some target systems the GDB support will be
# provided by other means, for example by a ROM monitor. On
# other targets, especially when building a ROM-booting system,
# the necessary support has to go into the target library
# itself. When GDB stubs are include in a configuration, HAL
# serial drivers must also be included.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
    # ActiveIf constraint: CYGINT_HAL_DEBUG_GDB_STUBS
    #     CYGINT_HAL_DEBUG_GDB_STUBS == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: ! CYGSEM_HAL_USE_ROM_MONITOR
    #     CYGSEM_HAL_USE_ROM_MONITOR (unknown) == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
    #     CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT == 1
    #   --> 0
    # Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
    #     CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM == 1
    #   --> 0
    # Requires:  !CYGSEM_HAL_VIRTUAL_VECTOR_DIAG  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_DIAG == 1
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS == 1
    #   --> 1

    # The following properties are affected by this value
    # component CYGDBG_HAL_DIAG_TO_DEBUG_CHAN
    #     DefaultValue:  (CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS  || CYG_HAL_STARTUP == "RAM") ? 1 : 0
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     DefaultValue: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     DefaultValue:  !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    # option CYGBLD_BUILD_COMMON_GDB_STUBS
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    # option CYGPKG_HAL_GDB_FILEIO
    #     Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
};

# Support for external break support in GDB stubs
# The HAL implements external break (or asynchronous interrupt)
# in the GDB stubs for the target.
#
cdl_interface CYGINT_HAL_DEBUG_GDB_STUBS_BREAK {
    # Implemented by CYGPKG_HAL_CORTEXM_STM32, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     ActiveIf: CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
};

# Include GDB external break support for stubs
# This option causes the GDB stub to add a serial interrupt handler
# which will listen for GDB break packets. This lets you stop the
# target asynchronously when using GDB, usually by hitting Control+C
# or pressing the STOP button. This option differs from
# CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT in that it is used when
# GDB stubs are present.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT {
    # ActiveIf constraint: CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
    #     CYGINT_HAL_DEBUG_GDB_STUBS_BREAK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     Requires: !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
};

# Platform does not support CTRLC
#
cdl_interface CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0 
};

# Include GDB external break support when no stubs
# This option adds an interrupt handler for the GDB serial line
# which will listen for GDB break packets. This lets you stop the
# target asynchronously when using GDB, usually by hitting Control+C
# or pressing the STOP button. This option differs from
# CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT in that it is used when the GDB
# stubs are NOT present.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT {
    # This option is not active
    # ActiveIf constraint:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    #     CYGSEM_HAL_USE_ROM_MONITOR (unknown) == 0
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0
    # ActiveIf constraint:  CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0 
    #     CYGINT_HAL_DEBUG_GDB_CTRLC_UNSUPPORTED == 0
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 1
    # Requires: !CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT == 0
    #   --> 1
};

# Include GDB multi-threading debug support
# This option enables some extra HAL code which is needed
# to support multi-threaded source level debugging.
#
cdl_option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT {
    # ActiveIf constraint:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
    #     CYGSEM_HAL_ROM_MONITOR (unknown) == 0
    #     CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
    #     Requires: CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
};

# Number of times to retry sending a $O packet
# This option controls the number of attempts that eCos programs
# will make to send a $O packet to a host GDB process.  If it is
# set non-zero, then the target process will attempt to resend the
# $O packet data up to this number of retries.  Caution: use of
# this option is not recommended as it can thoroughly confuse the
# host GDB process.
#
cdl_option CYGNUM_HAL_DEBUG_GDB_PROTOCOL_RETRIES {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Timeout period for GDB packets
# This option controls the time (in milliseconds) that eCos programs
# will wait for a response when sending packets to a host GDB process.
# If this time elapses, then the packet will be resent, up to some
# maximum number of times (CYGNUM_HAL_DEBUG_GDB_PROTOCOL_RETRIES).
#
cdl_option CYGNUM_HAL_DEBUG_GDB_PROTOCOL_TIMEOUT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 500
    # value_source default
    # Default value: 500
};

# Location of CRC32 table
# The stubs use a 1 kilobyte CRC table that can either be pregenerated
# and placed in ROM, or generated at runtime in RAM. Depending on
# your memory constraints, one of these options may be better.
#
cdl_option CYGDBG_HAL_CRCTABLE_LOCATION {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value RAM
    # value_source default
    # Default value: RAM
    # Legal values: "ROM" "RAM"
};

# <
# ROM monitor support
# Support for ROM monitors can be built in to your application. 
# It may also be relevant to build your application as a ROM monitor
# itself. Such options are contained here if relevant for your chosen
# platform. The options and ROM monitors available to choose are
# platform-dependent.
#
cdl_component CYGPKG_HAL_ROM_MONITOR {
    # There is no associated value.
};

# >
# Target has virtual vector support
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT {
    # Implemented by CYGPKG_HAL_CORTEXM_STM32, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
    #     ActiveIf: CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
};

# Target supports baud rate control via vectors
# Whether this target supports the __COMMCTL_GETBAUD
# and __COMMCTL_SETBAUD virtual vector comm control operations.
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_COMM_BAUD_SUPPORT {
    # Implemented by CYGPKG_HAL_CORTEXM_STM32, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
};

# Enable use of virtual vector calling interface
# Virtual vector support allows the HAL to let the ROM
# monitor handle certain operations. The virtual vector table
# defines a calling interface between applications running in
# RAM and the ROM monitor.
#
cdl_component CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT {
    # ActiveIf constraint: CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
    #     CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT == 1
    #   --> 1

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Inherit console settings from ROM monitor
# When this option is set, the application will inherit
# the console as set up by the ROM monitor. This means
# that the application will use whatever channel and
# mangling style was used by the ROM monitor when
# the application was launched.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE {
    # This option is not active
    # ActiveIf constraint: CYGSEM_HAL_USE_ROM_MONITOR
    #     CYGSEM_HAL_USE_ROM_MONITOR (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  !CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS == 1
    #   --> 0

    # The following properties are affected by this value
    # component CYGDBG_HAL_DIAG_TO_DEBUG_CHAN
    #     ActiveIf: !CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE
    # option CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
    #     Calculated:  !CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE  && !CYGDBG_HAL_DIAG_TO_DEBUG_CHAN 
};

# Debug channel is configurable
# This option is a configuration hint - it is enabled
# when the HAL initialization code will make use
# of the debug channel configuration option.
#
cdl_option CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE {
    # Calculated value:  CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS == 1
    # Flavor: bool
    # Current value: 1

    # The following properties are affected by this value
    # option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL
    #     ActiveIf: CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
};

# Console channel is configurable
# This option is a configuration hint - it is enabled
# when the HAL initialization code will make use
# of the console channel configuration option.
#
cdl_option CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE {
    # Calculated value:  !CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE  && !CYGDBG_HAL_DIAG_TO_DEBUG_CHAN 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE == 0
    #     CYGDBG_HAL_DIAG_TO_DEBUG_CHAN == 0
    # Flavor: bool
    # Current value: 1

    # The following properties are affected by this value
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL
    #     ActiveIf: CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
};

# Initialize whole of virtual vector table
# This option will cause the whole of the virtual
# vector table to be initialized with dummy values on
# startup. When this option is enabled, all the
# options below must also be enabled - or the
# table would be empty when the application
# launches.
# On targets where older ROM monitors without
# virtual vector support may still be in use, it is
# necessary for RAM applictions to initialize the
# table (since all HAL diagnostics and debug IO
# happens via the table).
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYG_HAL_STARTUP != "RAM" || !CYGSEM_HAL_USE_ROM_MONITOR 
    #     CYG_HAL_STARTUP == ROM
    #     CYGSEM_HAL_USE_ROM_MONITOR (unknown) == 0
    #   --> 1
    # Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_RESET
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_RESET == 1
    #   --> 1
    # Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DELAY_US
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DELAY_US == 1
    #   --> 1
    # Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DATA
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DATA == 1
    #   --> 1
    # Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT
    #     ActiveIf: !CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_RESET
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_VERSION
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DELAY_US
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DATA
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
};

# Claim virtual vector table entries by default
# By default most virtual vectors will be claimed by
# RAM startup configurations, meaning that the RAM
# application will provide the services. The
# exception is COMMS support (HAL
# diagnostics/debugging IO) which is left in the
# control of the ROM monitor.
# The reasoning behind this is to get as much of the
# code exercised during regular development so it
# is known to be working the few times a new ROM
# monitor or a ROM production configuration is used
# - COMMS are excluded only by necessity in order to
# avoid breaking an existing debugger connections
# (there may be ways around this).
# For production RAM configurations this option can
# be switched off, causing the appliction to rely on
# the ROM monitor for these services, thus
# saving some space.
# Individual vectors may also be left unclaimed,
# controlled by the below options (meaning that the
# associated service provided by the ROM monitor
# will be used).
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT {
    # This option is not active
    # ActiveIf constraint: !CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 1
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_RESET
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DELAY_US
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DATA
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
};

# Claim reset virtual vectors
# This option will cause the reset and kill_by_reset
# virtual vectors to be claimed.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_RESET {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 1
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_RESET
};

# Claim version virtual vectors
# This option will cause the version
# virtual vectors to be claimed.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_VERSION {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 1
    #   --> 1
};

# Claim delay_us virtual vector
# This option will cause the delay_us
# virtual vector to be claimed.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DELAY_US {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 1
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DELAY_US
};

# Claim data virtual vectors
# This option will cause the data virtual vectors
# to be claimed. At present there is only one, used
# by the RedBoot ethernet driver to share diag output.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DATA {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 1
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DATA
};

# Claim comms virtual vectors
# This option will cause the communication tables
# that are part of the virtual vectors mechanism to
# be claimed. Note that doing this may cause an
# existing ROM monitor communication connection to
# be closed. For this reason, the option is disabled
# per default for normal application
# configurations.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 1
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires:  !CYGSEM_HAL_VIRTUAL_VECTOR_DIAG  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE
    #     DefaultValue:  !CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    # option CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
    #     Calculated:  CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS
};

# Do diagnostic IO via virtual vector table
# All HAL IO happens via the virtual vector table / comm
# tables when those tables are supported by the HAL.
# If so desired, the low-level IO functions can
# still be provided by the RAM application by
# enabling the CLAIM_COMMS option.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_DIAG {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1

    # The following properties are affected by this value
    # component CYGDBG_HAL_DIAG_TO_DEBUG_CHAN
    #     ActiveIf:  CYGPKG_HAL_ARM || CYGPKG_HAL_POWERPC_MPC8xx  || CYGPKG_HAL_V85X_V850 || CYGSEM_HAL_VIRTUAL_VECTOR_DIAG 
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires:  !CYGSEM_HAL_VIRTUAL_VECTOR_DIAG  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
};

# <
# <
# Platform defined I/O channels
# Platforms which provide additional I/O channels can implement
# this interface, indicating that the function plf_if_init()
# needs to be called.
#
cdl_interface CYGINT_HAL_PLF_IF_INIT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Platform IDE I/O support
# Platforms which provide IDE controllers can implement
# this interface, indicating that IDE I/O macros are
# available.
#
cdl_interface CYGINT_HAL_PLF_IF_IDE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Saved interrupt state required
# Components requiring access to saved interrupt state via the
# hal_saved_interrupt_state symbol should implement this
# interface.
#
cdl_interface CYGINT_HAL_COMMON_SAVED_INTERRUPT_STATE_REQUIRED {
    # Implemented by CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT, active, disabled
    # Implemented by CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT, inactive, enabled
    # Implemented by CYGFUN_HAL_CORTEXM_STM32_PROFILE_TIMER, inactive, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
};

# File I/O operations via GDB
# This option enables support for various file I/O
# operations using the GDB remote protocol to communicate
# with GDB. The operations are then performed on the
# debugging host by proxy. These operations are only
# currently available by using a system call interface
# to RedBoot. This may change in the future.
#
cdl_option CYGPKG_HAL_GDB_FILEIO {
    # This option is not active
    # ActiveIf constraint: CYGSEM_REDBOOT_BSP_SYSCALLS
    #     CYGSEM_REDBOOT_BSP_SYSCALLS (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0
};

# Build Compiler sanity checking tests
# Enabling this option causes compiler tests to be built.
#
cdl_option CYGPKG_HAL_BUILD_COMPILER_TESTS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # component CYGPKG_HAL_TESTS
    #     Calculated:   "tests/context tests/basic"
    #                           . ((!CYGINT_HAL_TESTS_NO_CACHES) ? " tests/cache" : "")
    #                           . ((CYGPKG_HAL_BUILD_COMPILER_TESTS) ? " tests/cpp1 tests/vaargs" : "")
    #                           . ((!CYGVAR_KERNEL_COUNTERS_CLOCK) ?   " tests/intr" : "") 
};

# Common HAL tests
# This option specifies the set of tests for the common HAL.
#
cdl_component CYGPKG_HAL_TESTS {
    # Calculated value:   "tests/context tests/basic"
    #                           . ((!CYGINT_HAL_TESTS_NO_CACHES) ? " tests/cache" : "")
    #                           . ((CYGPKG_HAL_BUILD_COMPILER_TESTS) ? " tests/cpp1 tests/vaargs" : "")
    #                           . ((!CYGVAR_KERNEL_COUNTERS_CLOCK) ?   " tests/intr" : "") 
    #     CYGINT_HAL_TESTS_NO_CACHES == 0
    #     CYGPKG_HAL_BUILD_COMPILER_TESTS == 0
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    # Flavor: data
    # Current_value: tests/context tests/basic tests/cache
};

# >
# Interface for cache presence
# Some architectures and/or platforms do not have caches. By
# implementing this interface, these can disable the various
# cache-related tests.
#
cdl_interface CYGINT_HAL_TESTS_NO_CACHES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0

    # The following properties are affected by this value
    # component CYGPKG_HAL_TESTS
    #     Calculated:   "tests/context tests/basic"
    #                           . ((!CYGINT_HAL_TESTS_NO_CACHES) ? " tests/cache" : "")
    #                           . ((CYGPKG_HAL_BUILD_COMPILER_TESTS) ? " tests/cpp1 tests/vaargs" : "")
    #                           . ((!CYGVAR_KERNEL_COUNTERS_CLOCK) ?   " tests/intr" : "") 
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
};

# <
# Cortex-M Architecture
# This package provides generic support for the ARM Cortex-M architecture.
# It is also necessary to select a variant and platform HAL package.
#
cdl_package CYGPKG_HAL_CORTEXM {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             is_substr(CYGBLD_GLOBAL_CFLAGS,   " -mbig-endian ") &&
    #             is_substr(CYGBLD_GLOBAL_LDFLAGS,  " -mbig-endian ") 
    #     CYGHWR_HAL_CORTEXM_BIGENDIAN == 0
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #   --> 1
    # Requires:  !CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             !is_substr(CYGBLD_GLOBAL_CFLAGS,  " -mbig-endian ") &&
    #             !is_substr(CYGBLD_GLOBAL_LDFLAGS, " -mbig-endian ") 
    #     CYGHWR_HAL_CORTEXM_BIGENDIAN == 0
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #   --> 1

    # The following properties are affected by this value
};

# >
# The platform and architecture supports Big Endian operation
#
cdl_interface CYGINT_HAL_CORTEXM_BIGENDIAN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_BIGENDIAN
    #     ActiveIf:  CYGINT_HAL_CORTEXM_BIGENDIAN != 0 
};

# Use big-endian mode
# Use the CPU in big-endian mode.
#
cdl_option CYGHWR_HAL_CORTEXM_BIGENDIAN {
    # This option is not active
    # ActiveIf constraint:  CYGINT_HAL_CORTEXM_BIGENDIAN != 0 
    #     CYGINT_HAL_CORTEXM_BIGENDIAN == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM
    #     Requires:  CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             is_substr(CYGBLD_GLOBAL_CFLAGS,   " -mbig-endian ") &&
    #             is_substr(CYGBLD_GLOBAL_LDFLAGS,  " -mbig-endian ") 
    # package CYGPKG_HAL_CORTEXM
    #     Requires:  !CYGHWR_HAL_CORTEXM_BIGENDIAN implies
    #             !is_substr(CYGBLD_GLOBAL_CFLAGS,  " -mbig-endian ") &&
    #             !is_substr(CYGBLD_GLOBAL_LDFLAGS, " -mbig-endian ") 
};

# Cortex-M CPU family
# The Cortex-M architecture has two variants at present. The
# M3 and M4 are based on the ARMV7 architecture specification
# and execute the Thumb2 instruction set. The M4 in addition
# to M3 instruction set has SIMD and optional single precision
# floating point instructions.
#
cdl_option CYGHWR_HAL_CORTEXM {
    # Flavor: data
    user_value M4
    # value_source user
    # Default value: M3
    # Legal values:  "M3" "M4" 

    # The following properties are affected by this value
    # component CYGPKG_HAL_CORTEXM_FPU
    #     ActiveIf:  CYGHWR_HAL_CORTEXM == "M4" 
    # component CYGBLD_ARCH_CPUFLAGS
    #     Calculated:  CYGHWR_HAL_CORTEXM == "M3" ? " -mcpu=cortex-m3" :
    #                          CYGHWR_HAL_CORTEXM_FPU     ? " -mcpu=cortex-m4" : " " 
    # option CYGBLD_ARCH_CPUFLAGX_M4
    #     Calculated:  (CYGHWR_HAL_CORTEXM != "M4") ? "-mcpu=cortex-m4" : "no_exclude" 
    # package CYGPKG_HAL_CORTEXM_STM32
    #     Requires:  (CYGHWR_HAL_CORTEXM == "M3") || (CYGHWR_HAL_CORTEXM == "M4") 
    # package CYGPKG_HAL_CORTEXM_STM32
    #     Requires:  (CYGHWR_HAL_CORTEXM == "M3") || (CYGHWR_HAL_CORTEXM == "M4") 
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM == "M4" 
};

# System tick timer clock
# Select the Cortex-M system tick timer clock source.
#
cdl_option CYGHWR_HAL_CORTEXM_SYSTICK_CLK_SOURCE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value EXTERNAL
    # value_source default
    # Default value: EXTERNAL
    # Legal values:  "EXTERNAL" "INTERNAL" 
};

# Floating Point Support
# Floating point arithmetics can be executed in software or,
# on devices with floating point unit - FPU, in hardware.
# FPU is optional on Cortex-M4 architecture, and is present
# on Cortex-M4F cores.
#
cdl_component CYGPKG_HAL_CORTEXM_FPU {
    # ActiveIf constraint:  CYGHWR_HAL_CORTEXM == "M4" 
    #     CYGHWR_HAL_CORTEXM == M4
    #   --> 1

    # Calculated value:  !CYGHWR_HAL_CORTEXM_FPU ? "SOFT" :
    #                               "HARD: " . CYGHWR_HAL_CORTEXM_FPU_SWITCH 
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    #     CYGHWR_HAL_CORTEXM_FPU_SWITCH == 0
    # Flavor: data
    # Current_value: SOFT
};

# >
# FPU is FPv4-SP-D16
#
cdl_interface CYGINT_HAL_FPV4_SP_D16 {
    # Implemented by CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY, active, enabled
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 1

    # The following properties are affected by this value
    # option CYGHWR_HAL_FPV4_SP_D16
    #     ActiveIf:  CYGINT_HAL_FPV4_SP_D16 
    # option CYGHWR_HAL_FPV4_SP_D16
    #     Calculated:  CYGINT_HAL_FPV4_SP_D16 && CYGHWR_HAL_CORTEXM_FPU 
};

# FPU present.
#
cdl_interface CYGINT_HAL_CORTEXM_FPU {
    # Implemented by CYGINT_HAL_FPV4_SP_D16, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGHWR_HAL_CORTEXM_FPU
    #     ActiveIf:  CYGINT_HAL_CORTEXM_FPU 
};

# Use hardware FPU
# Cortex-M4F cores have a single precision floating point unit.
# This option enables FPU usage and provides related FPU control
# options.
# Hardware FPU enable, implies Cortex-M4 code generation, and
# build flags shall be set accordingly, including -mcpu=cortex-m4.
# As a side effect, the Cortex_M4 build flag will remain (sticky)
# even if hardware FPU is subsequently disabled.
# 
#
cdl_component CYGHWR_HAL_CORTEXM_FPU {
    # ActiveIf constraint:  CYGINT_HAL_CORTEXM_FPU 
    #     CYGINT_HAL_CORTEXM_FPU == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # component CYGPKG_HAL_CORTEXM_FPU
    #     Calculated:  !CYGHWR_HAL_CORTEXM_FPU ? "SOFT" :
    #                               "HARD: " . CYGHWR_HAL_CORTEXM_FPU_SWITCH 
    # option CYGHWR_HAL_FPV4_SP_D16
    #     Calculated:  CYGINT_HAL_FPV4_SP_D16 && CYGHWR_HAL_CORTEXM_FPU 
    # component CYGBLD_ARCH_CPUFLAGS
    #     Calculated:  CYGHWR_HAL_CORTEXM == "M3" ? " -mcpu=cortex-m3" :
    #                          CYGHWR_HAL_CORTEXM_FPU     ? " -mcpu=cortex-m4" : " " 
    # option CYGBLD_ARCH_CPUFLAGX_M3
    #     Calculated:  CYGHWR_HAL_CORTEXM_FPU ? "-mcpu=cortex-m3" : "no_exclude" 
    # component CYGBLD_ARCH_CPUFLAG_FLOAT_ABI
    #     Calculated:  CYGHWR_HAL_CORTEXM_FPU ? " -mfloat-abi=hard" : "" 
    # option CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI
    #     Calculated:  CYGHWR_HAL_CORTEXM_FPU ? "-mfloat-abi=soft" : "-mfloat-abi=hard" 
    # option CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT
    #     Calculated:  CYGHWR_HAL_CORTEXM_FPU ? "-msoft-float" : "-mhard-float" 
};

# >
# FPU context switch
# This option selects the FPU context switching scheme.
# Straight-forward behaviour is to save and
# restore FPU state on every CPU context save/restore.
# While simple, robust and deterministic, this
# approach can be expensive if the FPU is used by
# few threads. The alternative schemes, available by this
# option, are to use hardware features that allow either:
# - LAZY: Save FPU context only if the thread makes use of
# the FPU. Where only few threads use FPU this should give
# shorter average context switching delay compared to ALL
# scheme. If more than one threads use FPU, the worst context
# switching time is typically worse than the one for ALL
# scheme.
# - ALL: Save FPU context for all threads. This is a simple
# scheme, which if all, or majority of threads use FPU may
# give better average context switching time than LAZY.
# This scheme also includes Lazy Stacking of FPU state
# for exceptions/interrupts.
# - NONE: No FPU state saving, this scheme adds no additional
# delay for saving of FPU state to context switching, but is
# only suitable if maximum one thread uses floating point.
#
cdl_option CYGHWR_HAL_CORTEXM_FPU_SWITCH {
    # This option is not active
    # The parent CYGHWR_HAL_CORTEXM_FPU is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value LAZY
    # value_source default
    # Default value: LAZY
    # Legal values:  "ALL" "LAZY" "NONE" 
    # Requires:  is_active (CYGPKG_KERNEL) implies
    #                         CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ==
    #                         (CYGHWR_HAL_CORTEXM_FPU_SWITCH == "NONE") 
    #     CYGPKG_KERNEL == current
    #     CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST == 0
    #     CYGHWR_HAL_CORTEXM_FPU_SWITCH == 0
    #   --> 1

    # The following properties are affected by this value
    # component CYGPKG_HAL_CORTEXM_FPU
    #     Calculated:  !CYGHWR_HAL_CORTEXM_FPU ? "SOFT" :
    #                               "HARD: " . CYGHWR_HAL_CORTEXM_FPU_SWITCH 
    # option CYGHWR_HAL_CORTEXM_FPU_SWITCH
    #     Requires:  is_active (CYGPKG_KERNEL) implies
    #                         CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ==
    #                         (CYGHWR_HAL_CORTEXM_FPU_SWITCH == "NONE") 
};

# FPv4-SP-D16
# FPv4-SP-D16 is ARMv7 architecture single precision floating
# point unit with 16 double precision / 32 single precision
# registers. It is found on Cortex-M4F and Cortex-R5 cores.
#
cdl_option CYGHWR_HAL_FPV4_SP_D16 {
    # This option is not active
    # The parent CYGHWR_HAL_CORTEXM_FPU is disabled
    # ActiveIf constraint:  CYGINT_HAL_FPV4_SP_D16 
    #     CYGINT_HAL_FPV4_SP_D16 == 1
    #   --> 1

    # Calculated value:  CYGINT_HAL_FPV4_SP_D16 && CYGHWR_HAL_CORTEXM_FPU 
    #     CYGINT_HAL_FPV4_SP_D16 == 1
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    # Flavor: bool
    # Current value: 0

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAG_FPV4SPD16
    #     Calculated:  CYGHWR_HAL_FPV4_SP_D16 ? " -mfpu=fpv4-sp-d16" : "" 
    # option CYGBLD_ARCH_CPUFLAGX_FPV4SPD16
    #     Calculated:  CYGHWR_HAL_FPV4_SP_D16 ? "do_not_exclude" : "-mfpu=fpv4-sp-d16" 
};

# <
# <
# Architecture optimized endian functions
# Cortex-M architecture implements instructions for endian
# manipulation (byte swapping).  If enabled, this feature
# can produce shorter and faster code for that.
#
cdl_option CYGIMP_HAL_ARCH_ENDIAN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Maximum usable priority
# Calculate the maximum exception priority that can be set by interrupts.
# Higher priorities are reserved for the DEBUG and SVC traps.
#
cdl_option CYGNUM_HAL_CORTEXM_PRIORITY_MAX {
    # Calculated value: 1<<(8-CYGNUM_HAL_CORTEXM_PRIORITY_LEVEL_BITS)
    #     CYGNUM_HAL_CORTEXM_PRIORITY_LEVEL_BITS == 4
    # Flavor: data
    # Current_value: 16
};

# Support call-graph profiling
# Calculate whether mcount functions should be built
# to support call-graph profiling.
#
cdl_option CYGBLD_HAL_CORTEXM_MCOUNT {
    # This option is not active
    # ActiveIf constraint: CYGPKG_PROFILE_GPROF
    #     CYGPKG_PROFILE_GPROF (unknown) == 0
    #   --> 0

    # Calculated value: CYGPKG_PROFILE_CALLGRAPH
    #     CYGPKG_PROFILE_CALLGRAPH (unknown) == 0
    # Flavor: bool
    # Current value: 0
};

# Linker script
#
cdl_option CYGBLD_LINKER_SCRIPT {
    # Calculated value:  "src/cortexm.ld" 
    # Flavor: data
    # Current_value: src/cortexm.ld
};

# Number of breakpoints supported by the HAL.
# This option determines the number of breakpoints supported by the HAL.
#
cdl_option CYGNUM_HAL_BREAKPOINT_LIST_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
};

# Architecture related build flags
# This component defines flags that code generation dependent on specific
# CPU type or CPU features.
#
cdl_component CYGBLD_ARCH_CPUFLAGS {
    # Calculated value:  CYGHWR_HAL_CORTEXM == "M3" ? " -mcpu=cortex-m3" :
    #                          CYGHWR_HAL_CORTEXM_FPU     ? " -mcpu=cortex-m4" : " " 
    #     CYGHWR_HAL_CORTEXM == M4
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    # Flavor: data
    # Current_value:  
    # Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAGX_M3 == no_exclude
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAGX_M4 == no_exclude
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI == -mfloat-abi=hard
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT == -mhard-float
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAGX_FPV4SPD16 == -mfpu=fpv4-sp-d16
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAGS == " "
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAG_FLOAT_ABI == ""
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #     CYGBLD_ARCH_CPUFLAG_FPV4SPD16 == ""
    #   --> 1
    # Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAGX_M3 == no_exclude
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAGX_M4 == no_exclude
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI == -mfloat-abi=hard
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT == -mhard-float
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAGX_FPV4SPD16 == -mfpu=fpv4-sp-d16
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAGS == " "
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAG_FLOAT_ABI == ""
    #     CYGBLD_GLOBAL_LDFLAGS == "-mcpu=cortex-m4 -mthumb -Wl,--gc-sections -Wl,-static -Wl,-n -g -nostdlib"
    #     CYGBLD_ARCH_CPUFLAG_FPV4SPD16 == ""
    #   --> 1

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# >
# Exclude Cortex-M3 build flag
#
cdl_option CYGBLD_ARCH_CPUFLAGX_M3 {
    # Calculated value:  CYGHWR_HAL_CORTEXM_FPU ? "-mcpu=cortex-m3" : "no_exclude" 
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    # Flavor: data
    # Current_value: no_exclude

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# Exclude Cortex-M4 build flag
#
cdl_option CYGBLD_ARCH_CPUFLAGX_M4 {
    # Calculated value:  (CYGHWR_HAL_CORTEXM != "M4") ? "-mcpu=cortex-m4" : "no_exclude" 
    #     CYGHWR_HAL_CORTEXM == M4
    # Flavor: data
    # Current_value: no_exclude

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# Float ABI build flags
#
cdl_component CYGBLD_ARCH_CPUFLAG_FLOAT_ABI {
    # Calculated value:  CYGHWR_HAL_CORTEXM_FPU ? " -mfloat-abi=hard" : "" 
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    # Flavor: data
    # Current_value: 

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# >
# Float ABI flag to exclude
#
cdl_option CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI {
    # Calculated value:  CYGHWR_HAL_CORTEXM_FPU ? "-mfloat-abi=soft" : "-mfloat-abi=hard" 
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    # Flavor: data
    # Current_value: -mfloat-abi=hard

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# Alt. float flag to exclude
#
cdl_option CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT {
    # Calculated value:  CYGHWR_HAL_CORTEXM_FPU ? "-msoft-float" : "-mhard-float" 
    #     CYGHWR_HAL_CORTEXM_FPU == 0
    # Flavor: data
    # Current_value: -mhard-float

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# FPv4-SP-D16 flags
#
cdl_component CYGBLD_ARCH_CPUFLAG_FPV4SPD16 {
    # Calculated value:  CYGHWR_HAL_FPV4_SP_D16 ? " -mfpu=fpv4-sp-d16" : "" 
    #     CYGHWR_HAL_FPV4_SP_D16 == 0
    # Flavor: data
    # Current_value: 

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# >
# Exclude FPv4-SP-D16 flag
#
cdl_option CYGBLD_ARCH_CPUFLAGX_FPV4SPD16 {
    # Calculated value:  CYGHWR_HAL_FPV4_SP_D16 ? "do_not_exclude" : "-mfpu=fpv4-sp-d16" 
    #     CYGHWR_HAL_FPV4_SP_D16 == 0
    # Flavor: data
    # Current_value: -mfpu=fpv4-sp-d16

    # The following properties are affected by this value
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_CFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
    # component CYGBLD_ARCH_CPUFLAGS
    #     Requires: 
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M3)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_M4)             &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FLOAT_ABI)      &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_HARDSOFT_FLOAT) &&
    #                 !is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGX_FPV4SPD16)      &&
    #     
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAGS)                 &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FLOAT_ABI)        &&
    #                 is_substr(CYGBLD_GLOBAL_LDFLAGS, CYGBLD_ARCH_CPUFLAG_FPV4SPD16)
    #             
};

# <
# <
# <
# Cortex-M3/-M4 STM32 Variant
# This package provides generic support for the ST Cortex-M based STM32
# microcontroller family.
# It is also necessary to select a variant and platform HAL package.
#
cdl_package CYGPKG_HAL_CORTEXM_STM32 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  (CYGHWR_HAL_CORTEXM == "M3") || (CYGHWR_HAL_CORTEXM == "M4") 
    #     CYGHWR_HAL_CORTEXM == M4
    #     CYGHWR_HAL_CORTEXM == M4
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_CORTEXM_STM32
    #     ActiveIf: CYGPKG_HAL_CORTEXM_STM32
};

# >
# STM32 processor selection
# The options within this component allow you to select which STM32
# processor is in use.
#
cdl_component CYGHWR_HAL_CORTEXM_STM32_SELECTION {
    # There is no associated value.
};

# >
# STM32 processor variant in use
# The STM32 has several variants, the main differences
# being in the size of on-chip FLASH and SRAM
# and numbers of some peripherals. This option
# allows the platform HAL to select the specific
# microcontroller fitted.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32 {
    # Flavor: data
    user_value F407VG
    # value_source user
    # Default value:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1") ? CYGHWR_HAL_CORTEXM_STM32_F1 :  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") ? CYGHWR_HAL_CORTEXM_STM32_F2 :  CYGHWR_HAL_CORTEXM_STM32_F4 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_F1 == 0
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_F2 == 0
    #     CYGHWR_HAL_CORTEXM_STM32_F4 == F407VG
    #   --> F407VG

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32_F1
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F1 
    # option CYGHWR_HAL_CORTEXM_STM32_F2
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F2 
    # option CYGHWR_HAL_CORTEXM_STM32_F4
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F4 
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
};

# Processor family in use
# Which family of STM32 processors is in use. This will
# usually be the leading part of the processor model name.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_FAMILY {
    # Flavor: data
    user_value F4
    # value_source user
    # Default value: F1
    # Legal values:  "F1" "F2" "F4" 

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1") ? CYGHWR_HAL_CORTEXM_STM32_F1 :  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") ? CYGHWR_HAL_CORTEXM_STM32_F2 :  CYGHWR_HAL_CORTEXM_STM32_F4 
    # option CYGHWR_HAL_CORTEXM_STM32
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1") ? CYGHWR_HAL_CORTEXM_STM32_F1 :  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") ? CYGHWR_HAL_CORTEXM_STM32_F2 :  CYGHWR_HAL_CORTEXM_STM32_F4 
    # option CYGHWR_HAL_CORTEXM_STM32_FAMILY_HIPERFORMANCE
    #     ActiveIf:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4") 
    # option CYGHWR_HAL_CORTEXM_STM32_FAMILY_HIPERFORMANCE
    #     ActiveIf:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4") 
    # option CYGHWR_HAL_CORTEXM_STM32_FAMILY_HIPERFORMANCE
    #     Calculated:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4") 
    # option CYGHWR_HAL_CORTEXM_STM32_FAMILY_HIPERFORMANCE
    #     Calculated:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4") 
    # option CYGHWR_HAL_CORTEXM_STM32_F1
    #     ActiveIf:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1" 
    # option CYGHWR_HAL_CORTEXM_STM32_F2
    #     ActiveIf:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2" 
    # option CYGHWR_HAL_CORTEXM_STM32_F4
    #     ActiveIf:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4" 
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV <= 16) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") && (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == "HSI")) implies  (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 2) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV >= 2) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV >= 2) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL
    #     Requires:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 16) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 432) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 432) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_SYSCLK_DIV
    #     ActiveIf:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_SYSCLK_DIV
    #     ActiveIf:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLLQ_DIV
    #     ActiveIf:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLLQ_DIV
    #     ActiveIf:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) 
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4" &&
    #                         CYGHWR_HAL_CORTEXM_STM32_F4 == "F407VG" 
    # option CYGNUM_DEVS_FLASH_STM32_PARALLELISM
    #     ActiveIf:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")) 
    # option CYGNUM_DEVS_FLASH_STM32_PARALLELISM
    #     ActiveIf:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")) 
};

# Part belongs to ST Hi-Performance family
# Indicates that this part conforms to the I/O
# definitions for the Hi-Performance family of
# devices. Currently this includes the STM32 F2 and F4
# devices.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_FAMILY_HIPERFORMANCE {
    # ActiveIf constraint:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4") 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 1

    # Calculated value:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4") 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    # Flavor: bool
    # Current value: 1
};

# F1 processor family selection
# This option specifies which member of the STM32F1 family is
# in use.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_F1 {
    # This option is not active
    # ActiveIf constraint:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1" 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value F103ZE
    # value_source default
    # Default value: F103ZE
    # Legal values: "F103RC" "F103VC" "F103ZC"
    #                                   "F103RD" "F103VD" "F103ZD"
    #                                   "F103RE" "F103VE" "F103ZE"
    #                                   "F105R8" "F105V8"
    #                                   "F105RB" "F105VB"
    #                                   "F105RC" "F105VC"
    #                                   "F107RB" "F107VB"
    #                                   "F107RC" "F107VC"
    #                                  
    # Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F1 
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32_F1 == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1") ? CYGHWR_HAL_CORTEXM_STM32_F1 :  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") ? CYGHWR_HAL_CORTEXM_STM32_F2 :  CYGHWR_HAL_CORTEXM_STM32_F4 
    # option CYGHWR_HAL_CORTEXM_STM32_F1
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F1 
};

# F2 processor family selection
# This option specifies which member of the STM32F2 family is
# in use.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_F2 {
    # This option is not active
    # ActiveIf constraint:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2" 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value F207IG
    # value_source default
    # Default value: F207IG
    # Legal values: "F205RB" "F205RC" "F205RE" "F205RF" "F205RG"
    #                                   "F205VB" "F205VC" "F205VE" "F205VF" "F205VG"
    #                                   "F205ZB" "F205ZC" "F205ZE" "F205ZF" "F205ZG"
    #                                   "F207VB" "F207VC" "F207VE" "F207VF" "F207VG"
    #                                   "F207ZB" "F207ZC" "F207ZE" "F207ZF" "F207ZG"
    #                                   "F207IB" "F207IC" "F207IE" "F207IF" "F207IG"
    #                                  
    # Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F2 
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32_F2 == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1") ? CYGHWR_HAL_CORTEXM_STM32_F1 :  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") ? CYGHWR_HAL_CORTEXM_STM32_F2 :  CYGHWR_HAL_CORTEXM_STM32_F4 
    # option CYGHWR_HAL_CORTEXM_STM32_F2
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F2 
};

# F4 processor family selection
# This option specifies which member of the STM32F4 family is
# in use.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_F4 {
    # ActiveIf constraint:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4" 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 1

    # Flavor: data
    user_value F407VG
    # value_source user
    # Default value: F407IG
    # Legal values: "F405RG" "F405VG" "F405ZG"
    #                                   "F415RG" "F415VG" "F415ZG"
    #                                   "F407IG" "F407VG" "F407ZG"
    #                                   "F407IE" "F407VE" "F407ZE"
    #                                   "F417IG" "F417VG" "F417ZG"
    #                                   "F417IE" "F417VE" "F417ZE"
    #                                  
    # Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F4 
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32_F4 == F407VG
    #   --> 1

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32
    #     DefaultValue:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F1") ? CYGHWR_HAL_CORTEXM_STM32_F1 :  (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") ? CYGHWR_HAL_CORTEXM_STM32_F2 :  CYGHWR_HAL_CORTEXM_STM32_F4 
    # option CYGHWR_HAL_CORTEXM_STM32_F4
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32 == CYGHWR_HAL_CORTEXM_STM32_F4 
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4" &&
    #                         CYGHWR_HAL_CORTEXM_STM32_F4 == "F407VG" 
};

# <
# Part belongs to connectivity family
# Indicates that this part belongs to the connectivity
# family of devices. These have slightly different interrupt
# and GPIO layouts to the original STM32 F103 devices.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value:  (CYGHWR_HAL_CORTEXM_STM32 == "F105R8") || (CYGHWR_HAL_CORTEXM_STM32 == "F105V8") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F105RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F105VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RB") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VB") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32 == "F107RC") || (CYGHWR_HAL_CORTEXM_STM32 == "F107VC") ||
    #                               (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4")
    #                             
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32 == F407VG
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 1

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  !CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV <= 2) 
    # option CYGHWR_HAL_STM32_SPI1_REMAP
    #     ActiveIf: CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    # option CYGHWR_HAL_STM32_SPI3_REMAP
    #     ActiveIf: CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
};

# CPU priority levels
# This option defines the number of bits used to
# encode the exception priority levels that this
# variant of the Cortex-M CPU implements.
#
cdl_option CYGNUM_HAL_CORTEXM_PRIORITY_LEVEL_BITS {
    # Calculated value: 4
    # Flavor: data
    # Current_value: 4

    # The following properties are affected by this value
    # option CYGNUM_HAL_CORTEXM_PRIORITY_MAX
    #     Calculated: 1<<(8-CYGNUM_HAL_CORTEXM_PRIORITY_LEVEL_BITS)
};

# Clock setup calculations
#
cdl_component CYGHWR_HAL_CORTEXM_STM32_CLOCK {
    # There is no associated value.
};

# >
# PLL input source
# This sets whether the PLL will be driven by the external
# high-speed clock (HSE), or internal high-speed clock (HSI).
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value HSE
    # value_source default
    # Default value: HSE
    # Legal values:  "HSI" "HSE" 

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") && (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == "HSI")) implies  (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 2) 
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == "HSE" 
};

# PLL pre-divider
# This option corresponds to the divider used before input to the PLL.
# On non-connectivity parts, you can only divide by 2 or 1. On other
# F1 parts, if using HSI as the clock source, then that is automatically
# divided by 2. If using HSE as the clock source, then this value corresponds
# to the PREDIV1 field of register RCC_CFGR2. On F2 and F4 parts, this value
# corresponds to the PLLM field of RCC_PLLCFGR.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV {
    # Flavor: data
    user_value 8
    # value_source user
    # Default value: 1
    # Legal values: 1 to 63
    # Requires:  !CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV <= 2) 
    #     CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY == 1
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8
    #   --> 1
    # Requires:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV <= 16) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8
    #   --> 1
    # Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") && (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == "HSI")) implies  (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 2) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == HSE
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8
    #   --> 1
    # Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV >= 2) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8
    #   --> 1

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  !CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV <= 2) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV <= 16) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") && (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == "HSI")) implies  (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 2) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV >= 2) 
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8 
};

# PLL multiplier
# This value is used to multiply up the PLL input. On the F1 it corresponds
# to the PLLMUL field of RCC_CFGR. On the F2 and F4 it corresponds to the PLLN
# field of RCC_PLLCFGR.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL {
    # Flavor: data
    user_value 336
    # value_source user
    # Default value: 9
    # Legal values: 2 to 432
    # Requires:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 16) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL == 336
    #   --> 1
    # Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 432) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL == 336
    #   --> 1

    # The following properties are affected by this value
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL
    #     Requires:  (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F1") implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 16) 
    # option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL
    #     Requires:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) implies (CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL <= 432) 
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL == 336 
};

# SYSCLK divider
# This value is used to divide down the PLL output for use as
# the SYSCLK clock. This corresponds to the PLLP field of
# RCC_PLLCFGR
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_SYSCLK_DIV {
    # ActiveIf constraint:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 1

    # Flavor: data
    user_value 4
    # value_source user
    # Default value: 4
    # Legal values:  2 4 6 8 

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_SYSCLK_DIV == 4 
};

# HCLK divider
# Divider for AHB
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_HCLK_DIV {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Legal values:  1 2 4 8 16 64 128 256 512 

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_HCLK_DIV == 1 
};

# PCLK1 divider
# Divider for APB1
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK1_DIV {
    # Flavor: data
    user_value 4
    # value_source user
    # Default value: 2
    # Legal values:  1 2 4 8 16 

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK1_DIV == 4 
};

# PCLK2 divider
# Divider for APB2
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK2_DIV {
    # Flavor: data
    user_value 2
    # value_source user
    # Default value: 1
    # Legal values:  1 2 4 8 16 

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK2_DIV == 2 
};

# PLLQ divider
# This PLL divider is used in the F2 and F4 families to divide down the
# PLL output clock (VCO clock) for use by the USB OTG FS, SDIO
# and RNG peripherals. USB OTG FS requires a 48MHz clock and
# other peripherals require a clock no greater than 48MHz.
#
cdl_option CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLLQ_DIV {
    # ActiveIf constraint:  ((CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F2") || (CYGHWR_HAL_CORTEXM_STM32_FAMILY=="F4")) 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #   --> 1

    # Flavor: data
    user_value 7
    # value_source user
    # Default value: 10
    # Legal values: 4 to 15

    # The following properties are affected by this value
    # package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY
    #     Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLLQ_DIV == 7 
};

# <
# Clock interrupt ISR priority
# Set clock ISR priority to lowest priority.
#
cdl_option CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY {
    # Calculated value: 0xE0
    # Flavor: data
    # Current_value: 0x000000E0

    # The following properties are affected by this value
    # option CYGNUM_KERNEL_COUNTERS_CLOCK_ISR_PRIORITY
    #     DefaultValue:  is_loaded(CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY) ?
    #      	                      CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY : 1 
    # option CYGNUM_KERNEL_COUNTERS_CLOCK_ISR_PRIORITY
    #     DefaultValue:  is_loaded(CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY) ?
    #      	                      CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY : 1 
};

# Real-time clock constants
#
cdl_component CYGNUM_HAL_RTC_CONSTANTS {
    # There is no associated value.
};

# >
# Real-time clock numerator
#
cdl_option CYGNUM_HAL_RTC_NUMERATOR {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1000000000
    # value_source default
    # Default value: 1000000000
};

# Real-time clock denominator
#
cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
    # Flavor: data
    user_value 1000
    # value_source user
    # Default value: 100

    # The following properties are affected by this value
    # option CYGNUM_HAL_RTC_PERIOD
    #     DefaultValue: 1000000 / CYGNUM_HAL_RTC_DENOMINATOR
};

# Real-time clock period
# The period defined here is something of a fake, it is expressed
# in terms of a notional 1MHz clock. The value actually installed
# in the hardware is calculated from the current settings of the
# clock generation hardware.
#
cdl_option CYGNUM_HAL_RTC_PERIOD {
    # Flavor: data
    user_value 1000
    # value_source user
    # Default value: 1000000 / CYGNUM_HAL_RTC_DENOMINATOR
    #     CYGNUM_HAL_RTC_DENOMINATOR == 1000
    #   --> 1000
};

# <
# Platform has UART0 serial port
# The platform has a socket on UART0.
#
cdl_interface CYGINT_HAL_STM32_UART0 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0
    #     DefaultValue: CYGINT_HAL_STM32_UART0>0
};

# Platform has UART1 serial port
# The platform has a socket on UART1.
#
cdl_interface CYGINT_HAL_STM32_UART1 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1
    #     DefaultValue: CYGINT_HAL_STM32_UART1>0
};

# Platform has UART2 serial port
# The platform has a socket on UART2.
#
cdl_interface CYGINT_HAL_STM32_UART2 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2
    #     DefaultValue: CYGINT_HAL_STM32_UART2>0
};

# Platform has UART3 serial port
# The platform has a socket on UART3.
#
cdl_interface CYGINT_HAL_STM32_UART3 {
    # Implemented by CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3
    #     DefaultValue: CYGINT_HAL_STM32_UART3>0
};

# Platform has UART4 serial port
# The platform has a socket on UART4.
#
cdl_interface CYGINT_HAL_STM32_UART4 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4
    #     DefaultValue: CYGINT_HAL_STM32_UART4>0
};

# Platform has UART5 serial port
# The platform has a socket on UART5.
#
cdl_interface CYGINT_HAL_STM32_UART5 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL5
    #     DefaultValue: CYGINT_HAL_STM32_UART5>0
};

# Remap UART0 (USART1) pins
# Remap UART0 (USART1) to alternate set of pins.
# This will usually be set by the platform
# HAL to reflect the configuration of the hardware.
#
cdl_option CYGHWR_HAL_STM32_UART0_REMAP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Remap UART1 (USART2) pins
# Remap UART1 (USART2) to alternate set of pins.
# This will usually be set by the platform
# HAL to reflect the configuration of the hardware.
#
cdl_option CYGHWR_HAL_STM32_UART1_REMAP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Remap UART2 (USART3) pins
# Remap UART2 (USART3) to alternate set of pins.
# This will usually be set by the platform
# HAL to reflect the configuration of the hardware.
#
cdl_option CYGHWR_HAL_STM32_UART2_REMAP {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value NONE
    # value_source default
    # Default value: NONE
    # Legal values:  "NONE" "PARTIAL" "FULL" 
};

# Remap I2C bus 1 pins
# Remap I2C bus 1 to alternate set of pins.
# This will usually be set by the platform
# HAL to reflect the configuration of the hardware.
#
cdl_option CYGHWR_HAL_STM32_I2C1_REMAP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Remap SPI bus 1 pins
# Remap SPI bus 1 to alternate set of pins.
# This will usually be set by the platform
# HAL to reflect the configuration of the hardware.
#
cdl_option CYGHWR_HAL_STM32_SPI1_REMAP {
    # ActiveIf constraint: CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Remap SPI bus 3 pins
# Remap SPI bus 3 to alternate set of pins.
# This will usually be set by the platform
# HAL to reflect the configuration of the hardware.
# This option is only available on connectivity line
# devices.
#
cdl_option CYGHWR_HAL_STM32_SPI3_REMAP {
    # ActiveIf constraint: CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY
    #     CYGHWR_HAL_CORTEXM_STM32_CONNECTIVITY == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Use TIM2 for gprof profiling
# The STM32 variant HAL can provide support for gprof-based
# profiling. This uses timer TIM2 to generate regular interrupts,
# and the interrupt handler records the PC at the time of the
# interrupt. Disable this option if you wish to provide
# an alternative profiling timer implementation.
#
cdl_option CYGFUN_HAL_CORTEXM_STM32_PROFILE_TIMER {
    # This option is not active
    # ActiveIf constraint: CYGPKG_PROFILE_GPROF
    #     CYGPKG_PROFILE_GPROF (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Build options
# Package specific build options including control over
# compiler flags used only in building this package.
#
cdl_component CYGPKG_HAL_CORTEXM_STM32_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the STM32 variant HAL package. These flags are used
# in addition to the set of global flags.
#
cdl_option CYGPKG_HAL_CORTEXM_STM32_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the STM32 variant HAL package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_HAL_CORTEXM_STM32_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# STM32 tests
# This option specifies the set of tests for the STM32 HAL.
#
cdl_option CYGPKG_HAL_CORTEXM_STM32_TESTS {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Calculated value:  "tests/timers" 
    # Flavor: data
    # Current_value: tests/timers
};

# STMicroelectronics STM32F4-Discovery board HAL
# doc: ref/hal-cortexm-stm32f4discovery-part.html
# The STM32F4-Discovery HAL package provides the support needed to run
# eCos on the STMicroelectronics STM32F4-Discovery board.
#
cdl_package CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGHWR_HAL_CORTEXM == "M4" 
    #     CYGHWR_HAL_CORTEXM == M4
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_FAMILY == "F4" &&
    #                         CYGHWR_HAL_CORTEXM_STM32_F4 == "F407VG" 
    #     CYGHWR_HAL_CORTEXM_STM32_FAMILY == F4
    #     CYGHWR_HAL_CORTEXM_STM32_F4 == F407VG
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == "HSE" 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_SOURCE == HSE
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_PREDIV == 8
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL == 336 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLL_MUL == 336
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_SYSCLK_DIV == 4 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_SYSCLK_DIV == 4
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLLQ_DIV == 7 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PLLQ_DIV == 7
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_HCLK_DIV == 1 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_HCLK_DIV == 1
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK1_DIV == 4 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK1_DIV == 4
    #   --> 1
    # Requires:  CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK2_DIV == 2 
    #     CYGHWR_HAL_CORTEXM_STM32_CLOCK_PCLK2_DIV == 2
    #   --> 1
};

# >
# Startup type
# Select 'JTAG' when building applications to download into on-chip RAM
# using the on-board ST-LINK/V2 serial wire debugging interface. Select
# 'ROM' when building an application which will be written to on-chip
# Flash memory for immediate execution on system reset.
#
cdl_component CYG_HAL_STARTUP {
    # Flavor: data
    user_value ROM
    # value_source user
    # Default value: JTAG
    # Legal values: "JTAG" "ROM"

    # The following properties are affected by this value
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  (CYG_HAL_STARTUP == "ROM"    ) ? "cortexm_stm32f4discovery_rom"      :
    #                             (CYG_HAL_STARTUP == "JTAG"   ) ? "cortexm_stm32f4discovery_jtag"     :
    #                                                              "undefined" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  (CYG_HAL_STARTUP == "ROM"    ) ? "cortexm_stm32f4discovery_rom"      :
    #                             (CYG_HAL_STARTUP == "JTAG"   ) ? "cortexm_stm32f4discovery_jtag"     :
    #                                                              "undefined" 
    # option CYGSEM_HAL_INSTALL_MMU_TABLES
    #     DefaultValue:  CYG_HAL_STARTUP != "RAM" 
    # component CYGDBG_HAL_DIAG_TO_DEBUG_CHAN
    #     DefaultValue:  (CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS  || CYG_HAL_STARTUP == "RAM") ? 1 : 0
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     DefaultValue:  CYG_HAL_STARTUP != "RAM" || !CYGSEM_HAL_USE_ROM_MONITOR 
};

# Memory layout
#
cdl_component CYGHWR_MEMORY_LAYOUT {
    # Calculated value:  (CYG_HAL_STARTUP == "ROM"    ) ? "cortexm_stm32f4discovery_rom"      :
    #                             (CYG_HAL_STARTUP == "JTAG"   ) ? "cortexm_stm32f4discovery_jtag"     :
    #                                                              "undefined" 
    #     CYG_HAL_STARTUP == ROM
    #     CYG_HAL_STARTUP == ROM
    # Flavor: data
    # Current_value: cortexm_stm32f4discovery_rom

    # The following properties are affected by this value
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".ldi>" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated:  "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".h>" 
};

# >
# Memory layout linker script fragment
#
cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
    # Calculated value:  "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".ldi>" 
    #     CYGHWR_MEMORY_LAYOUT == cortexm_stm32f4discovery_rom
    # Flavor: data
    # Current_value: <pkgconf/mlt_cortexm_stm32f4discovery_rom.ldi>
};

# Memory layout header file
#
cdl_option CYGHWR_MEMORY_LAYOUT_H {
    # Calculated value:  "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".h>" 
    #     CYGHWR_MEMORY_LAYOUT == cortexm_stm32f4discovery_rom
    # Flavor: data
    # Current_value: <pkgconf/mlt_cortexm_stm32f4discovery_rom.h>
};

# <
# Input clock frequency
# Main clock input.
#
cdl_option CYGARC_HAL_CORTEXM_STM32_INPUT_CLOCK {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8000000
    # value_source default
    # Default value: 8000000
    # Legal values: 0 to 1000000000
};

# Flash read wait states
# This option gives the number of wait states to use for accessing
# the flash for reads. The correct setting for this value depends
# on both the CPU clock (HCLK) frequency and the voltage. Consult
# the STM32 Flash programming manual (PM0059) for appropriate
# values for different clock speeds or voltages. The default of
# 5 reflects a supply voltage of 3.3V and HCLK of 168MHz.
#
cdl_option CYGNUM_HAL_CORTEXM_STM32_FLASH_WAIT_STATES {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 5
    # value_source default
    # Default value: 5
    # Legal values: 0 to 7
};

# Number of communication channels on the board
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
    # Calculated value: 1
    # Flavor: data
    # Current_value: 1
};

# Debug serial port
# The STM32F4-Discovery board has one serial port enabled. This option
# informs the rest of the system which port will be used to connect
# to a host running GDB.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
    # ActiveIf constraint: CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
    #     CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE == 1
    #   --> 1

    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
};

# Diagnostic serial port
# The STM32F4-Discovery board has one serial port enabled. This option
# informs the rest of the system which port will be used for
# diagnostic output.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
    # ActiveIf constraint: CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
    #     CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE == 1
    #   --> 1

    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
};

# Diagnostic serial port baud rate
# This option controls the default baud rate used for the
# console connection.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value: 115200
    # Legal values: 9600 19200 38400 57600 115200

    # The following properties are affected by this value
    # option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD
    #     Calculated: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    # option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL0_BAUD
    #     DefaultValue:  CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD 
    # option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL1_BAUD
    #     DefaultValue: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    # option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL2_BAUD
    #     DefaultValue: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    # option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL3_BAUD
    #     DefaultValue: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    # option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL4_BAUD
    #     DefaultValue: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    # option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL5_BAUD
    #     DefaultValue: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
};

# Debug serial port baud rate
# This option controls the default baud rate used for the
# GDB connection.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD {
    # Calculated value: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    # Flavor: data
    # Current_value: 115200
};

# STM32F4-Discovery HAL build options
# Package specific build options including control over
# compiler flags used only in building this HAL package.
#
cdl_component CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags
# for building this HAL. These flags are used
# in addition to the set of global flags.
#
cdl_option CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -Werror
    # value_source default
    # Default value: -Werror
};

# Suppressed compiler flags
# This option modifies the set of compiler flags
# for building this HAL. These flags are
# removed from the set of global flags if
# present.
#
cdl_option CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# STM32F4-Discovery tests
# This option specifies the set of tests for the STM32F4-Discovery HAL.
#
cdl_option CYGPKG_HAL_CORTEXM_STM32_STM32F4DISCOVERY_TESTS {
    # Calculated value:  "tests/gpio" 
    # Flavor: data
    # Current_value: tests/gpio
};

# <
# <
# <
# <
# I/O sub-system
# doc: ref/io.html
# The eCos system is supplied with a number of different
# device drivers.  This option enables the basic I/O system
# support which is the basis for all drivers.
#
cdl_package CYGPKG_IO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL
    #     ActiveIf: CYGPKG_IO
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_IO
};

# >
# Debug I/O sub-system
# This option enables verbose messages to be displayed on the
# system 'diag' device during I/O system initialization.
#
cdl_option CYGDBG_IO_INIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Basic support for file based I/O
# This option control support for simple file I/O primitives. It is only
# present if the FILEIO package is not included.
#
cdl_component CYGPKG_IO_FILE_SUPPORT {
    # ActiveIf constraint: !CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of open files
# This option controls the number of open files.
#
cdl_option CYGPKG_IO_NFILE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
};

# <
# Serial device drivers
# doc: ref/io.html
# This option enables drivers for basic I/O services on
# serial devices.
#
cdl_package CYGPKG_IO_SERIAL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # ActiveIf constraint: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_CORTEXM_STM32
    #     ActiveIf: CYGPKG_IO_SERIAL
};

# >
# Support non-blocking read and write calls
# This option enables extra code in the generic serial driver
# which allows clients to switch read() and write() call
# semantics from blocking to non-blocking.
#
cdl_option CYGOPT_IO_SERIAL_SUPPORT_NONBLOCKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Driver requires block transfer callback functions
# Some low-level drivers can be optimized to transfer blocks
# of data instead of a single character at a time. These usually
# rely on a hardware FIFO of some sort.
#
cdl_interface CYGINT_IO_SERIAL_BLOCK_TRANSFER {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Serial driver supports line status
#
cdl_interface CYGINT_IO_SERIAL_LINE_STATUS_HW {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     Requires:  CYGINT_IO_SERIAL_LINE_STATUS_HW > 0 
    # option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     DefaultValue:  0 != CYGINT_IO_SERIAL_LINE_STATUS_HW 
};

# Support line status callbacks
# This option indicates that if the serial driver supports it,
# serial line status and modem status information should be
# propagated to higher layers via callbacks.
#
cdl_option CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGINT_IO_SERIAL_LINE_STATUS_HW 
    #     CYGINT_IO_SERIAL_LINE_STATUS_HW == 0
    #   --> 0
    # Requires:  CYGINT_IO_SERIAL_LINE_STATUS_HW > 0 
    #     CYGINT_IO_SERIAL_LINE_STATUS_HW == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     Requires: CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     DefaultValue:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
};

# Flow control
# This component contains options related to flow control.
#
cdl_component CYGPKG_IO_SERIAL_FLOW_CONTROL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
    #     CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE == 0
    #     CYGOPT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0
};

# >
# Software flow control
# This component enables support of software flow control.
#
cdl_component CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_FLOW_CONTROL
    #     Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
};

# >
# Start character
# This option specifies the ascii character used to
# indicate that transmission should start.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_XON_CHAR {
    # This option is not active
    # The parent CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 17
    # value_source default
    # Default value: 17
    # Legal values: 0 to 255
};

# Stop character
# This option specifies the ascii character used to
# indicate that transmission should stop.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_XOFF_CHAR {
    # This option is not active
    # The parent CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 19
    # value_source default
    # Default value: 19
    # Legal values: 0 to 255
};

# <
# Hardware flow control
# If the hardware supports it, this option allows hardware
# flow control to be enabled. This may be in the form of
# either or both of RTS/CTS, or DSR/DTR flow control.
#
cdl_option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled
    # ActiveIf constraint:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #     CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS == 0
    #   --> 0
    # Requires:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    #     CYGINT_IO_SERIAL_FLOW_CONTROL_HW == 0
    #   --> 0
    # Requires: CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS
    #     CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS == 0
    #   --> 0

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_FLOW_CONTROL
    #     Requires: (CYGOPT_IO_SERIAL_FLOW_CONTROL_SOFTWARE || CYGOPT_IO_SERIAL_FLOW_CONTROL_HW)
};

# Serial h/w supports hardware flow control
#
cdl_interface CYGINT_IO_SERIAL_FLOW_CONTROL_HW {
    # No options implement this inferface
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     ActiveIf:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     Requires:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 
    # option CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
    #     DefaultValue:  CYGINT_IO_SERIAL_FLOW_CONTROL_HW > 0 ?  CYGOPT_IO_SERIAL_SUPPORT_LINE_STATUS : 0 
};

# Default flow control method
# This option allows a default flow control method
# to be defined. Combinations of flow control methods
# may also be set, but this is only possible by
# using the cyg_io_set_config() API in source code.
#
cdl_option CYGDAT_IO_SERIAL_FLOW_CONTROL_DEFAULT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value NONE
    # value_source default
    # Default value: NONE
    # Legal values:  "NONE" "XONXOFF" "RTSCTS" "DSRDTR" 
};

# Rx flow control low water mark
# This sets the water mark used for determining
# when to disable flow control, expressed
# as a percentage of the buffer size. When the
# receive buffer size is lower than this percentage,
# if the transmitter had previously been throttled, it
# will now be informed it can restart.
#
cdl_option CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 33
    # value_source default
    # Default value: 33
    # Legal values: 1 to 100

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT
    #     Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
};

# Rx flow control high water mark
# This sets the water mark used for determining
# when to enable flow control, expressed
# as a percentage of the buffer size. When the
# receive buffer size exceeds this percentage,
# signals are sent to the transmitter to tell it
# to throttle tranmission.
#
cdl_option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_FLOW_CONTROL is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 66
    # value_source default
    # Default value: 66
    # Legal values: 1 to 100
    # Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
    #     CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT == 0
    #     CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT
    #     Requires:  CYGNUM_IO_SERIAL_FLOW_CONTROL_HIGH_WATER_PERCENT >=  CYGNUM_IO_SERIAL_FLOW_CONTROL_LOW_WATER_PERCENT 
};

# <
# TTY-mode serial device drivers
# This option enables a simple terminal-like device driver 
# that can be used for serial devices that interact with humans,
# such as a system console.
#
cdl_component CYGPKG_IO_SERIAL_TTY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# HAL/diag serial device driver
# This option enables the use of the HAL diagnostic channel
# via the standard I/O drivers.
#
cdl_component CYGPKG_IO_SERIAL_HALDIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  (CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE == "\"/dev/ttydiag\"" ?  CYGPKG_IO_SERIAL_HALDIAG : 1) 
};

# Console device name
# This option selects the TTY device to use for the console.
#
cdl_option CYGDAT_IO_SERIAL_TTY_CONSOLE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ttydiag\""
    # value_source default
    # Default value: "\"/dev/ttydiag\""

    # The following properties are affected by this value
    # option CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE
    #     DefaultValue:  CYGDAT_IO_SERIAL_TTY_CONSOLE ? CYGDAT_IO_SERIAL_TTY_CONSOLE : "\"/dev/null\"" 
    # option CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE
    #     DefaultValue:  CYGDAT_IO_SERIAL_TTY_CONSOLE ? CYGDAT_IO_SERIAL_TTY_CONSOLE : "\"/dev/null\"" 
};

# TTY mode HAL/diag channel
# This option causes '/dev/ttydiag' to be included in the standard
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTYDIAG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# TTY mode channel #0
# This option causes '/dev/tty0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY0 {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
};

# >
# TTY mode channel #0 device
# This option selects the physical device to use for 
# '/dev/tty0'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY0_DEV {
    # Flavor: data
    user_value "\"/dev/ser1\""
    # value_source user
    # Default value: "\"/dev/ser0\""
};

# <
# TTY mode channel #1
# This option causes '/dev/tty1' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY1 {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
};

# >
# TTY mode channel #1 device
# This option selects the physical device to use for 
# '/dev/tty1'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY1_DEV {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# <
# TTY mode channel #2
# This option causes '/dev/tty2' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY2 {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
};

# >
# TTY mode channel #2 device
# This option selects the physical device to use for 
# '/dev/tty2'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY2_DEV {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""
};

# <
# TTY mode channel #3
# This option causes '/dev/tty3' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TTY_TTY3 {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0
};

# >
# TTY mode channel #3 device
# This option selects the physical device to use for 
# '/dev/tty3'.
#
cdl_option CYGDAT_IO_SERIAL_TTY_TTY3_DEV {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser3\""
    # value_source default
    # Default value: "\"/dev/ser3\""
};

# <
# <
# Termios compatible TTY drivers
# This option enables terminal drivers compatible with
# POSIX termios.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    #     CYGPKG_ISOINFRA == current
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #     CYGINT_ISO_ERRNO_CODES == 1
    #     CYGINT_ISO_ERRNO == 1
    #   --> 0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
};

# >
# Interface for termios tty driver file enabling
#
cdl_interface CYGINT_IO_SERIAL_TERMIOS_TERMIOS_TTY {
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0, inactive, disabled
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1, inactive, disabled
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2, inactive, disabled
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS_TERMIOS3, inactive, disabled
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGBLD_IO_SERIAL_TERMIOS_TERMIOS_TTY
    #     ActiveIf:  CYGINT_IO_SERIAL_TERMIOS_TERMIOS_TTY > 0 
};

# Build termios tty driver file
#
cdl_option CYGBLD_IO_SERIAL_TERMIOS_TERMIOS_TTY {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled
    # ActiveIf constraint:  CYGINT_IO_SERIAL_TERMIOS_TERMIOS_TTY > 0 
    #     CYGINT_IO_SERIAL_TERMIOS_TERMIOS_TTY == 0
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# Termios TTY channel #0
# This option causes '/dev/termios0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #0 device
# This option selects the physical device to use for 
# '/dev/termios0'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS0_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""
};

# <
# Termios TTY channel #1
# This option causes '/dev/termios1' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #1 device
# This option selects the physical device to use for 
# '/dev/termios1'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS1_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS1 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""
};

# <
# Termios TTY channel #2
# This option causes '/dev/termios2' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #2 device
# This option selects the physical device to use for 
# '/dev/termios2'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS2_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""
};

# <
# Termios TTY channel #3
# This option causes '/dev/termios3' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS3 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Termios TTY channel #3 device
# This option selects the physical device to use for 
# '/dev/termios3'.
#
cdl_option CYGDAT_IO_SERIAL_TERMIOS_TERMIOS3_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS3 is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS_TERMIOS3 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser3\""
    # value_source default
    # Default value: "\"/dev/ser3\""
};

# <
# Support signals
# This option selects whether those parts of the termios
# interface involving signals is supported. This includes
# BRKINT mode, the INTR and QUIT characters, and whether
# SIGHUP is sent on terminal close.
#
cdl_option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TERMIOS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
    #     CYGINT_ISO_SIGNAL_NUMBERS == 1
    #     CYGINT_ISO_SIGNAL_IMPL == 1
    #   --> 1
    # Requires: CYGINT_ISO_SIGNAL_NUMBERS
    #     CYGINT_ISO_SIGNAL_NUMBERS == 1
    #   --> 1
    # Requires: CYGINT_ISO_SIGNAL_IMPL
    #     CYGINT_ISO_SIGNAL_IMPL == 1
    #   --> 1
};

# <
# Hardware serial device drivers
# This option enables the hardware device drivers
# for the current platform.
#
cdl_component CYGPKG_IO_SERIAL_DEVICES {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: 0

    # The following properties are affected by this value
    # option CYGPKG_IO_SERIAL_TESTS
    #     Calculated:  CYGPKG_IO_SERIAL_DEVICES ? "tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2" : "" 
};

# >
# ST STM32 serial device drivers
# This option enables the serial device drivers for the
# ST STM32.
#
cdl_package CYGPKG_IO_SERIAL_CORTEXM_STM32 {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # ActiveIf constraint: CYGPKG_IO_SERIAL
    #     CYGPKG_IO_SERIAL == current
    #   --> 1
    # ActiveIf constraint: CYGPKG_HAL_CORTEXM_STM32
    #     CYGPKG_HAL_CORTEXM_STM32 == current
    #   --> 1

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
};

# >
# ST STM32 serial port 0 driver
# This option includes the serial device driver for the ST STM32 
# port 0.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: CYGINT_HAL_STM32_UART0>0
    #     CYGINT_HAL_STM32_UART0 == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
    # option CYGPRI_SER_TEST_TTY_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? "\"/dev/tty0\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? "\"/dev/tty1\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? "\"/dev/tty2\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? "\"/dev/tty3\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? "\"/dev/tty4\"" :  "\"/dev/tty5\"" 
};

# >
# Device name for ST STM32 serial port 0 driver
# This option specifies the name of the serial device for the 
# ST STM32 port 0.
#
cdl_option CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value: "\"/dev/ser0\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
};

# Baud rate for the ST STM32 serial port 0 driver
# This option specifies the default baud rate (speed) for the 
# ST STM32 port 0.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL0_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value:  CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD 
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    #   --> 115200
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 230400
    #             
};

# Buffer size for the ST STM32 serial port 0 driver
# This option specifies the size of the internal buffers used 
# for the ST STM32 port 0.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL0_BUFSIZE {
    # Flavor: data
    user_value 0
    # value_source user
    # Default value: 128
    # Legal values: 0 to 8192
};

# Interrupt priority for STM32 serial port 0
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL0_INT_PRI {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 255
};

# <
# ST STM32 serial port 1 driver
# This option includes the serial device driver for the ST STM32 
# port 1.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 {
    # Flavor: bool
    user_value 1
    # value_source user
    # Default value: CYGINT_HAL_STM32_UART1>0
    #     CYGINT_HAL_STM32_UART1 == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
    # option CYGPRI_SER_TEST_TTY_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? "\"/dev/tty0\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? "\"/dev/tty1\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? "\"/dev/tty2\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? "\"/dev/tty3\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? "\"/dev/tty4\"" :  "\"/dev/tty5\"" 
};

# >
# Device name for ST STM32 serial port 1 driver
# This option specifies the name of the serial device for the 
# ST STM32 port 1.
#
cdl_option CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser1\""
    # value_source default
    # Default value: "\"/dev/ser1\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
};

# Baud rate for the ST STM32 serial port 1 driver
# This option specifies the default baud rate (speed) for the
# ST STM32 port 1.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL1_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    #   --> 115200
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 230400
    #             
};

# Buffer size for the ST STM32 serial port 1 driver
# This option specifies the size of the internal buffers used 
# for the ST STM32 port 1.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL1_BUFSIZE {
    # Flavor: data
    user_value 0
    # value_source user
    # Default value: 128
    # Legal values: 0 to 8192
};

# Interrupt priority for STM32 serial port 1
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL1_INT_PRI {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 255
};

# <
# ST STM32 serial port 2 driver
# This option includes the serial device driver for the ST STM32 
# port 2.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 {
    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: CYGINT_HAL_STM32_UART2>0
    #     CYGINT_HAL_STM32_UART2 == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
    # option CYGPRI_SER_TEST_TTY_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? "\"/dev/tty0\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? "\"/dev/tty1\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? "\"/dev/tty2\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? "\"/dev/tty3\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? "\"/dev/tty4\"" :  "\"/dev/tty5\"" 
};

# >
# Device name for ST STM32 serial port 2 driver
# This option specifies the name of the serial device for the 
# ST STM32 port 2.
#
cdl_option CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser2\""
    # value_source default
    # Default value: "\"/dev/ser2\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
};

# Baud rate for the ST STM32 serial port 2 driver
# This option specifies the default baud rate (speed) for the
# ST STM32 port 2.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL2_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    #   --> 115200
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 230400
    #             
};

# Buffer size for the ST STM32 serial port 2 driver
# This option specifies the size of the internal buffers used 
# for the ST STM32 port 2.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL2_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 is disabled

    # Flavor: data
    user_value 0
    # value_source user
    # Default value: 128
    # Legal values: 0 to 8192
};

# Interrupt priority for STM32 serial port 2
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL2_INT_PRI {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 255
};

# <
# ST STM32 serial port 3 driver
# This option includes the serial device driver for the ST STM32 
# port 3.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 {
    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: CYGINT_HAL_STM32_UART3>0
    #     CYGINT_HAL_STM32_UART3 == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
    # option CYGPRI_SER_TEST_TTY_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? "\"/dev/tty0\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? "\"/dev/tty1\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? "\"/dev/tty2\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? "\"/dev/tty3\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? "\"/dev/tty4\"" :  "\"/dev/tty5\"" 
};

# >
# Device name for ST STM32 serial port 3 driver
# This option specifies the name of the serial device for the 
# ST STM32 port 3.
#
cdl_option CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser3\""
    # value_source default
    # Default value: "\"/dev/ser3\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
};

# Baud rate for the ST STM32 serial port 3 driver
# This option specifies the default baud rate (speed) for the
# ST STM32 port 3.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL3_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    #   --> 115200
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 230400
    #             
};

# Buffer size for the ST STM32 serial port 3 driver
# This option specifies the size of the internal buffers used 
# for the ST STM32 port 3.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL3_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 is disabled

    # Flavor: data
    user_value 0
    # value_source user
    # Default value: 128
    # Legal values: 0 to 8192
};

# Interrupt priority for STM32 serial port 3
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL3_INT_PRI {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 255
};

# <
# ST STM32 serial port 4 driver
# This option includes the serial device driver for the ST STM32 
# port 4.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 {
    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: CYGINT_HAL_STM32_UART4>0
    #     CYGINT_HAL_STM32_UART4 == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
    # option CYGPRI_SER_TEST_TTY_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? "\"/dev/tty0\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? "\"/dev/tty1\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? "\"/dev/tty2\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? "\"/dev/tty3\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? "\"/dev/tty4\"" :  "\"/dev/tty5\"" 
};

# >
# Device name for ST STM32 serial port 4 driver
# This option specifies the name of the serial device for the 
# ST STM32 port 4.
#
cdl_option CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser4\""
    # value_source default
    # Default value: "\"/dev/ser4\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
};

# Baud rate for the ST STM32 serial port 4 driver
# This option specifies the default baud rate (speed) for the
# ST STM32 port 4.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL4_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    #   --> 115200
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 230400
    #             
};

# Buffer size for the ST STM32 serial port 4 driver
# This option specifies the size of the internal buffers used 
# for the ST STM32 port 4.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL4_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 is disabled

    # Flavor: data
    user_value 128
    # value_source user
    # Default value: 128
    # Legal values: 0 to 8192
};

# Interrupt priority for STM32 serial port 4
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL4_INT_PRI {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 255
};

# <
# ST STM32 serial port 5 driver
# This option includes the serial device driver for the ST STM32 
# port 5.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL5 {
    # Flavor: bool
    user_value 0
    # value_source user
    # Default value: CYGINT_HAL_STM32_UART5>0
    #     CYGINT_HAL_STM32_UART5 == 0
    #   --> 0
};

# >
# Device name for ST STM32 serial port 5 driver
# This option specifies the name of the serial device for the 
# ST STM32 port 5.
#
cdl_option CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL5 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser5\""
    # value_source default
    # Default value: "\"/dev/ser5\""

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
};

# Baud rate for the ST STM32 serial port 5 driver
# This option specifies the default baud rate (speed) for the
# ST STM32 port 5.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL5_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL5 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 115200
    # value_source default
    # Default value: CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD
    #     CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD == 115200
    #   --> 115200
    # Legal values:  50 75 110 "134_5" 150 200 300 600 1200 1800 2400 3600
    #                           4800 7200 9600 14400 19200 38400 57600 115200 230400
    #             
};

# Buffer size for the ST STM32 serial port 5 driver
# This option specifies the size of the internal buffers used 
# for the ST STM32 port 5.
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL5_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL5 is disabled

    # Flavor: data
    user_value 0
    # value_source user
    # Default value: 128
    # Legal values: 0 to 8192
};

# Interrupt priority for STM32 serial port 5
#
cdl_option CYGNUM_IO_SERIAL_CORTEXM_STM32_SERIAL5_INT_PRI {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL5 is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 0 to 255
};

# <
# Serial device driver build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_CORTEXM_STM32_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_CORTEXM_STM32_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# Testing parameters
#
cdl_component CYGPKG_IO_SERIAL_CORTEXM_STM32_TESTING {
    # There is no associated value.
};

# >
# Serial device used for testing
#
cdl_option CYGPRI_SER_TEST_SER_DEV {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ser0\""
    # value_source default
    # Default value:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME :  CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME 
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 == 1
    #     CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL0_NAME == "\"/dev/ser0\""
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 == 1
    #     CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL1_NAME == "\"/dev/ser1\""
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 == 0
    #     CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL2_NAME == 0
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 == 0
    #     CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL3_NAME == 0
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 == 0
    #     CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL4_NAME == 0
    #     CYGDAT_IO_SERIAL_CORTEXM_STM32_SERIAL5_NAME == 0
    #   --> "\"/dev/ser0\""
};

# TTY-mode serial device used for testing
#
cdl_option CYGPRI_SER_TEST_TTY_DEV {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/tty0\""
    # value_source default
    # Default value:  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 ? "\"/dev/tty0\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 ? "\"/dev/tty1\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 ? "\"/dev/tty2\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 ? "\"/dev/tty3\"" :  CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 ? "\"/dev/tty4\"" :  "\"/dev/tty5\"" 
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL0 == 1
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL1 == 1
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL2 == 0
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL3 == 0
    #     CYGPKG_IO_SERIAL_CORTEXM_STM32_SERIAL4 == 0
    #   --> "\"/dev/tty0\""
};

# <
# <
# <
# Build extra serial tests
# This option enables the building of some extra tests which
# can be used when testing / debugging serial drivers. These
# are not built by default since they do not use the dedicated
# testing infrastructure.
#
cdl_option CYGBLD_IO_SERIAL_EXTRA_TESTS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Serial device driver build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_SERIAL_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Serial device driver tests
# This option specifies the set of tests for the serial device drivers.
#
cdl_option CYGPKG_IO_SERIAL_TESTS {
    # Calculated value:  CYGPKG_IO_SERIAL_DEVICES ? "tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2" : "" 
    #     CYGPKG_IO_SERIAL_DEVICES == 1
    # Flavor: data
    # Current_value: tests/serial1 tests/serial2 tests/serial3 tests/serial4 tests/serial5 tests/tty1 tests/tty2 tests/flow1 tests/flow2
};

# <
# Enable serial device select support
# This option enables support for the select() API function on all
# serial devices.
#
cdl_option CYGPKG_IO_SERIAL_SELECT_SUPPORT {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGFUN_IO_FILEIO_SELECT == 1 
    #     CYGFUN_IO_FILEIO_SELECT (unknown) == 0
    #   --> 0
};

# Serial testing specification
#
cdl_component CYGPKG_IO_SERIAL_TEST_SPECS {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Skip 9600 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_9600 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 14400 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_14400 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 19200 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_19200 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 38400 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_38400 {
    # Implemented by CYGPKG_IO_SERIAL_CORTEXM_STM32_TESTING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
};

# Skip 57600 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_57600 {
    # Implemented by CYGPKG_IO_SERIAL_CORTEXM_STM32_TESTING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
};

# Skip 115200 baud testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_115200 {
    # Implemented by CYGPKG_IO_SERIAL_CORTEXM_STM32_TESTING, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
};

# Skip even-parity testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip odd-parity testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_PARITY_ODD {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Skip 2-stop bit testing
#
cdl_interface CYGINT_IO_SERIAL_TEST_SKIP_STOP_2 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# <
# <
# <
# Infrastructure
# Common types and useful macros.
# Tracing and assertion facilities.
# Package startup options.
#
cdl_package CYGPKG_INFRA {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # package CYGPKG_HAL
    #     Requires: CYGPKG_INFRA
};

# >
# Asserts & Tracing
# The eCos source code contains a significant amount of
# internal debugging support, in the form of assertions and
# tracing.
# Assertions check at runtime that various conditions are as
# expected; if not, execution is halted.
# Tracing takes the form of text messages that are output
# whenever certain events occur, or whenever functions are
# called or return.
# The most important property of these checks and messages is
# that they are not required for the program to run.
# It is prudent to develop software with assertions enabled,
# but disable them when making a product release, thus
# removing the overhead of that checking.
# It is possible to enable assertions and tracing
# independently.
# There are also options controlling the exact behaviour of
# the assertion and tracing facilities, thus giving users
# finer control over the code and data size requirements.
#
cdl_component CYGPKG_INFRA_DEBUG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD
    #     ActiveIf: CYGPKG_INFRA_DEBUG
    # component CYGFUN_KERNEL_THREADS_STACK_CHECKING
    #     ActiveIf: CYGPKG_INFRA_DEBUG
    # component CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT
    #     DefaultValue:  0 != CYGPKG_INFRA_DEBUG 
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
};

# >
# Use asserts
# If this option is defined, asserts in the code are tested.
# Assert functions (CYG_ASSERT()) are defined in
# 'include/cyg/infra/cyg_ass.h' within the 'install' tree.
# If it is not defined, these result in no additional
# object code and no checking of the asserted conditions.
#
cdl_component CYGDBG_USE_ASSERTS {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  1 == CYGINT_INFRA_DEBUG_TRACE_IMPL 
    #     CYGINT_INFRA_DEBUG_TRACE_IMPL == 0
    #   --> 0

    # The following properties are affected by this value
    # component CYGFUN_KERNEL_THREADS_STACK_CHECKING
    #     ActiveIf: CYGDBG_USE_ASSERTS
    # option CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG
    #     Requires: CYGDBG_USE_ASSERTS
    # option CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG
    #     DefaultValue:  0 != CYGDBG_USE_ASSERTS 
    # option CYGSEM_LIBC_SIGNALS_BAD_SIGNAL_FATAL
    #     Requires: CYGDBG_USE_ASSERTS
};

# >
# Preconditions
# This option allows individual control of preconditions.
# A precondition is one type of assert, which it is
# useful to control separately from more general asserts.
# The function is CYG_PRECONDITION(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_PRECONDITIONS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Postconditions
# This option allows individual control of postconditions.
# A postcondition is one type of assert, which it is
# useful to control separately from more general asserts.
# The function is CYG_POSTCONDITION(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_POSTCONDITIONS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Loop invariants
# This option allows individual control of loop invariants.
# A loop invariant is one type of assert, which it is
# useful to control separately from more general asserts,
# particularly since a loop invariant is typically evaluated
# a great many times when used correctly.
# The function is CYG_LOOP_INVARIANT(condition,msg).
#
cdl_option CYGDBG_INFRA_DEBUG_LOOP_INVARIANTS {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use assert text
# All assertions within eCos contain a text message
# which should give some information about the condition
# being tested.
# These text messages will end up being embedded in the
# application image and hence there is a significant penalty
# in terms of image size.
# It is possible to suppress the use of these messages by
# disabling this option.
# This results in smaller code size, but there is less
# human-readable information if an assertion actually gets
# triggered.
#
cdl_option CYGDBG_INFRA_DEBUG_ASSERT_MESSAGE {
    # This option is not active
    # The parent CYGDBG_USE_ASSERTS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use tracing
# If this option is defined, tracing operations
# result in output or logging, depending on other options.
# This may have adverse effects on performance, if the time
# taken to output message overwhelms the available CPU
# power or output bandwidth.
# Trace functions (CYG_TRACE()) are defined in
# 'include/cyg/infra/cyg_trac.h' within the 'install' tree.
# If it is not defined, these result in no additional
# object code and no trace information.
#
cdl_component CYGDBG_USE_TRACING {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  1 == CYGINT_INFRA_DEBUG_TRACE_IMPL 
    #     CYGINT_INFRA_DEBUG_TRACE_IMPL == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_WRAP
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_HALT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT_ON_ASSERT
    #     ActiveIf: CYGDBG_USE_TRACING
    # option CYGDBG_KERNEL_TRACE_TIMESLICE
    #     ActiveIf: CYGDBG_USE_TRACING
    # component CYGPKG_LIBM_TRACE
    #     Requires: CYGDBG_USE_TRACING
};

# >
# Trace function reports
# This option allows individual control of
# function entry/exit tracing, independent of
# more general tracing output.
# This may be useful to remove clutter from a
# trace log.
#
cdl_option CYGDBG_INFRA_DEBUG_FUNCTION_REPORTS {
    # This option is not active
    # The parent CYGDBG_USE_TRACING is not active
    # The parent CYGDBG_USE_TRACING is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use trace text
# All trace calls within eCos contain a text message
# which should give some information about the circumstances.
# These text messages will end up being embedded in the
# application image and hence there is a significant penalty
# in terms of image size.
# It is possible to suppress the use of these messages by
# disabling this option.
# This results in smaller code size, but there is less
# human-readable information available in the trace output,
# possibly only filenames and line numbers.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_MESSAGE {
    # This option is not active
    # The parent CYGDBG_USE_TRACING is not active
    # The parent CYGDBG_USE_TRACING is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Trace output implementations
#
cdl_interface CYGINT_INFRA_DEBUG_TRACE_IMPL {
    # Implemented by CYGDBG_INFRA_DEBUG_TRACE_ASSERT_NULL, inactive, disabled
    # Implemented by CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE, inactive, disabled
    # Implemented by CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY, inactive, disabled
    # Implemented by CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER, inactive, enabled
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGDBG_USE_ASSERTS
    #     Requires:  1 == CYGINT_INFRA_DEBUG_TRACE_IMPL 
    # component CYGDBG_USE_TRACING
    #     Requires:  1 == CYGINT_INFRA_DEBUG_TRACE_IMPL 
};

# Null output
# A null output module which is useful when
# debugging interactively; the output routines
# can be breakpointed rather than have them actually
# 'print' something.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_NULL {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Simple output
# An output module which produces simple output
# from tracing and assertion events.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_TRACE_TIMESLICE
    #     Requires: !CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE
};

# Fancy output
# An output module which produces fancy output
# from tracing and assertion events.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_TRACE_TIMESLICE
    #     Requires: !CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY
};

# Buffered tracing
# An output module which buffers output
# from tracing and assertion events. The stored
# messages are output when an assert fires, or
# CYG_TRACE_PRINT() (defined in <cyg/infra/cyg_trac.h>)
# is called.
# Of course, there will only be stored messages
# if tracing per se (CYGDBG_USE_TRACING)
# is enabled above.
#
cdl_component CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Trace buffer size
# The size of the trace buffer. This counts the number
# of trace records stored. When the buffer fills it
# either wraps, stops recording, or generates output.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 5 to 65535
};

# Wrap trace buffer when full
# When the trace buffer has filled with records it
# starts again at the beginning. Hence only the last
# CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE messages will
# be recorded.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_WRAP {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Halt trace buffer when full
# When the trace buffer has filled with records it
# stops recording. Hence only the first
# CYGDBG_INFRA_DEBUG_TRACE_BUFFER_SIZE messages will
# be recorded.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_HALT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print trace buffer when full
# When the trace buffer has filled with records it
# prints the contents of the buffer. The buffer is then
# emptied and the system continues.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Print trace buffer on assert fail
# When an assertion fails the trace buffer will be 
# printed to the default diagnostic device.
#
cdl_option CYGDBG_INFRA_DEBUG_TRACE_BUFFER_PRINT_ON_ASSERT {
    # This option is not active
    # The parent CYGDBG_INFRA_DEBUG_TRACE_ASSERT_BUFFER is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use function names
# All trace and assert calls within eCos contain a
# reference to the builtin macro '__PRETTY_FUNCTION__',
# which evaluates to a string containing
# the name of the current function.
# This is useful when reading a trace log.
# It is possible to suppress the use of the function name
# by disabling this option.
# This results in smaller code size, but there is less
# human-readable information available in the trace output,
# possibly only filenames and line numbers.
#
cdl_option CYGDBG_INFRA_DEBUG_FUNCTION_PSEUDOMACRO {
    # This option is not active
    # The parent CYGPKG_INFRA_DEBUG is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Startup options
# Some packages require a startup routine to be called.
# This can be carried out by application code, by supplying
# a routine called cyg_package_start() which calls the
# appropriate package startup routine(s).
# Alternatively, this routine can be constructed automatically
# and configured to call the startup routines of your choice.
#
cdl_component CYGPKG_INFRA_STARTUP {
    # There is no associated value.
};

# >
# Start uITRON subsystem
# Generate a call to initialize the
# uITRON compatibility subsystem
# within the system version of cyg_package_start().
# This enables compatibility with uITRON.
# You must configure uITRON with the correct tasks before
# starting the uItron subsystem.
# If this is disabled, and you want to use uITRON,
# you must call cyg_uitron_start() from your own
# cyg_package_start() or cyg_userstart().
#
cdl_option CYGSEM_START_UITRON_COMPATIBILITY {
    # This option is not active
    # ActiveIf constraint: CYGPKG_UITRON
    #     CYGPKG_UITRON (unknown) == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_UITRON
    #     CYGPKG_UITRON (unknown) == 0
    #   --> 0
};

# <
# Smaller slower memcpy()
# Enabling this option causes the implementation of
# the standard memcpy() routine to reduce code
# size at the expense of execution speed. This
# option is automatically enabled with the use of
# the -Os option to the compiler. Also note that
# the compiler will try to use its own builtin
# version of memcpy() if possible, ignoring the
# implementation in this package, unless given
# the -fno-builtin compiler option.
#
cdl_option CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMCPY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Smaller slower memset()
# Enabling this option causes the implementation of
# the standard memset() routine to reduce code
# size at the expense of execution speed. This
# option is automatically enabled with the use of
# the -Os option to the compiler. Also note that
# the compiler will try to use its own builtin
# version of memset() if possible, ignoring the
# implementation in this package, unless given
# the -fno-builtin compiler option.
#
cdl_option CYGIMP_INFRA_PREFER_SMALL_TO_FAST_MEMSET {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Provide empty C++ delete functions
# To deal with virtual destructors, where the correct delete()
# function must be called for the derived class in question, the
# underlying delete is called when needed, from destructors.  This
# is regardless of whether the destructor is called by delete itself.
# So there is a reference to delete() from all destructors.  The
# default builtin delete() attempts to call free() if there is
# one defined.  So, if you have destructors, and you have free(),
# as in malloc() and free(), any destructor counts as a reference
# to free().  So the dynamic memory allocation code is linked
# in regardless of whether it gets explicitly called. This
# increases code and data size needlessly.
# To defeat this undesirable behaviour, we define empty versions
# of delete and delete[].  But doing this prevents proper use
# of dynamic memory in C++ programs via C++'s new and delete
# operators.
# Therefore, this option is provided
# for explicitly disabling the provision of these empty functions,
# so that new and delete can be used, if that is what is required.
#
cdl_option CYGFUN_INFRA_EMPTY_DELETE_FUNCTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Threshold for valid number of delete calls
# Some users don't know about the empty delete function and then
# wonder why their C++ classes are leaking memory. If
# INFRA_DEBUG is enabled we keep a counter for the number of
# times delete is called. If it goes above this threshold we throw
# an assertion failure. This should point heavy users of
# delete in the right direction without upsetting those who want
# an empty delete function. 
#
cdl_option CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD {
    # This option is not active
    # ActiveIf constraint: CYGPKG_INFRA_DEBUG
    #     CYGPKG_INFRA_DEBUG == 0
    #   --> 0

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 100
    # value_source default
    # Default value: 100
};

# Provide dummy abort() function
# This option controls the inclusion of a dummy abort() function.
# Parts of the C and C++ compiler runtime systems contain references
# to abort(), particulary in the C++ exception handling code. It is
# not possible to eliminate these references, so this dummy function
# in included to satisfy them. It is not expected that this function
# will ever be called, so its current behaviour is to simply loop.
#
cdl_option CYGFUN_INFRA_DUMMY_ABORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_ISO_EXIT == 0 
    #     CYGINT_ISO_EXIT == 1
    #   --> 0
    # Requires: !CYGINT_ISO_EXIT
    #     CYGINT_ISO_EXIT == 1
    #   --> 0
};

# Reset platform at end of test case execution
# If this option is set then test case programs will reset the platform
# when they terminate, as opposed to the default which is to just hang
# in a loop.
#
cdl_option CYGSEM_INFRA_RESET_ON_TEST_EXIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Provide dummy strlen() function
# This option controls the inclusion of a dummy strlen() function.
# Parts of the C and C++ compiler runtime systems contain references
# to strlen(), particulary in the C++ exception handling code. It is
# not possible to eliminate these references, so this dummy function
# in included to satisfy them. While it is not expected that this function
# will ever be called, it is functional but uses the simplest, smallest
# algorithm. There is a faster version of strlen() in the C library.
#
cdl_option CYGFUN_INFRA_DUMMY_STRLEN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYGINT_ISO_STRING_STRFUNCS == 0 
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 0
    # Requires: !CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 0
};

# Make all compiler warnings show as errors
# Enabling this option will cause all compiler warnings to show
# as errors and bring the library build to a halt. This is used
# to ensure that the code base is warning free, and thus ensure
# that newly introduced warnings stand out and get fixed before
# they show up as weird run-time behavior.
#
cdl_option CYGBLD_INFRA_CFLAGS_WARNINGS_AS_ERRORS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  is_substr(CYGBLD_GLOBAL_CFLAGS, " -Werror") 
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #   --> 0
};

# Make compiler and assembler communicate by pipe
# Enabling this option will cause the compiler to feed the
# assembly output the the assembler via a pipe instead of
# via a temporary file. This normally reduces the build
# time.
#
cdl_option CYGBLD_INFRA_CFLAGS_PIPE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  is_substr(CYGBLD_GLOBAL_CFLAGS, " -pipe") 
    #     CYGBLD_GLOBAL_CFLAGS == "-Wall -Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual -Wno-write-strings -mcpu=cortex-m4 -mthumb -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions"
    #   --> 0
};

# Infra build options
# Package specific build options including control over
# compiler flags used only in building this package.
#
cdl_component CYGPKG_INFRA_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the eCos infra package. These flags are used
# in addition to the set of global flags.
#
cdl_option CYGPKG_INFRA_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the eCos infra package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_INFRA_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed linker flags
# This option modifies the set of linker flags for
# building the eCos infra package tests. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_INFRA_LDFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -Wl,--gc-sections
    # value_source default
    # Default value: -Wl,--gc-sections
};

# Additional linker flags
# This option modifies the set of linker flags for
# building the eCos infra package tests. These flags are added to
# the set of global flags if present.
#
cdl_option CYGPKG_INFRA_LDFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -Wl,--fatal-warnings
    # value_source default
    # Default value: -Wl,--fatal-warnings
};

# Infra package tests
#
cdl_component CYGPKG_INFRA_TESTS {
    # Calculated value:  "tests/cxxsupp tests/diag_sprintf1 tests/diag_sprintf2" 
    # Flavor: data
    # Current_value: tests/cxxsupp tests/diag_sprintf1 tests/diag_sprintf2
};

# >
# Number of times a test runs
# This option controls the number of times tests will execute their
# basic function.  Not all tests will honor this setting, but those
# that do will execute the test N times before terminating.  A value
# less than 0 indicates to run forever.
#
cdl_option CYGNUM_TESTS_RUN_COUNT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# <
# <
# eCos kernel
# doc: ref/kernel.html
# This package contains the core functionality of the eCos
# kernel. It relies on functionality provided by various HAL
# packages and by the eCos infrastructure. In turn the eCos
# kernel provides support for other packages such as the device
# drivers and the uITRON compatibility layer.
#
cdl_package CYGPKG_KERNEL {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGFUN_HAL_COMMON_KERNEL_SUPPORT
    #     Requires: CYGPKG_KERNEL
    # option CYGFUN_HAL_COMMON_KERNEL_SUPPORT
    #     DefaultValue: CYGPKG_KERNEL
    # option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
    #     DefaultValue:  CYGPKG_KERNEL ? 4096 : 32768 
    # option CYGSEM_MEMALLOC_ALLOCATOR_FIXED_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_THREADAWARE
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_MEMALLOC_ALLOCATOR_SEPMETA_THREADAWARE
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGFUN_MEMALLOC_KAPI
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGSEM_LIBC_I18N_PER_THREAD_MB
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGSEM_LIBC_SIGNALS_THREAD_SAFE
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT
    #     DefaultValue:  0 == CYGPKG_KERNEL && 0 == 
    #                                 CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    # component CYGSEM_LIBC_STARTUP_MAIN_THREAD
    #     Requires: CYGPKG_KERNEL
    # component CYGSEM_LIBC_STARTUP_MAIN_THREAD
    #     DefaultValue:  0 != CYGPKG_KERNEL && 0 ==  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    # option CYGSEM_LIBC_EXIT_STOPS_SYSTEM
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK
    #     ActiveIf: CYGPKG_KERNEL
    # option CYGPKG_WALLCLOCK_EMULATE
    #     Requires: CYGPKG_KERNEL
    # option CYGIMP_WALLCLOCK_NONE
    #     DefaultValue:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    # option CYGPKG_IO_WALLCLOCK_TESTS
    #     Calculated:  CYGPKG_KERNEL ? "tests/wallclock tests/wallclock2" : "" 
    # option CYGHWR_HAL_CORTEXM_FPU_SWITCH
    #     Requires:  is_active (CYGPKG_KERNEL) implies
    #                         CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ==
    #                         (CYGHWR_HAL_CORTEXM_FPU_SWITCH == "NONE") 
    # option CYGPKG_HAL_CORTEXM_STM32_TESTS
    #     ActiveIf: CYGPKG_KERNEL
};

# >
# Kernel interrupt handling
# doc: ref/kernel-interrupts.html
# The majority of configuration options related to interrupt
# handling are in the HAL packages, since usually the code has
# to be platform-specific. There are a number of options
# provided within the kernel related to slightly higher-level
# concepts, for example Delayed Service Routines.
#
cdl_component CYGPKG_KERNEL_INTERRUPTS {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_INTR
    #     ActiveIf: CYGPKG_KERNEL_INTERRUPTS
};

# >
# Use delayed service routines (DSRs)
# In eCos the recommended way to handle device interrupts is to
# do a minimum amount of work inside the low level interrupt
# handler itself, and instead do as much as possible in a
# Delayed Service Routine or DSR. If an application does not
# make use of DSRs directly or indirectly then it is possible
# to disable the DSR support completely, which reduces the
# overheads of context switches and interrupt handling. Note
# that the kernel real-time clock makes use of DSRs, as do many
# of the device drivers. 
#
cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGVAR_KERNEL_COUNTERS_CLOCK
    #     Requires: CYGIMP_KERNEL_INTERRUPTS_DSRS
};

# >
#
cdl_interface CYGINT_KERNEL_INTERRUPTS_DSRS {
    # Implemented by CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST, active, enabled
    # Implemented by CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_KERNEL_INTERRUPTS_DSRS
    #     CYGINT_KERNEL_INTERRUPTS_DSRS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_KERNEL_INTERRUPTS_DSRS
    #     Requires: 1 == CYGINT_KERNEL_INTERRUPTS_DSRS
};

# Use linked lists for DSRs
# When DSR support is enabled the kernel must keep track of all
# the DSRs that are pending. This information can be kept in a
# fixed-size table or in a linked list. The list implementation
# requires that the kernel disable interrupts for a very short
# period of time outside interrupt handlers, but there is no
# possibility of a table overflow occurring.
#
cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Schedule DSRs in FIFO order
# When this option is set, DSRs are scheduled
# in the natural FIFO (first in, first out) order,
# otherwise they are scheduled in LIFO (last in, first
# out) order. Applications should not rely on any
# particular order of scheduling of DSRs. LIFO
# scheduling is kept for backward compatibility only and
# is not recommended as it may lead to high (up to 2
# times higher then FIFO) IRQ-to-DSR latencies at some
# (typically rare) conditions. If unsure, leave this set.
#
cdl_option CYGSEM_KERNEL_INTERRUPTS_DSRS_LIST_FIFO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use fixed-size table for DSRs
# When DSR support is enabled the kernel must keep track of all
# the DSRs that are pending. This information can be kept in a
# fixed-size table or in a linked list. The table
# implementation involves a very small risk of overflow at
# run-time if a given interrupt source is able to have more
# than one pending DSR. However it has the advantage that
# the kernel does not need to disable interrupts outside
# interrupt handlers.
#
cdl_component CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Number of entries in fixed-size DSR table
# When DSR support is enabled the kernel must keep track of all
# the DSRs that are pending. One approach involves a fixed-size
# table, which involves a very small risk of overflow at
# run-time. By increasing the table size it is possible to reduce
# this risk.
#
cdl_option CYGNUM_KERNEL_INTERRUPTS_DSRS_TABLE_SIZE {
    # This option is not active
    # The parent CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 2 to 1024
};

# <
# Chain all interrupts together
# Interrupts can be attached to vectors either singly, or be
# chained together. The latter is necessary if there is no way
# of discovering which device has interrupted without
# inspecting the device itself. It can also reduce the amount
# of RAM needed for interrupt decoding tables and code.
#
cdl_option CYGIMP_KERNEL_INTERRUPTS_CHAIN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
    #     CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN == 0
    #   --> 0
};

# <
# <
# Exception handling
# doc: ref/kernel-exceptions.html
# In the context of the eCos kernel exceptions are unexpected
# events detected by the hardware, for example an attempt to
# execute an illegal instruction. There is no relation with
# other forms of exception, for example the catch and throw
# facilities of languages like C++. It is possible to disable
# all support for exceptions and thus save some memory.
#
cdl_component CYGPKG_KERNEL_EXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_HAL_EXCEPTIONS
    #     CYGPKG_HAL_EXCEPTIONS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGPKG_HAL_EXCEPTIONS
    #     Requires: CYGPKG_KERNEL_EXCEPTIONS
    # option CYGPKG_HAL_EXCEPTIONS
    #     DefaultValue: CYGPKG_KERNEL_EXCEPTIONS
};

# >
# Decode exception types in kernel
# On targets where several different types of exception are
# possible, for example executing an illegal instruction and
# division by zero, it is possible for the kernel to do some
# decoding of the exception type and deliver the different
# types of exception to different handlers in the application
# code. Alternatively the kernel can simply pass all
# exceptions directly to application code, leaving the
# decoding to be done by the application
#
cdl_option CYGSEM_KERNEL_EXCEPTIONS_DECODE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # component CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS
    #     Requires: CYGSEM_KERNEL_EXCEPTIONS_DECODE
};

# Use global exception handlers
# In the context of the eCos kernel exceptions are
# unexpected events detected by the hardware, for
# example an attempt to execute an illegal
# instruction. If the kernel is configured
# to support exceptions then two implementations are
# possible. The default implementation involves a single set
# of exception handlers that are in use for the entire
# system. The alternative implementation allows different
# exception handlers to be specified for each thread.
#
cdl_option CYGSEM_KERNEL_EXCEPTIONS_GLOBAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS
    #     Requires: CYGSEM_KERNEL_EXCEPTIONS_GLOBAL
};

# <
# Kernel schedulers
# doc: ref/kernel-overview.html#KERNEL-OVERVIEW-SCHEDULERS
# The eCos kernel provides a choice of schedulers. In addition
# there are a number of configuration options to control the
# detailed behaviour of these schedulers.
#
cdl_component CYGPKG_KERNEL_SCHED {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_SCHED
    #     ActiveIf: CYGPKG_KERNEL_SCHED
};

# >
# Number of schedulers in this configuration
#
cdl_interface CYGINT_KERNEL_SCHEDULER {
    # Implemented by CYGSEM_KERNEL_SCHED_MLQUEUE, active, enabled
    # Implemented by CYGSEM_KERNEL_SCHED_BITMAP, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_KERNEL_SCHEDULER
    #     CYGINT_KERNEL_SCHEDULER == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_KERNEL_SCHEDULER
    #     Requires: 1 == CYGINT_KERNEL_SCHEDULER
};

# Non-zero if the active schedule only has unique priorities
# Not all schedulers allow mutiple threads to use the same
# priority. That property is signalled via this option, allowing
# scheduler and tests to behave accordingly.
#
cdl_interface CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES {
    # Implemented by CYGSEM_KERNEL_SCHED_BITMAP, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL
    #     Requires:  CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0 
};

# Multi-level queue scheduler
# The multi-level queue scheduler supports multiple priority
# levels and multiple threads at each priority level.
# Preemption between priority levels is automatic. Timeslicing
# within a given priority level is controlled by a separate
# configuration option.
#
cdl_component CYGSEM_KERNEL_SCHED_MLQUEUE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGPRI_KERNEL_SCHED_IMPL_HXX
    #     Calculated:   CYGSEM_KERNEL_SCHED_BITMAP  ? "<cyg/kernel/bitmap.hxx>"  : CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" : CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" : "!!!-- Configuration broken - no scheduler selected --!!!"
    # component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL
    #     ActiveIf:  CYGSEM_KERNEL_SCHED_MLQUEUE 
    # option CYGDBG_KERNEL_INSTRUMENT_MLQ
    #     ActiveIf: CYGSEM_KERNEL_SCHED_MLQUEUE
};

# >
# Output timeslices when tracing
# When tracing is enabled, output trace messages every
# timeslice. This can be quite verbose so is disabled by
# default.
#
cdl_option CYGDBG_KERNEL_TRACE_TIMESLICE {
    # This option is not active
    # ActiveIf constraint: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE
    #     CYGDBG_INFRA_DEBUG_TRACE_ASSERT_SIMPLE == 0
    #   --> 1
    # Requires: !CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY
    #     CYGDBG_INFRA_DEBUG_TRACE_ASSERT_FANCY == 0
    #   --> 1
};

# <
# Bitmap scheduler
# The bitmap scheduler supports multiple priority levels but
# only one thread can exist at each priority level. This means
# that scheduling decisions are very simple and hence the
# scheduler is efficient. Preemption between priority levels is
# automatic. Timeslicing within a given priority level is
# irrelevant since there can be only one thread at each
# priority level.
#
cdl_option CYGSEM_KERNEL_SCHED_BITMAP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGPKG_KERNEL_SMP_SUPPORT
    #     CYGPKG_KERNEL_SMP_SUPPORT == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGPRI_KERNEL_SCHED_IMPL_HXX
    #     Calculated:   CYGSEM_KERNEL_SCHED_BITMAP  ? "<cyg/kernel/bitmap.hxx>"  : CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" : CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" : "!!!-- Configuration broken - no scheduler selected --!!!"
    # component CYGSEM_KERNEL_SCHED_TIMESLICE
    #     Requires: !CYGSEM_KERNEL_SCHED_BITMAP
    # option CYGDBG_KERNEL_INSTRUMENT_BITMAP
    #     ActiveIf: CYGSEM_KERNEL_SCHED_BITMAP
};

# Scheduler header file
# This option sets a preprocessor symbol which names the header
# file for the selected scheduler.  It is used internally by the
# common scheduler code to include the correct header file.
#
cdl_option CYGPRI_KERNEL_SCHED_IMPL_HXX {
    # Calculated value:   CYGSEM_KERNEL_SCHED_BITMAP  ? "<cyg/kernel/bitmap.hxx>"  : CYGSEM_KERNEL_SCHED_MLQUEUE ? "<cyg/kernel/mlqueue.hxx>" : CYGSEM_KERNEL_SCHED_LOTTERY ? "<cyg/kernel/lottery.hxx>" : "!!!-- Configuration broken - no scheduler selected --!!!"
    #     CYGSEM_KERNEL_SCHED_BITMAP == 0
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #     CYGSEM_KERNEL_SCHED_LOTTERY (unknown) == 0
    # Flavor: data
    # Current_value: <cyg/kernel/mlqueue.hxx>
};

# Number of priority levels
# This option controls the number of priority levels that are
# available. For some types of scheduler including the bitmap
# scheduler this may impose an upper bound on the number of
# threads in the system. For other schedulers such as the
# mlqueue scheduler the number of threads is independent from
# the number of priority levels. Note that the lowest priority
# level is normally used only by the idle thread, although
# application threads can run at this priority if necessary.
#
cdl_component CYGNUM_KERNEL_SCHED_PRIORITIES {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 1 to 32

    # The following properties are affected by this value
    # option CYGIMP_IDLE_THREAD_YIELD
    #     ActiveIf: (CYGNUM_KERNEL_SCHED_PRIORITIES == 1)
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY
    #     LegalValues: 0 to  CYGNUM_KERNEL_SCHED_PRIORITIES - 1 
};

# >
# Bitmap size
# This option automatically defines the size of bitmap
# used to track occupied priority levels.
#
cdl_option CYGNUM_KERNEL_SCHED_BITMAP_SIZE {
    # Calculated value: "CYGNUM_KERNEL_SCHED_PRIORITIES"
    # Flavor: data
    # Current_value: CYGNUM_KERNEL_SCHED_PRIORITIES
};

# Dequeue highest priority threads first
# With this option enabled, threads queued in a thread queue
# will be dequeued in priority order, rather than first in,
# first out (FIFO). Threads of equal priority are dequeued
# oldest first. The only exception is the scheduler run 
# queues where order is less important as each is already
# sorted by priority. Note that this makes the thread queueing
# less deterministic.
#
cdl_option CYGIMP_KERNEL_SCHED_SORTED_QUEUES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Scheduler timeslicing
# Some schedulers including the mlqueue scheduler support
# timeslicing. This means that the kernel will check regularly
# whether or not there is another runnable thread with the
# same priority, and if there is such a thread there will be
# an automatic context switch. Not all applications require
# timeslicing, for example because every thread performs a
# blocking operation regularly. For these applications it is
# possible to disable timeslicing, which reduces the overheads
# associated with timer interrupts.
#
cdl_component CYGSEM_KERNEL_SCHED_TIMESLICE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: !CYGSEM_KERNEL_SCHED_BITMAP
    #     CYGSEM_KERNEL_SCHED_BITMAP == 0
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
};

# >
# Number of clock ticks between timeslices
# Assuming timeslicing is enabled, how frequently should it
# take place? The value of this option corresponds to the
# number of clock ticks that should occur before a timeslice
# takes place, so increasing the value reduces the frequency
# of timeslices.
#
cdl_option CYGNUM_KERNEL_SCHED_TIMESLICE_TICKS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 5
    # value_source default
    # Default value: 5
    # Legal values: 1 to 65535
};

# Support runtime enable of timeslice per-thread
# This option makes timslicing a per-thread runtime
# option. When enabled, threads may have timeslicing
# turned on or off dynamically. This is generally used
# by higher level APIs (such as POSIX) to implement
# differing scheduling policies.
#
cdl_option CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: false
    #     false (unknown) == 0
    #   --> 0
};

# <
# Enable ASR support
# This component controls support for Asynchronous Service
# Routines (ASRs). This is a function that may be called
# from the scheduler when it has just exited the scheduler
# lock. This is primarily for use by API compatibility layers.
#
cdl_component CYGSEM_KERNEL_SCHED_ASR_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: false
    #     false (unknown) == 0
    #   --> 0
};

# >
# Make ASR function global
# This option controls whether the ASR function is shared by
# all threads, or whether each thread may have its own ASR
# function.
#
cdl_option CYGSEM_KERNEL_SCHED_ASR_GLOBAL {
    # This option is not active
    # The parent CYGSEM_KERNEL_SCHED_ASR_SUPPORT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: true
    #     true (unknown) == 0
    #   --> 0
};

# Make ASR data global
# This option controls whether the ASR data is shared by
# all threads, or whether each thread may have its own ASR
# data. This is independent of the previous option because
# it may be useful to pass per-thread data to a shared ASR
# function.
#
cdl_option CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL {
    # This option is not active
    # The parent CYGSEM_KERNEL_SCHED_ASR_SUPPORT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: true
    #     true (unknown) == 0
    #   --> 0
};

# <
# <
# SMP support
#
cdl_component CYGPKG_KERNEL_SMP_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_HAL_SMP_SUPPORT
    #     CYGPKG_HAL_SMP_SUPPORT (unknown) == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SCHED_BITMAP
    #     Requires: !CYGPKG_KERNEL_SMP_SUPPORT
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
};

# Counters and clocks
# doc: ref/kernel-counters.html
# The counter objects provided by the kernel provide an
# abstraction of the clock facility that is generally provided.
# Application code can associate alarms with counters, where an
# alarm is identified by the number of ticks until it triggers,
# the action to be taken on triggering, and whether or not the
# alarm should be repeated.
#
cdl_component CYGPKG_KERNEL_COUNTERS {
    # There is no associated value.
};

# >
# Provide real-time clock
# On all current target systems the kernel can provide a
# real-time clock. This clock serves two purposes. First it is
# necessary to support clock and alarm related functions.
# Second it is needed to implement timeslicing in some of the
# schedulers including the mlqueue scheduler. If the
# application does not require any of these facilities then it
# is possible to disable the real time clock support
# completely.
#
cdl_option CYGVAR_KERNEL_COUNTERS_CLOCK {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGIMP_KERNEL_INTERRUPTS_DSRS
    #     CYGIMP_KERNEL_INTERRUPTS_DSRS == 1
    #   --> 1

    # The following properties are affected by this value
    # component CYGSEM_KERNEL_SCHED_TIMESLICE
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGNUM_KERNEL_COUNTERS_CLOCK_ISR_PRIORITY
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGFUN_KERNEL_THREADS_TIMER
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGDBG_KERNEL_INSTRUMENT_CLOCK
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGDBG_KERNEL_INSTRUMENT_ALARM
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGDBG_KERNEL_INSTRUMENT_SMP
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # component CYGPKG_HAL_TESTS
    #     Calculated:   "tests/context tests/basic"
    #                           . ((!CYGINT_HAL_TESTS_NO_CACHES) ? " tests/cache" : "")
    #                           . ((CYGPKG_HAL_BUILD_COMPILER_TESTS) ? " tests/cpp1 tests/vaargs" : "")
    #                           . ((!CYGVAR_KERNEL_COUNTERS_CLOCK) ?   " tests/intr" : "") 
    # option CYGSEM_LIBC_TIME_CLOCK_WORKING
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
};

# Interrupt priority for the real-time clock
# The implementation of the kernel's real-time clock typically
# involves installing an interrupt handler on a suitable hardware
# timer. This option controls the priority level used for that
# interrupt. On most platforms the value is not important because 
# the clock ISR leaves most of the work to be done by the DSR. 
# However some processors have interrupt controllers with special
# requirements for the interrupt priorities, in which case
# application developers must be able to manipulate the clock's
# priority.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_ISR_PRIORITY {
    # ActiveIf constraint: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x000000E0
    # value_source default
    # Default value:  is_loaded(CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY) ?
    #      	                      CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY : 1 
    #     CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY == 0x000000E0
    #     CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY == 0x000000E0
    #   --> 0x000000E0
};

#
cdl_interface CYGINT_KERNEL_COUNTERS {
    # Implemented by CYGIMP_KERNEL_COUNTERS_SINGLE_LIST, active, enabled
    # Implemented by CYGIMP_KERNEL_COUNTERS_MULTI_LIST, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_KERNEL_COUNTERS
    #     CYGINT_KERNEL_COUNTERS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_KERNEL_COUNTERS
    #     Requires: 1 == CYGINT_KERNEL_COUNTERS
};

# Implement counters using a single list
# There are two different implementations of the counter
# objects. The first implementation stores all alarms in a
# single linked list. The alternative implementation uses a
# table of linked lists. A single list is more efficient in
# terms of memory usage and is generally adequate when the
# application only makes use of a small number of alarms.
#
cdl_option CYGIMP_KERNEL_COUNTERS_SINGLE_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Implement counters using a table of lists
# There are two different implementations of the counter
# objects. The first implementation stores all alarms in a
# single linked list. The alternative implementation uses a
# table of linked lists, with the size of the table being a
# separate configurable option. For more complicated
# operations it is better to have a table of lists since this
# reduces the amount of computation whenever the timer goes
# off. Assuming a table size of 8 (the default value) on
# average the timer code will only need to check 1/8 of the
# pending alarms instead of all of them.
#
cdl_component CYGIMP_KERNEL_COUNTERS_MULTI_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Size of counter list table
# If counters are implemented using an array of linked lists
# then this option controls the size of the array. A larger
# size reduces the amount of computation that needs to take
# place whenever the timer goes off, but requires extra
# memory.
#
cdl_option CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE {
    # This option is not active
    # The parent CYGIMP_KERNEL_COUNTERS_MULTI_LIST is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: 1 to 1024
};

# <
# Sort the counter list
# Sorting the counter lists reduces the amount of work that
# has to be done when a counter tick is processed, since the
# next alarm to expire is always at the front of the list.
# However, it makes adding an alarm to the list more expensive
# since a search must be done for the correct place to put it.
# Many alarms are used to implement timeouts, which seldom trigger,
# so it is worthwhile optimizing this case. For this reason
# sorted list are disabled by default.
#
cdl_option CYGIMP_KERNEL_COUNTERS_SORT_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Measure real-time [clock] interrupt latency
# Measure the interrupt latency as seen by the real-time clock
# timer interrupt.  This requires hardware support, defined by
# the HAL_CLOCK_LATENCY() macro.
#
cdl_option CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    # option CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY
    #     DefaultValue: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
};

# Measure real-time [clock] DSR latency
# Measure the DSR latency as seen by the real-time clock
# timer interrupt.  This requires hardware support, defined by
# the HAL_CLOCK_LATENCY() macro.
#
cdl_option CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    #     CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY == 0
    #   --> 0
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY
    #     CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY == 0
    #   --> 0
};

# RTC resolution
# This option automatically defines the tuple which is used to
# initialize the RTC resolution, consisting of a numerator and
# denominator. The values of the numerator and denominator are
# defined by the HAL.
#
cdl_option CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION {
    # Calculated value: "{CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}"
    # Flavor: data
    # Current_value: {CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}
};

# RTC period
# This option defines the RTC period to be used in
# setting the system clock hardware. It is essentially
# an alias for CYGNUM_HAL_RTC_PERIOD, which is defined
# in the HAL.
#
cdl_option CYGNUM_KERNEL_COUNTERS_RTC_PERIOD {
    # Calculated value: "CYGNUM_HAL_RTC_PERIOD"
    # Flavor: data
    # Current_value: CYGNUM_HAL_RTC_PERIOD
};

# <
# Thread-related options
# There are a number of configuration options related to the
# implementation of threads, for example whether or not the
# eCos kernel supports per-thread data.
#
cdl_component CYGPKG_KERNEL_THREADS {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_THREAD
    #     ActiveIf: CYGPKG_KERNEL_THREADS
};

# >
# Allow per-thread timers
# This option controls whether or not the kernel should support
# per-thread clock and alarm related functions. Also some of
# the synchronization primitives such as semaphore and
# condition variable timed wait operations require per-thread
# timer support. If none of these facilities are required then
# the option can be disabled.
#
cdl_option CYGFUN_KERNEL_THREADS_TIMER {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT
    #     Requires: CYGFUN_KERNEL_THREADS_TIMER
    # option CYGSEM_LIBC_TIME_CLOCK_WORKING
    #     Requires: CYGFUN_KERNEL_THREADS_TIMER
};

# Support optional name for each thread
# Threads may optionally be supplied with a name string that is
# used to identify them during debugging. This name is only
# present if `this option is defined. Disabling it reduces both
# code and data size.
#
cdl_option CYGVAR_KERNEL_THREADS_NAME {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Keep track of all threads using a linked list
# Threads may optionally be placed on a housekeeping list so
# that all threads may be located easily. This is useful mainly
# in conjunction with source-level debugging.
#
cdl_option CYGVAR_KERNEL_THREADS_LIST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGFUN_KERNEL_ALL_THREADS_STACK_CHECKING
    #     Requires: CYGVAR_KERNEL_THREADS_LIST
    # option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
    #     Requires: CYGVAR_KERNEL_THREADS_LIST
};

# Keep track of the base of each thread's stack
# This option makes the kernel keep track of the lower limit on
# each thread's stack. It allows the kernel to adjust the lower
# limit, thus making space for per-thread data. Note that it
# does not imply any form of run-time stack overflow checking.
#
cdl_option CYGFUN_KERNEL_THREADS_STACK_LIMIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGVAR_KERNEL_THREADS_DATA
    #     Requires: CYGFUN_KERNEL_THREADS_STACK_LIMIT
};

# Check thread stacks for overflows
# This option enables a variety of checks for stack overflow
# including signatures at the top and base of thread stacks,
# which are asserted for correctness whenever a thread switches.
#
cdl_component CYGFUN_KERNEL_THREADS_STACK_CHECKING {
    # This option is not active
    # ActiveIf constraint: CYGPKG_INFRA_DEBUG
    #     CYGPKG_INFRA_DEBUG == 0
    #   --> 0
    # ActiveIf constraint: CYGDBG_USE_ASSERTS
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Check all threads whenever possible
# This option enables more active checking of all threads for
# wrongdoing.  In theory, checking threads other than the old and new
# executing threads in a thread-switch is pointless, because no other
# thread has run, so no other stack can be exceeded.  But errors such
# as memory scribbling, dangling pointers, overlapping use of store
# or errors accessing objects adjacent to a stack which can be very
# hard to find can be detected this way, saving debug time.
#
cdl_option CYGFUN_KERNEL_ALL_THREADS_STACK_CHECKING {
    # This option is not active
    # The parent CYGFUN_KERNEL_THREADS_STACK_CHECKING is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_THREADS_LIST
    #     CYGVAR_KERNEL_THREADS_LIST == 1
    #   --> 1
};

# Signature size in bytes, at stack top and bottom
# This is the size of the area reserved for a signature at the top
# and bottom of all stacks.  It also provides a buffer zone for
# detecting overflow before external objects are corrupted, hence the
# ability to vary it here.  But if you are short of stack, increasing
# this value will make the overflow more, not less likely, of course.
#
cdl_option CYGNUM_KERNEL_THREADS_STACK_CHECK_DATA_SIZE {
    # This option is not active
    # The parent CYGFUN_KERNEL_THREADS_STACK_CHECKING is not active

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 8 to 512
};

# <
# Measure stack usage
# This option allows measurement of each thread's stack by initializing
# it to a predefined value at thread creation time. Later use of the
# cyg_thread_measure_stack_usage() function allows the maximum stack
# usage of the thread so far to be obtained. Note that this is not
# necessarily the true maximum stack usage that the thread will ever
# use since all that has been measured is the stack usage corresponding
# to the code path followed this time, and not the code path that may
# be followed in future.
#
cdl_component CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGPKG_INFRA_DEBUG 
    #     CYGPKG_INFRA_DEBUG == 0
    #   --> 0
};

# >
# Output stack usage on thread exit
# This will output the measured stack usage on the diagnostic
# output when a thread exits.
#
cdl_option CYGDBG_KERNEL_THREADS_STACK_MEASUREMENT_VERBOSE_EXIT {
    # This option is not active
    # The parent CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Support for per-thread data
# doc: ref/kernel-thread-data.html
# It is possible for the kernel to support per-thread data, in
# other words an area of memory specific to each thread which
# can be used to store data for that thread. This per-thread
# data can be used by applications or by other packages such as
# the ISO C library.
#
cdl_component CYGVAR_KERNEL_THREADS_DATA {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_STACK_LIMIT
    #     CYGFUN_KERNEL_THREADS_STACK_LIMIT == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_I18N_PER_THREAD_MB
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBC_I18N_PER_THREAD_MB
    #     DefaultValue:  CYGVAR_KERNEL_THREADS_DATA != 0 
    # option CYGSEM_LIBC_PER_THREAD_RAND
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK
    #     DefaultValue: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBM_THREAD_SAFE_GAMMA_FUNCTIONS
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_ERROR_PER_THREAD_ERRNO
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
};

# >
# Number of words of per-thread data
# It is possible for the kernel to support per-thread data, in
# other words an area of memory specific to each thread which
# can be used to store data for that thread. This per-thread
# data can be used by applications or by other packages such as
# the ISO C library. This configuration option controls the
# number of words of per-thread data that the kernel will
# allow. In the current implementation a bitmask is used to identify
# used per-thread data slots and so the maximum legal value must
# remain 32.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 6
    # value_source default
    # Default value: 6
    # Legal values: 4 to 32
};

# Bitmap of preallocated slots of thread data
# Per thread data options. Per thread data support is based loosely
# on that defined by POSIX. Each thread has an array of slots, up to
# CYGNUM_KERNEL_THREADS_DATA_MAX, that may contain data. Some of the
# slots have been preallocated to specific packages. Others may be
# allocated dynamically.
#
cdl_component CYGNUM_KERNEL_THREADS_DATA_ALL {
    # Calculated value: 15
    # Flavor: data
    # Current_value: 15
};

# >
# Slot 0 preallocated for the kernel
# This option defines the index of a per-thread data
# slot which is reserved by
# the eCos kernel
# for private use.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_KERNEL {
    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
};

# Slot 1 preallocated for uITRON
# This option defines the index of a per-thread data
# slot which is reserved by
# the uITRON compatibility layer
# for private use.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_ITRON {
    # Calculated value: 1
    # Flavor: data
    # Current_value: 1
};

# Slot 2 preallocated for errno
# This option defines the index of a per-thread data
# slot which is reserved for use by an errno variable.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_ERRNO {
    # Calculated value: 2
    # Flavor: data
    # Current_value: 2
};

# Slot 3 preallocated for POSIX
# This option defines the index of a per-thread data
# slot which is reserved by
# POSIX
# for private use.
#
cdl_option CYGNUM_KERNEL_THREADS_DATA_POSIX {
    # Calculated value: 3
    # Flavor: data
    # Current_value: 3
};

# <
# <
# Thread destructors
# doc: ref/kernel-thread-destructors.html
# This option enables support for registered destructor functions to
# be called on thread exit.
#
cdl_component CYGPKG_KERNEL_THREADS_DESTRUCTORS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Number of possible destructors
# This option gives the number of possible destructors allowed.
# Increasing this will increase the size of every
# thread control structure if per-thread destructors are
# enabled.
#
cdl_option CYGNUM_KERNEL_THREADS_DESTRUCTORS {
    # This option is not active
    # The parent CYGPKG_KERNEL_THREADS_DESTRUCTORS is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: 1 to 65535
};

# Per-thread destructors
# Enabling this option makes the thread destructors a per-thread
# property, with each thread having its own list of destructors.
# Disabling this option makes the thread destructor list
# global so all threads have the same destructors.
#
cdl_option CYGSEM_KERNEL_THREADS_DESTRUCTORS_PER_THREAD {
    # This option is not active
    # The parent CYGPKG_KERNEL_THREADS_DESTRUCTORS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Stack size for the idle thread
# This configuration option specifies the stack size in bytes
# for the idle thread. Unless the HAL is configured to use a
# separate interrupt stack this size must be sufficient to meet
# the requirements of all interrupt handlers - these
# requirements are cumulative if nested interrupted are
# enabled. Depending on the target architecture, the stack size
# typically has to be a multiple of eight or sixteen bytes.
# This will be overridden where it is used if the
# architectural HAL requires a minimum stack size
# to handle interrupts correctly.
#
cdl_option CYGNUM_KERNEL_THREADS_IDLE_STACK_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 2048
    # value_source default
    # Default value: 2048
    # Legal values: 512 to 65536
};

# Maximal suspend count
# This option provides for an assertion that the count value for
# counted thread suspends do not exceed set limits.  This is to help
# with debugging, to allow a runaway loop, for example, to be
# detected more easily.
# If the option is not defined, no assert is included.  Whether asserts
# are themselves included depends on infrastructure configury in
# infra.h
#
cdl_option CYGNUM_KERNEL_MAX_SUSPEND_COUNT_ASSERT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 500
    # value_source default
    # Default value: 500
};

# Maximal wake count
# This option provides for an assertion that the count value for
# counted thread wakeups do not exceed set limits.  This is to
# help with debugging, to allow a runaaway loop, for example, to
# be detected more easily.
# If the option is not defined, no assert is included.  Whether asserts
# are themselves included depends on infrastructure configury in
# infra.h
#
cdl_option CYGNUM_KERNEL_MAX_COUNTED_WAKE_COUNT_ASSERT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 500
    # value_source default
    # Default value: 500
};

# Idle thread must always yield
# If the scheduler configuration only has a single priority
# level, then the idle thread must yield each time around its loop.
#
cdl_option CYGIMP_IDLE_THREAD_YIELD {
    # This option is not active
    # ActiveIf constraint: (CYGNUM_KERNEL_SCHED_PRIORITIES == 1)
    #     CYGNUM_KERNEL_SCHED_PRIORITIES == 32
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# <
# Synchronization primitives
# The eCos kernel supports a number of different
# synchronization primitives such as mutexes, semaphores,
# condition variables, and message boxes. There are
# configuration options to control the exact behaviour of some
# of these synchronization primitives.
#
cdl_component CYGPKG_KERNEL_SYNCH {
    # There is no associated value.

    # The following properties are affected by this value
    # option CYGDBG_KERNEL_INSTRUMENT_MUTEX
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_CONDVAR
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_BINSEM
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_CNTSEM
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_MBOXT
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
    # option CYGDBG_KERNEL_INSTRUMENT_FLAG
    #     ActiveIf: CYGPKG_KERNEL_SYNCH
};

# >
# Priority inversion protection protocols
# doc: ref/kernel-mutexes.html
# This component controls the protocols used to protect mutexes against
# priority inversion. If this option is enabled it defines which
# algorithm is used to implement this protection. At present only
# one such algorithm is defined: "SIMPLE". The implementation
# will only work in the mlqueue scheduler, and it does not handle the
# rare case of nested mutexes completely correctly. However it is
# both fast and deterministic.
#
cdl_component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL {
    # ActiveIf constraint:  CYGSEM_KERNEL_SCHED_MLQUEUE 
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #   --> 1

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 SIMPLE
    # value_source default
    # Default value: 1 SIMPLE
    # Legal values:  "SIMPLE" 
    # Requires:  CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0 
    #     CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES == 0
    #   --> 1
};

# >
# Enable priority inheritance protocol
# This option enables priority inheritance protocol. This protocol
# causes the owner of a mutex to be executed at the highest priority
# of the threads waiting for access to the mutex.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT
    #     DefaultValue:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
};

# Enable priority ceiling protocol
# This option enables priority ceiling protocol. This protocol
# causes the owner of a mutex to be executed at a  priority
# associated with the mutex.
#
cdl_component CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY
    #     ActiveIf: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT
    #     DefaultValue:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
};

# >
# Default priority ceiling
# This option defines the default priority ceiling to be
# used if the chosen default priority inversion protocol is
# priority ceoptioniling protocol. The default value for this is zero,
# making all such mutexes boost threads to the maximum priority.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT_PRIORITY {
    # ActiveIf constraint: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING == 1
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to  CYGNUM_KERNEL_SCHED_PRIORITIES - 1 
    #     CYGNUM_KERNEL_SCHED_PRIORITIES == 32
};

# <
# No priority inversion protocol
# This option enables the ability to have no priority inversion protocol.
# It is equivalent to disabling the priority inversion protocol at
# the top level, but is necessary for the runtime and default
# selection options.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_NONE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Default priority inversion protocol
# This option defines the default inversion protocol used for mutexes that
# are created without an explicit protocol being specified. The protocol
# chosen by default is to use priority inheritance if it is present otherwise
# priority ceiling, or none if neither is present.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT {
    # ActiveIf constraint:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
    #     CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT == 3
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value INHERIT
    # value_source default
    # Default value:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT == 1
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING == 1
    #   --> INHERIT
    # Legal values:  "INHERIT" "CEILING" "NONE" 
};

# Specify mutex priority inversion protocol at runtime
# This option controls whether the priority inversion protocol used by
# a mutex can be specified when that mutex is created.
#
cdl_option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC {
    # ActiveIf constraint:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
    #     CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT == 3
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Number of protocols selected
#
cdl_interface CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT {
    # Implemented by CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT, active, enabled
    # Implemented by CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING, active, enabled
    # Implemented by CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_NONE, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 3

    # The following properties are affected by this value
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT
    #     ActiveIf:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
    # option CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC
    #     ActiveIf:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
};

# <
# Use mboxt_plain mbox implementation
# Use the plain mboxt implementation instead of the mboxt2
# implementation. The mboxt2 version is designed to provide
# semantics compatible with UITRON, the plain implementation
# is adquate in most other situations.
#
cdl_option CYGIMP_MBOX_USE_MBOXT_PLAIN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Message box blocking put support
# doc: ref/kernel-mail-boxes.html
# Message boxes can support three different versions of the
# put-message operation. The first is tryput(), which will fail
# if the message box is already full. The other two are the
# ordinary put() function which will block if the message box
# is full, and a timed put() operation which will block for
# upto a certain length of time if the message box is currently
# full. The blocking versions require extra memory in the
# message box data structure and extra code in the other
# message box functions, so they can be disabled if the
# application does not require them. If this option is enabled
# then the system will always provide the blocking put()
# function, and it will also provide the timed put() function
# if thread timers are enabled.
#
cdl_option CYGMFN_KERNEL_SYNCH_MBOXT_PUT_CAN_WAIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Message box queue size
# doc: ref/kernel-mail-boxes.html
# This configuration option controls the number of messages
# that can be queued in a message box before a non-blocking
# put() operation will fail or a blocking put() operation will
# block. The cost in memory is one pointer per message box for
# each possible message.
#
cdl_option CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 10
    # value_source default
    # Default value: 10
    # Legal values: 1 to 65535
};

# Condition variable timed-wait support
# doc: ref/kernel-condition-variables.html
# This option enables the condition variable timed wait
# facility.
#
cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_TIMER
    #     CYGFUN_KERNEL_THREADS_TIMER == 1
    #   --> 1
};

# Condition variable explicit mutex wait support
# doc: ref/kernel-condition-variables.html
# This option enables the condition variable explicit mutex wait
# facility. By default condition variables in eCos are created with
# a statically associated mutex. This option permits wait (and timed wait
# if CYGMFN_KERNEL_SYNCH_CONDVAR_TIMED_WAIT is enabled) to provide a
# different mutex as an argument. This makes no difference to the semantics
# the wait operation except that a different mutex will be used during it.
#
cdl_option CYGMFN_KERNEL_SYNCH_CONDVAR_WAIT_MUTEX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Avoid inlines in mqueue implementation
# With this option disabled, the 'mqueue' message queue implementation
# provides most of its implementation via inlines. However this can
# adversely affect code size in application that make lots of mqueue
# calls from different places, so enabling this option provides
# non-inline versions to be used instead.
#
cdl_option CYGIMP_KERNEL_SYNCH_MQUEUE_NOT_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Kernel instrumentation
# doc: user-guide/kernel-instrumentation.html
# The current release of the kernel contains an initial version
# of instrumentation support. The various parts of the kernel
# will invoke instrumentation routines whenever appropriate
# events occur, and these will be stored in a circular buffer
# for later reference.
#
cdl_component CYGPKG_KERNEL_INSTRUMENT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
};

# >
# Use buffer provided by the application
# In most circumstances the kernel should provide the
# instrumentation circular buffer itself. Occasionally
# application code may wish to provide the buffer instead,
# giving the application code more convenient access to the
# buffer. This also makes it possible to put the circular
# buffer in special areas of memory, for example a region that
# is shared with the host.
#
cdl_option CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Instrumentation buffer size
# If kernel instrumentation is enabled then the instrumentation
# data goes into a circular buffer. A larger buffer allows
# more data to be stored, but at a significant cost in memory.
# The value of this option corresponds to the number of entries
# in the table, and typically each entry will require 16 bytes
# of memory.
#
cdl_option CYGNUM_KERNEL_INSTRUMENT_BUFFER_SIZE {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 256
    # value_source default
    # Default value: 256
    # Legal values: 16 to 0x100000
};

# Wrap instrumentation buffer
# When the instrumentation buffer is full it can either be restarted
# from the beginning, overwriting older data, or it can stop at the
# end. The former is useful if you want to look at the last entries
# made while the latter is useful if you want to look at the first
# few.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_BUFFER_WRAP {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Perform selective instrumentation
# The kernel can either collect all instrumentation events, or
# it can filter out events at runtime based on a set of flags.
# For example it would be possible to decide at runtime that
# only scheduler and interrupt instrumentation flags are of
# interest and that all other flags should be ignored. This
# flag mechanism involves extra code and processor cycle
# overhead in the instrumentation code, so it can be disabled
# if the application developer is interested in all
# instrumentation events.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_FLAGS {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument common scheduler operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the scheduling code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_SCHED {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SCHED
    #     CYGPKG_KERNEL_SCHED == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument thread operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code that manipulates threads.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_THREAD {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_THREADS
    #     CYGPKG_KERNEL_THREADS == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument interrupt-related operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the interrupt handling code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_INTR {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_INTERRUPTS
    #     CYGPKG_KERNEL_INTERRUPTS == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument mutex operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the mutex code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_MUTEX {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument condition variable operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the condition variable code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_CONDVAR {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument binary semaphore operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the binary semaphore code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_BINSEM {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument counting semaphore operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the counting semaphore code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_CNTSEM {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument message box operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the message box code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_MBOXT {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument event flag operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the event flag code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_FLAG {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGPKG_KERNEL_SYNCH
    #     CYGPKG_KERNEL_SYNCH == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument clock operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the real-time clock code.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_CLOCK {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument alarm-related operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code related to alarm operations.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_ALARM {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument SMP-related operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code related to SMP operations.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_SMP {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument multi-level queue scheduler operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code for the multi-level queue scheduler.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_MLQ {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGSEM_KERNEL_SCHED_MLQUEUE
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Instrument bitmap scheduler operations
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not instrumentation support is compiled into
# the code for the bitmap scheduler.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_BITMAP {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled
    # ActiveIf constraint: CYGSEM_KERNEL_SCHED_BITMAP
    #     CYGSEM_KERNEL_SCHED_BITMAP == 0
    #   --> 0

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Support application-level instrumentation
# It is possible to perform selective instrumentation at
# run-time. It is also possible to disable instrumentation
# in various kernel components at compile-time, thus
# reducing the code size overheads. This option controls
# whether or not application-level instrumentation gets
# compiled in.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_USER {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Provide user-friendly instrumentation messages
# Include code which will convert the instrument type field 
# into a more human understandable string
#
cdl_component CYGDBG_KERNEL_INSTRUMENT_MSGS {
    # This option is not active
    # The parent CYGPKG_KERNEL_INSTRUMENT is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Rebuild the header file
# Make (using a shell script) include/cyg/kernel/instrument_desc.h in
# your build tree; this is normally simply copied from the repository.
# If you make a permanent change to include/instrmnt.h, such that
# instrument_desc.h needs updating, it's up to you to first delete the
# master file
# ECOS_REPOSITORY/kernel/VERSION/include/instrument_desc.h
# in your source repository, make the new version by enabling this
# option then copy the new file
# back from your build place to its source in
# ECOS_REPOSITORY/kernel/VERSION/include/instrument_desc.h
# and/or commit this to any version control system that you use.
#
cdl_option CYGDBG_KERNEL_INSTRUMENT_MSGS_BUILD_HEADERFILE {
    # This option is not active
    # The parent CYGDBG_KERNEL_INSTRUMENT_MSGS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Build the host tool to print out a dump
# Generate a host program which can dump the instrumentation
# data in a human readable format. You have to somehow get the
# instrumentation buffer into a file on the host. 'Exercise for
# the reader' as university lecturers tend to say.
#
cdl_component CYGDBG_KERNEL_INSTRUMENT_BUILD_HOST_DUMP {
    # This option is not active
    # The parent CYGDBG_KERNEL_INSTRUMENT_MSGS is not active

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# <
# Source-level debugging support
# If the source level debugger gdb is to be used for debugging
# application code then it may be necessary to configure in support
# for this in the kernel.
#
cdl_component CYGPKG_KERNEL_DEBUG {
    # There is no associated value.
};

# >
# Include GDB multi-threading debug support
# This option enables some extra kernel code which is needed
# to support multi-threaded source level debugging.
#
cdl_option CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGVAR_KERNEL_THREADS_LIST
    #     CYGVAR_KERNEL_THREADS_LIST == 1
    #   --> 1
    # Requires: CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT 
};

# <
# Kernel APIs
# The eCos kernel is implemented in C++, so a C++ interface
# to the kernel is always available. There is also an optional
# C API. Additional API's may be provided in future versions.
#
cdl_component CYGPKG_KERNEL_API {
    # There is no associated value.
};

# >
# Provide C API
# The eCos kernel is implemented in C++, but there is an
# optional C API for use by application code. This C API can be
# disabled if the application code does not invoke the kernel
# directly, but instead uses higher level code such as the
# uITRON compatibility layer.
#
cdl_option CYGFUN_KERNEL_API_C {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    # option CYGFUN_MEMALLOC_KAPI
    #     DefaultValue: CYGFUN_KERNEL_API_C
};

# <
# Kernel build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_KERNEL_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the eCos kernel. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_KERNEL_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the eCos kernel. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_KERNEL_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Kernel tests
# This option specifies the set of tests for the eCos kernel.
#
cdl_component CYGPKG_KERNEL_TESTS {
    # Calculated value: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    #     CYGFUN_KERNEL_API_C == 1
    #     CYGPKG_INFRA_DEBUG == 0
    #     CYGPKG_KERNEL_INSTRUMENT == 0
    #     CYGFUN_KERNEL_API_C == 1
    #     CYGPKG_KERNEL_SMP_SUPPORT == 0
    #     CYGFUN_KERNEL_API_C == 1
    #     CYGINT_HAL_TESTS_NO_CACHES == 0
    #     CYGFUN_KERNEL_API_C == 1
    #     CYGFUN_KERNEL_API_C == 1
    #     CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST == 0
    # Flavor: data
    # Current_value: tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0 tests/dhrystone tests/kcache1 tests/kcache2 tests/fpint_thread_switch tests/fptest tests/fpinttestf tests/fpinttestf2
};

# >
# Suppress multi thread floating point test
# Hardware floating point configurations that do not
# preserve FPU context are supposed to fail multi thread FPU
# integrity tests. Setting this option to 1 shall suppress
# building of such tests and shall build single thread fpu
# integrity test instead.
#
cdl_option CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # component CYGPKG_KERNEL_TESTS
    #     Calculated: 
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/bin_sem3 tests/clock0 tests/clock1 tests/clockcnv tests/clocktruth tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kill tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/release tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2"
    #                     . ((CYGFUN_KERNEL_API_C) ? " tests/kclock0 tests/kclock1 tests/kexcept1 tests/kflag0 tests/kflag1 tests/kintr0 tests/klock tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/kmutex3 tests/kmutex4 tests/ksched1 tests/ksem0 tests/ksem1 tests/kthread0 tests/kthread1 tests/stress_threads tests/thread_gdb tests/timeslice tests/timeslice2 tests/tm_basic tests/kalarm0" : "")
    #                     . ((!CYGPKG_INFRA_DEBUG && !CYGPKG_KERNEL_INSTRUMENT && CYGFUN_KERNEL_API_C) ? " tests/dhrystone" : "")
    #                     . ((CYGPKG_KERNEL_SMP_SUPPORT && CYGFUN_KERNEL_API_C) ? " tests/smp" : "")
    #                     . ((!CYGINT_HAL_TESTS_NO_CACHES && CYGFUN_KERNEL_API_C) ? " tests/kcache1 tests/kcache2" : "")
    #                     . ((CYGFUN_KERNEL_API_C) ? (" tests/fpint_thread_switch" . (CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ? " tests/fpinttestf1" :
    #                        " tests/fptest tests/fpinttestf tests/fpinttestf2")) : "")
    #                 
    # option CYGHWR_HAL_CORTEXM_FPU_SWITCH
    #     Requires:  is_active (CYGPKG_KERNEL) implies
    #                         CYGTST_KERNEL_SKIP_MULTI_THREAD_FP_TEST ==
    #                         (CYGHWR_HAL_CORTEXM_FPU_SWITCH == "NONE") 
};

# <
# <
# <
# Dynamic memory allocation
# doc: ref/memalloc.html
# This package provides memory allocator infrastructure required for
# dynamic memory allocators, including the ISO standard malloc
# interface. It also contains some sample implementations.
#
cdl_package CYGPKG_MEMALLOC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
};

# >
# Memory allocator implementations
# This component contains configuration options related to the 
# various memory allocators available.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATORS {
    # There is no associated value.
};

# >
# Fixed block allocator
# This component contains configuration options related to the 
# fixed block memory allocator.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_FIXED {
    # There is no associated value.
};

# >
# Make thread safe
# With this option enabled, this allocator will be
# made thread-safe. Additionally allocation functions
# are made available that allow a thread to wait
# until memory is available.
#
cdl_option CYGSEM_MEMALLOC_ALLOCATOR_FIXED_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Simple variable block allocator
# This component contains configuration options related to the 
# simple variable block memory allocator. This allocator is not
# very fast, and in particular does not scale well with large
# numbers of allocations. It is however very compact in terms of
# code size and does not have very much overhead per allocation.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_VARIABLE {
    # There is no associated value.
};

# >
# Make thread safe
# With this option enabled, this allocator will be
# made thread-safe. Additionally allocation functions
# are added that allow a thread to wait until memory
# are made available that allow a thread to wait
# until memory is available.
#
cdl_option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Coalesce memory
# The variable-block memory allocator can perform coalescing
# of memory whenever the application code releases memory back
# to the pool. This coalescing reduces the possibility of
# memory fragmentation problems, but involves extra code and
# processor cycles.
#
cdl_option CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE
    #     Requires: CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE
};

# <
# Doug Lea's malloc
# This component contains configuration options related to the 
# port of Doug Lea's memory allocator, normally known as
# dlmalloc. dlmalloc has a reputation for being both fast
# and space-conserving, as well as resisting fragmentation well.
# It is a common choice for a general purpose allocator and
# has been used in both newlib and Linux glibc.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_DLMALLOC {
    # There is no associated value.
};

# >
# Debug build
# Doug Lea's malloc implementation has substantial amounts
# of internal checking in order to verify the operation
# and consistency of the allocator. However this imposes
# substantial overhead on each operation. Therefore this
# checking may be individually disabled.
#
cdl_option CYGDBG_MEMALLOC_ALLOCATOR_DLMALLOC_DEBUG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 != CYGDBG_USE_ASSERTS 
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0
    # Requires: CYGDBG_USE_ASSERTS
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0
};

# Make thread safe
# With this option enabled, this allocator will be
# made thread-safe. Additionally allocation functions
# are made available that allow a thread to wait
# until memory is available.
#
cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Support more than one instance
# Having this option disabled allows important
# implementation structures to be declared as a single
# static instance, allowing faster access. However this
# would fail if there is more than one instance of
# the dlmalloc allocator class. Therefore this option can
# be enabled if multiple instances are required. Note: as
# a special case, if this allocator is used as the
# implementation of malloc, and it can be determined there
# is more than one malloc pool, then this option will be
# silently enabled.
#
cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_SAFE_MULTIPLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Use system memmove() and memset()
# This may be used to control whether memset() and memmove()
# are used within the implementation. The alternative is
# to use some macro equivalents, which have been reported
# to be faster in some circumstances. The use of "MEMCPY"
# in the CDL option name is an anachronism and only
# present for backwards compatibility.
#
cdl_option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  (0 != CYGPKG_ISOINFRA) && (0 != CYGINT_ISO_STRING_MEMFUNCS) 
    #     CYGPKG_ISOINFRA == current
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_STRING_MEMFUNCS
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1
};

# Minimum alignment of allocated blocks
# This option controls the minimum alignment that the
# allocated memory blocks are aligned on, specified as
# 2^N. Note that using large mininum alignments can lead
# to excessive memory wastage.
#
cdl_option CYGNUM_MEMALLOC_ALLOCATOR_DLMALLOC_ALIGNMENT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 3 to 10
};

# <
# Variable block allocator with separate metadata
# This component contains configuration options related to the 
# variable block memory allocator with separate metadata.
#
cdl_component CYGPKG_MEMALLOC_ALLOCATOR_SEPMETA {
    # There is no associated value.
};

# >
# Make thread safe
# With this option enabled, this allocator will be
# made thread-safe. Additionally allocation functions
# are made available that allow a thread to wait
# until memory is available.
#
cdl_option CYGSEM_MEMALLOC_ALLOCATOR_SEPMETA_THREADAWARE {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# <
# Kernel C API support for memory allocation
# This option must be enabled to provide the extensions required
# to support integration into the kernel C API.
#
cdl_option CYGFUN_MEMALLOC_KAPI {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGFUN_KERNEL_API_C
    #     CYGFUN_KERNEL_API_C == 1
    #   --> 1
};

# malloc(0) returns NULL
# This option controls the behavior of malloc(0) ( or calloc with
# either argument 0 ). It is permitted by the standard to return
# either a NULL pointer or a unique pointer. Enabling this option
# forces a NULL pointer to be returned.
#
cdl_option CYGSEM_MEMALLOC_MALLOC_ZERO_RETURNS_NULL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Breakpoint site when running out of memory
# Whenever the system runs out of memory, it invokes this function
# before either going to sleep waiting for memory to become 
# available or returning failure.
#
cdl_option CYGSEM_MEMALLOC_INVOKE_OUT_OF_MEMORY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# malloc() and supporting allocators
# This component enables support for dynamic memory
# allocation as supplied by the functions malloc(),
# free(), calloc() and realloc(). As these
# functions are often used, but can have quite an
# overhead, disabling them here can ensure they
# cannot even be used accidentally when static
# allocation is preferred. Within this component are
# various allocators that can be selected for use
# as the underlying implementation of the dynamic
# allocation functions.
#
cdl_component CYGPKG_MEMALLOC_MALLOC_ALLOCATORS {
    # ActiveIf constraint: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Use external heap definition
# This option allows other components in the
# system to override the default system
# provision of heap memory pools. This should
# be set to a header which provides the equivalent
# definitions to <pkgconf/heaps.hxx>.
#
cdl_component CYGBLD_MEMALLOC_MALLOC_EXTERNAL_HEAP_H {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Use external implementation of joining multiple heaps
# The default implementation of joining multiple heaps
# is fine for the case where there are multiple disjoint
# memory regions of the same type. However, in a system
# there might be e.g. a small amount of internal SRAM and
# a large amount of external DRAM. The SRAM is faster and
# the DRAM is slower. An application can implement some 
# heuristic to choose which pool to allocate from. This
# heuristic can be highly application specific.
#
cdl_component CYGBLD_MEMALLOC_MALLOC_EXTERNAL_JOIN_H {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# malloc() allocator implementations
#
cdl_interface CYGINT_MEMALLOC_MALLOC_ALLOCATORS {
    # Implemented by CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE, active, disabled
    # Implemented by CYGIMP_MEMALLOC_MALLOC_DLMALLOC, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1 
    #     CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_MEMALLOC_MALLOC_ALLOCATORS
    #     Requires:  CYGINT_MEMALLOC_MALLOC_ALLOCATORS == 1 
};

# malloc() implementation instantiation data
# Memory allocator implementations that are capable of being
# used underneath malloc() must be instantiated. The code
# to do this is set in this option. It is only intended to
# be set by the implementation, not the user.
#
cdl_option CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value <cyg/memalloc/dlmalloc.hxx>
    # value_source default
    # Default value: <cyg/memalloc/dlmalloc.hxx>

    # The following properties are affected by this value
    # option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE
    #     Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/memvar.hxx>" 
    # option CYGIMP_MEMALLOC_MALLOC_DLMALLOC
    #     Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/dlmalloc.hxx>" 
};

# Simple variable block implementation
# This causes malloc() to use the simple
# variable block allocator.
#
cdl_option CYGIMP_MEMALLOC_MALLOC_VARIABLE_SIMPLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/memvar.hxx>" 
    #     CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER == <cyg/memalloc/dlmalloc.hxx>
    #   --> 0
    # Requires: CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE
    #     CYGSEM_MEMALLOC_ALLOCATOR_VARIABLE_COALESCE == 1
    #   --> 1
};

# Doug Lea's malloc implementation
# This causes malloc() to use a version of Doug Lea's
# malloc (dlmalloc) as the underlying implementation.
#
cdl_option CYGIMP_MEMALLOC_MALLOC_DLMALLOC {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER ==  "<cyg/memalloc/dlmalloc.hxx>" 
    #     CYGBLD_MEMALLOC_MALLOC_IMPLEMENTATION_HEADER == <cyg/memalloc/dlmalloc.hxx>
    #   --> 1
};

# <
# Size of the fallback dynamic memory pool in bytes
# If *no* heaps are configured in your memory layout,
# dynamic memory allocation by
# malloc() and calloc() must be from a fixed-size,
# contiguous memory pool (note here that it is the
# pool that is of a fixed size, but malloc() is still
# able to allocate variable sized chunks of memory
# from it). This option is the size
# of that pool, in bytes. Note that not all of
# this is available for programs to
# use - some is needed for internal information
# about memory regions, and some may be lost to
# ensure that memory allocation only returns
# memory aligned on word (or double word)
# boundaries - a very common architecture
# constraint.
#
cdl_option CYGNUM_MEMALLOC_FALLBACK_MALLOC_POOL_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16384
    # value_source default
    # Default value: 16384
    # Legal values: 32 to 0x7fffffff
};

# Common memory allocator package build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_MEMALLOC_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_MEMALLOC_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_MEMALLOC_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_MEMALLOC_TESTS {
    # Calculated value:  "tests/dlmalloc1 tests/dlmalloc2 tests/heaptest tests/kmemfix1 tests/kmemvar1 tests/malloc1 tests/malloc2 tests/malloc3 tests/malloc4 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/realloc tests/sepmeta1 tests/sepmeta2" 
    # Flavor: data
    # Current_value: tests/dlmalloc1 tests/dlmalloc2 tests/heaptest tests/kmemfix1 tests/kmemvar1 tests/malloc1 tests/malloc2 tests/malloc3 tests/malloc4 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/realloc tests/sepmeta1 tests/sepmeta2
};

# <
# <
# ISO C and POSIX infrastructure
# eCos supports implementations of ISO C libraries and POSIX
# implementations. This package provides infrastructure used by
# all such implementations.
#
cdl_package CYGPKG_ISOINFRA {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGPKG_ISOINFRA
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     Requires: CYGPKG_ISOINFRA
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     DefaultValue:  (0 != CYGPKG_ISOINFRA) && (0 != CYGINT_ISO_STRING_MEMFUNCS) 
    # component CYGPKG_MEMALLOC_MALLOC_ALLOCATORS
    #     ActiveIf: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_I18N
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_SETJMP
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_SIGNALS
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STARTUP
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STDLIB
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STRING
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGPKG_ISOINFRA
};

# >
# Startup and termination
#
cdl_component CYGPKG_ISO_STARTUP {
    # There is no associated value.
};

# >
# main() startup implementations
# Implementations of this interface arrange for a user-supplied
# main() to be called in an ISO compatible environment.
#
cdl_interface CYGINT_ISO_MAIN_STARTUP {
    # Implemented by CYGPKG_LIBC_STARTUP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MAIN_STARTUP 
    #     CYGINT_ISO_MAIN_STARTUP == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MAIN_STARTUP
    #     Requires:  1 >= CYGINT_ISO_MAIN_STARTUP 
};

# environ implementations
# Implementations of this interface provide the environ
# variable required by POSIX.
#
cdl_interface CYGINT_ISO_ENVIRON {
    # Implemented by CYGPKG_LIBC_STARTUP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ENVIRON 
    #     CYGINT_ISO_ENVIRON == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ENVIRON
    #     Requires:  1 >= CYGINT_ISO_ENVIRON 
};

# <
# ctype.h functions
#
cdl_component CYGPKG_ISO_CTYPE_H {
    # There is no associated value.
};

# >
# Number of implementations of ctype functions
#
cdl_interface CYGINT_ISO_CTYPE {
    # Implemented by CYGPKG_LIBC_I18N, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_CTYPE 
    #     CYGINT_ISO_CTYPE == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_CTYPE
    #     Requires:  1 >= CYGINT_ISO_CTYPE 
    # package CYGPKG_LIBC_STDLIB
    #     Requires: CYGINT_ISO_CTYPE
    # option CYGFUN_LIBC_STRING_BSD_FUNCS
    #     Requires: CYGINT_ISO_CTYPE
};

# Ctype implementation header
#
cdl_option CYGBLD_ISO_CTYPE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/i18n/ctype.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_LIBC_I18N_NEWLIB_CTYPE
    #     Requires:  CYGBLD_ISO_CTYPE_HEADER ==  "<cyg/libc/i18n/newlibctype.h>" 
    # option CYGIMP_LIBC_I18N_CTYPE_INLINES
    #     Requires:  CYGBLD_ISO_CTYPE_HEADER ==  "<cyg/libc/i18n/ctype.inl>" 
};

# <
# Error handling
#
cdl_component CYGPKG_ISO_ERRNO {
    # There is no associated value.
};

# >
# Number of implementations of error codes
#
cdl_interface CYGINT_ISO_ERRNO_CODES {
    # Implemented by CYGPKG_ERROR, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ERRNO_CODES 
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ERRNO_CODES
    #     Requires:  1 >= CYGINT_ISO_ERRNO_CODES 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGSEM_LIBC_SIGNALS_RAISE_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # option CYGSEM_LIBC_SIGNALS_SIGNAL_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_ERRNO_CODES
};

# Error codes implementation header
#
cdl_option CYGBLD_ISO_ERRNO_CODES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/codes.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_ERROR
    #     Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
};

# Number of implementations of errno variable
#
cdl_interface CYGINT_ISO_ERRNO {
    # Implemented by CYGPKG_ERROR_ERRNO, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_ERRNO 
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_ERRNO
    #     Requires:  1 >= CYGINT_ISO_ERRNO 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_ERRNO
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGSEM_LIBC_SIGNALS_RAISE_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO
    # option CYGSEM_LIBC_SIGNALS_SIGNAL_SETS_ERRNO
    #     Requires: CYGINT_ISO_ERRNO
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_ERRNO
};

# errno variable implementation header
#
cdl_option CYGBLD_ISO_ERRNO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/errno.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # component CYGPKG_ERROR_ERRNO
    #     Requires:  CYGBLD_ISO_ERRNO_HEADER == "<cyg/error/errno.h>" 
};

# <
# Locale-related functions
#
cdl_component CYGPKG_ISO_LOCALE {
    # There is no associated value.
};

# >
# Number of implementations of locale functions
#
cdl_interface CYGINT_ISO_LOCALE {
    # Implemented by CYGPKG_LIBC_I18N, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_LOCALE 
    #     CYGINT_ISO_LOCALE == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_LOCALE
    #     Requires:  1 >= CYGINT_ISO_LOCALE 
};

# Locale implementation header
#
cdl_option CYGBLD_ISO_LOCALE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Standard I/O-related functionality
#
cdl_component CYGPKG_ISO_STDIO {
    # There is no associated value.
};

# >
# Number of implementations of stdio file types
#
cdl_interface CYGINT_ISO_STDIO_FILETYPES {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FILETYPES 
    #     CYGINT_ISO_STDIO_FILETYPES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILETYPES
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILETYPES 
};

# Stdio file types implementation header
#
cdl_option CYGBLD_ISO_STDIO_FILETYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FILETYPES_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Stdio standard streams implementations
#
cdl_interface CYGINT_ISO_STDIO_STREAMS {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_STREAMS 
    #     CYGINT_ISO_STDIO_STREAMS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_STREAMS
    #     Requires:  1 >= CYGINT_ISO_STDIO_STREAMS 
};

# Stdio standard streams implementation header
# This header file must define stdin, stdout
# and stderr.
#
cdl_option CYGBLD_ISO_STDIO_STREAMS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_STREAMS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio file operations
#
cdl_interface CYGINT_ISO_STDIO_FILEOPS {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
    #     CYGINT_ISO_STDIO_FILEOPS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEOPS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
};

# Stdio file operations implementation header
# This header controls the file system operations on a file
# such as remove(), rename(), tmpfile(), tmpnam() and associated
# constants.
#
cdl_option CYGBLD_ISO_STDIO_FILEOPS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FILEOPS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio file access  functionals
#
cdl_interface CYGINT_ISO_STDIO_FILEACCESS {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEACCESS 
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEACCESS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEACCESS 
    # option CYGSEM_LIBC_EXIT_CALLS_FFLUSH
    #     Requires: CYGINT_ISO_STDIO_FILEACCESS
    # option CYGSEM_LIBC_EXIT_CALLS_FFLUSH
    #     DefaultValue:  0 != CYGINT_ISO_STDIO_FILEACCESS 
};

# Stdio file access implementation header
# This header controls the file access operations
# such as fclose(), fflush(), fopen(), freopen(), setbuf(),
# setvbuf(), and associated constants.
#
cdl_option CYGBLD_ISO_STDIO_FILEACCESS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FILEACCESS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio formatted I/O
#
cdl_interface CYGINT_ISO_STDIO_FORMATTED_IO {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FORMATTED_IO 
    #     CYGINT_ISO_STDIO_FORMATTED_IO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FORMATTED_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_FORMATTED_IO 
};

# Stdio formatted I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio character I/O
#
cdl_interface CYGINT_ISO_STDIO_CHAR_IO {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_CHAR_IO 
    #     CYGINT_ISO_STDIO_CHAR_IO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_CHAR_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_CHAR_IO 
};

# Stdio character I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_CHAR_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_CHAR_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio direct I/O
#
cdl_interface CYGINT_ISO_STDIO_DIRECT_IO {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_DIRECT_IO 
    #     CYGINT_ISO_STDIO_DIRECT_IO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_DIRECT_IO
    #     Requires:  1 >= CYGINT_ISO_STDIO_DIRECT_IO 
};

# Stdio direct I/O implementation header
#
cdl_option CYGBLD_ISO_STDIO_DIRECT_IO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_DIRECT_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio file positioning
#
cdl_interface CYGINT_ISO_STDIO_FILEPOS {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
    #     CYGINT_ISO_STDIO_FILEPOS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_FILEPOS
    #     Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
};

# Stdio file positioning implementation header
#
cdl_option CYGBLD_ISO_STDIO_FILEPOS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_FILEPOS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# Number of implementations of stdio error handling
#
cdl_interface CYGINT_ISO_STDIO_ERROR {
    # Implemented by CYGPKG_LIBC_STDIO, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STDIO_ERROR 
    #     CYGINT_ISO_STDIO_ERROR == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_ERROR
    #     Requires:  1 >= CYGINT_ISO_STDIO_ERROR 
};

# Stdio error handling implementation header
#
cdl_option CYGBLD_ISO_STDIO_ERROR_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdio/stdio.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  CYGBLD_ISO_STDIO_ERROR_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
};

# POSIX fd-related function implementations
#
cdl_interface CYGINT_ISO_STDIO_POSIX_FDFUNCS {
    # Implemented by CYGFUN_LIBC_STDIO_OPEN_POSIX_FDFUNCS, inactive, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >=  CYGINT_ISO_STDIO_POSIX_FDFUNCS 
    #     CYGINT_ISO_STDIO_POSIX_FDFUNCS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDIO_POSIX_FDFUNCS
    #     Requires:  1 >=  CYGINT_ISO_STDIO_POSIX_FDFUNCS 
};

# POSIX fd-related function implementation header
#
cdl_option CYGBLD_ISO_STDIO_POSIX_FDFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Standard general utility functions
#
cdl_component CYGPKG_ISO_STDLIB {
    # There is no associated value.
};

# >
# String conversion function implementations
#
cdl_interface CYGINT_ISO_STDLIB_STRCONV {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV 
    #     CYGINT_ISO_STDLIB_STRCONV == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_STRCONV
    #     Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STDLIB_STRCONV
};

# String conversion function implementation header
#
cdl_option CYGBLD_ISO_STDLIB_STRCONV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdlib/atox.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_STDLIB_INLINE_ATOX
    #     Requires:  CYGBLD_ISO_STDLIB_STRCONV_HEADER ==  "<cyg/libc/stdlib/atox.inl>" 
};

# String to FP conversion function implementations
#
cdl_interface CYGINT_ISO_STDLIB_STRCONV_FLOAT {
    # Implemented by CYGFUN_LIBC_strtod, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     Requires:  1 >= CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     Requires: CYGINT_ISO_STDLIB_STRCONV_FLOAT
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     DefaultValue:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
};

# String to FP conversion function implementation header
#
cdl_option CYGBLD_ISO_STDLIB_STRCONV_FLOAT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Random number generator implementations
#
cdl_interface CYGINT_ISO_RAND {
    # Implemented by CYGIMP_LIBC_RAND_SIMPLEST, active, disabled
    # Implemented by CYGIMP_LIBC_RAND_SIMPLE1, active, enabled
    # Implemented by CYGIMP_LIBC_RAND_KNUTH1, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_RAND 
    #     CYGINT_ISO_RAND == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_RAND
    #     Requires:  1 >= CYGINT_ISO_RAND 
};

# Random number generator implementation header
#
cdl_option CYGBLD_ISO_RAND_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Malloc implementations
#
cdl_interface CYGINT_ISO_MALLOC {
    # Implemented by CYGPKG_MEMALLOC_MALLOC_ALLOCATORS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MALLOC
    #     Requires:  1 >= CYGINT_ISO_MALLOC 
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGINT_ISO_MALLOC
    # option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC
    #     Requires: CYGINT_ISO_MALLOC
    # option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC
    #     DefaultValue:  0 != CYGINT_ISO_MALLOC 
    # component CYGPKG_LIBC_STDIO_OPEN
    #     Requires: CYGINT_ISO_MALLOC
    # component CYGPKG_LIBC_STDIO_OPEN
    #     DefaultValue:  0 != CYGINT_ISO_MALLOC 
    # option CYGFUN_LIBC_STRING_STRDUP
    #     ActiveIf: CYGINT_ISO_MALLOC
};

# Malloc implementation header
#
cdl_option CYGBLD_ISO_MALLOC_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Mallinfo() implementations
#
cdl_interface CYGINT_ISO_MALLINFO {
    # Implemented by CYGPKG_MEMALLOC_MALLOC_ALLOCATORS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MALLINFO 
    #     CYGINT_ISO_MALLINFO == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MALLINFO
    #     Requires:  1 >= CYGINT_ISO_MALLINFO 
};

# Mallinfo() implementation header
#
cdl_option CYGBLD_ISO_MALLINFO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Program exit functionality implementations
#
cdl_interface CYGINT_ISO_EXIT {
    # Implemented by CYGPKG_LIBC_STARTUP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_EXIT 
    #     CYGINT_ISO_EXIT == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_EXIT
    #     Requires:  1 >= CYGINT_ISO_EXIT 
    # option CYGFUN_INFRA_DUMMY_ABORT
    #     Requires: !CYGINT_ISO_EXIT
    # option CYGFUN_INFRA_DUMMY_ABORT
    #     DefaultValue:  CYGINT_ISO_EXIT == 0 
};

# Program exit functionality implementation header
#
cdl_option CYGBLD_ISO_EXIT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Program environment implementations
#
cdl_interface CYGINT_ISO_STDLIB_ENVIRON {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_ENVIRON 
    #     CYGINT_ISO_STDLIB_ENVIRON == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_ENVIRON
    #     Requires:  1 >= CYGINT_ISO_STDLIB_ENVIRON 
};

# Program environment implementation header
#
cdl_option CYGBLD_ISO_STDLIB_ENVIRON_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# system() implementations
#
cdl_interface CYGINT_ISO_STDLIB_SYSTEM {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_SYSTEM 
    #     CYGINT_ISO_STDLIB_SYSTEM == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_SYSTEM
    #     Requires:  1 >= CYGINT_ISO_STDLIB_SYSTEM 
};

# system() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_SYSTEM_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# bsearch() implementations
#
cdl_interface CYGINT_ISO_BSEARCH {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_BSEARCH 
    #     CYGINT_ISO_BSEARCH == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_BSEARCH
    #     Requires:  1 >= CYGINT_ISO_BSEARCH 
};

# bsearch() implementation header
#
cdl_option CYGBLD_ISO_BSEARCH_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# qsort() implementations
#
cdl_interface CYGINT_ISO_QSORT {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_QSORT 
    #     CYGINT_ISO_STDLIB_QSORT (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
};

# qsort() implementation header
#
cdl_option CYGBLD_ISO_QSORT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# abs()/labs() implementations
#
cdl_interface CYGINT_ISO_ABS {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_ABS 
    #     CYGINT_ISO_STDLIB_ABS (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGINT_ISO_ABS
};

# abs()/labs() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_ABS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdlib/abs.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_STDLIB_INLINE_ABS
    #     Requires:  CYGBLD_ISO_STDLIB_ABS_HEADER ==  "<cyg/libc/stdlib/abs.inl>" 
};

# div()/ldiv() implementations
#
cdl_interface CYGINT_ISO_DIV {
    # Implemented by CYGPKG_LIBC_STDLIB, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_DIV 
    #     CYGINT_ISO_STDLIB_DIV (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGINT_ISO_DIV
};

# div()/ldiv() implementation header
#
cdl_option CYGBLD_ISO_STDLIB_DIV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/stdlib/div.inl>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGIMP_LIBC_STDLIB_INLINE_DIV
    #     Requires:  CYGBLD_ISO_STDLIB_DIV_HEADER ==  "<cyg/libc/stdlib/div.inl>" 
};

# Header defining the implementation's MB_CUR_MAX
#
cdl_option CYGBLD_ISO_STDLIB_MB_CUR_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0

    # The following properties are affected by this value
    # interface CYGINT_LIBC_I18N_MB_REQUIRED
    #     Requires:  CYGBLD_ISO_STDLIB_MB_CUR_MAX_HEADER ==  "<cyg/libc/i18n/mb.h>" 
};

# Multibyte character implementations
#
cdl_interface CYGINT_ISO_STDLIB_MULTIBYTE {
    # Implemented by CYGPKG_LIBC_I18N, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
    #     CYGINT_ISO_STDLIB_MULTIBYTE == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STDLIB_MULTIBYTE
    #     Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
};

# Multibyte character implementation header
#
cdl_option CYGBLD_ISO_STDLIB_MULTIBYTE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# String functions
#
cdl_component CYGPKG_ISO_STRING {
    # There is no associated value.
};

# >
# Number of implementations of strerror() function
#
cdl_interface CYGINT_ISO_STRERROR {
    # Implemented by CYGPKG_ERROR_STRERROR, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STRERROR 
    #     CYGINT_ISO_STRERROR == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRERROR
    #     Requires:  1 >= CYGINT_ISO_STRERROR 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRERROR
};

# strerror() implementation header
#
cdl_option CYGBLD_ISO_STRERROR_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/error/strerror.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_ERROR_STRERROR
    #     Requires:  CYGBLD_ISO_STRERROR_HEADER == "<cyg/error/strerror.h>" 
};

# memcpy() implementation header
#
cdl_option CYGBLD_ISO_MEMCPY_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# memset() implementation header
#
cdl_option CYGBLD_ISO_MEMSET_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of strtok_r() function
#
cdl_interface CYGINT_ISO_STRTOK_R {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STRTOK_R 
    #     CYGINT_ISO_STRTOK_R == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRTOK_R
    #     Requires:  1 >= CYGINT_ISO_STRTOK_R 
};

# strtok_r() implementation header
#
cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRTOK_R_HEADER ==  "<cyg/libc/string/string.h>" 
};

# Number of implementations of locale-specific string  functions
# This covers locale-dependent string functions such as strcoll()
# and strxfrm().
#
cdl_interface CYGINT_ISO_STRING_LOCALE_FUNCS {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STRING_LOCALE_FUNCS 
    #     CYGINT_ISO_STRING_LOCALE_FUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_LOCALE_FUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_LOCALE_FUNCS 
};

# Locale-specific string functions' implementation  header
# This covers locale-dependent string functions such as strcoll()
# and strxfrm().
#
cdl_option CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
};

# Number of implementations of BSD string functions
#
cdl_interface CYGINT_ISO_STRING_BSD_FUNCS {
    # Implemented by CYGFUN_LIBC_STRING_BSD_FUNCS, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
    #     CYGINT_ISO_STRING_BSD_FUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_BSD_FUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
    # option CYGFUN_LIBC_TIME_POSIX
    #     Requires: CYGINT_ISO_STRING_BSD_FUNCS
};

# BSD string functions' implementation header
#
cdl_option CYGBLD_ISO_STRING_BSD_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/bsdstring.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGFUN_LIBC_STRING_BSD_FUNCS
    #     Requires:  CYGBLD_ISO_STRING_BSD_FUNCS_HEADER ==  "<cyg/libc/string/bsdstring.h>" 
};

# Number of implementations of other mem*() functions
#
cdl_interface CYGINT_ISO_STRING_MEMFUNCS {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STRING_MEMFUNCS 
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_MEMFUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_MEMFUNCS 
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     Requires: CYGINT_ISO_STRING_MEMFUNCS
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     DefaultValue:  (0 != CYGPKG_ISOINFRA) && (0 != CYGINT_ISO_STRING_MEMFUNCS) 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRING_MEMFUNCS
};

# Other mem*() functions' implementation header
#
cdl_option CYGBLD_ISO_STRING_MEMFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRING_MEMFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
};

# Number of implementations of other ISO C str*()  functions
# This covers the other str*() functions defined by ISO C.
#
cdl_interface CYGINT_ISO_STRING_STRFUNCS {
    # Implemented by CYGPKG_LIBC_STRING, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_STRING_STRFUNCS 
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_STRING_STRFUNCS
    #     Requires:  1 >= CYGINT_ISO_STRING_STRFUNCS 
    # option CYGFUN_INFRA_DUMMY_STRLEN
    #     Requires: !CYGINT_ISO_STRING_STRFUNCS
    # option CYGFUN_INFRA_DUMMY_STRLEN
    #     DefaultValue:  CYGINT_ISO_STRING_STRFUNCS == 0 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRING_STRFUNCS
    # package CYGPKG_LIBC_STDLIB
    #     Requires: CYGINT_ISO_STRING_STRFUNCS
};

# Other ISO C str*() functions' implementation  header
# This covers the other str*() functions defined by ISO C.
#
cdl_option CYGBLD_ISO_STRING_STRFUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/string/string.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STRING
    #     Requires:  CYGBLD_ISO_STRING_STRFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
};

# <
# Clock and time functionality
#
cdl_component CYGPKG_ISO_TIME {
    # There is no associated value.
};

# >
# time_t implementation header
#
cdl_option CYGBLD_ISO_TIME_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# clock_t implementation header
#
cdl_option CYGBLD_ISO_CLOCK_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# struct timeval implementation header
#
cdl_option CYGBLD_ISO_STRUCTTIMEVAL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# fnmatch implementation header
#
cdl_option CYGBLD_ISO_FNMATCH_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of POSIX timer types
#
cdl_interface CYGINT_ISO_POSIX_TIMER_TYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
    #     CYGINT_ISO_POSIX_TIMER_TYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMER_TYPES
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
};

# POSIX timer types implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of POSIX clock types
#
cdl_interface CYGINT_ISO_POSIX_CLOCK_TYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POSIX_CLOCK_TYPES 
    #     CYGINT_ISO_POSIX_CLOCK_TYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_CLOCK_TYPES
    #     Requires:  1 >= CYGINT_ISO_POSIX_CLOCK_TYPES 
};

# POSIX clock types implementation header
#
cdl_option CYGBLD_ISO_POSIX_CLOCK_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of ISO C types
#
cdl_interface CYGINT_ISO_C_TIME_TYPES {
    # Implemented by CYGPKG_LIBC_TIME, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_C_TIME_TYPES 
    #     CYGINT_ISO_C_TIME_TYPES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_C_TIME_TYPES
    #     Requires:  1 >= CYGINT_ISO_C_TIME_TYPES 
};

# ISO C time types implementation header
#
cdl_option CYGBLD_ISO_C_TIME_TYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/time/time.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires:  CYGBLD_ISO_C_TIME_TYPES_HEADER == "<cyg/libc/time/time.h>" 
};

# Number of implementations of POSIX timers
#
cdl_interface CYGINT_ISO_POSIX_TIMERS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
    #     CYGINT_ISO_POSIX_TIMERS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMERS
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
};

# POSIX timer implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMERS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of POSIX clocks
#
cdl_interface CYGINT_ISO_POSIX_CLOCKS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POSIX_CLOCKS 
    #     CYGINT_ISO_POSIX_CLOCKS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_CLOCKS
    #     Requires:  1 >= CYGINT_ISO_POSIX_CLOCKS 
};

# POSIX clocks implementation header
#
cdl_option CYGBLD_ISO_POSIX_CLOCKS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Number of implementations of ISO C clock functions
#
cdl_interface CYGINT_ISO_C_CLOCK_FUNCS {
    # Implemented by CYGPKG_LIBC_TIME, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_C_CLOCK_FUNCS 
    #     CYGINT_ISO_C_CLOCK_FUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_C_CLOCK_FUNCS
    #     Requires:  1 >= CYGINT_ISO_C_CLOCK_FUNCS 
};

# ISO C clock functions' implementation header
#
cdl_option CYGBLD_ISO_C_CLOCK_FUNCS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/time/time.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_TIME
    #     Requires:  CYGBLD_ISO_C_CLOCK_FUNCS_HEADER ==  "<cyg/libc/time/time.h>" 
};

# Number of implementations of tzset() function
#
cdl_interface CYGINT_ISO_TZSET {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_TZSET 
    #     CYGINT_ISO_TZSET == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_TZSET
    #     Requires:  1 >= CYGINT_ISO_TZSET 
};

# tzset() implementation header
#
cdl_option CYGBLD_ISO_TZSET_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Signal functionality
#
cdl_component CYGPKG_ISO_SIGNAL {
    # There is no associated value.
};

# >
# Number of implementations of signal numbers
#
cdl_interface CYGINT_ISO_SIGNAL_NUMBERS {
    # Implemented by CYGPKG_LIBC_SIGNALS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SIGNAL_NUMBERS 
    #     CYGINT_ISO_SIGNAL_NUMBERS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGNAL_NUMBERS
    #     Requires:  1 >= CYGINT_ISO_SIGNAL_NUMBERS 
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     Requires: CYGINT_ISO_SIGNAL_NUMBERS
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     DefaultValue:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
};

# Signal numbering implementation header
# This header provides the mapping of signal
# names (e.g. SIGBUS) to numbers.
#
cdl_option CYGBLD_ISO_SIGNAL_NUMBERS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/signals/signal.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_SIGNALS
    #     Requires:  CYGBLD_ISO_SIGNAL_NUMBERS_HEADER ==  "<cyg/libc/signals/signal.h>" 
};

# Number of signal implementations
#
cdl_interface CYGINT_ISO_SIGNAL_IMPL {
    # Implemented by CYGPKG_LIBC_SIGNALS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SIGNAL_IMPL 
    #     CYGINT_ISO_SIGNAL_IMPL == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGNAL_IMPL
    #     Requires:  1 >= CYGINT_ISO_SIGNAL_IMPL 
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     Requires: CYGINT_ISO_SIGNAL_IMPL
    # option CYGSEM_IO_SERIAL_TERMIOS_USE_SIGNALS
    #     DefaultValue:  CYGINT_ISO_SIGNAL_NUMBERS != 0 &&  CYGINT_ISO_SIGNAL_IMPL != 0 
};

# Signals implementation header
#
cdl_option CYGBLD_ISO_SIGNAL_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/signals/signal.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_SIGNALS
    #     Requires:  CYGBLD_ISO_SIGNAL_IMPL_HEADER ==  "<cyg/libc/signals/signal.h>" 
};

# POSIX real time signals feature test macro
# This defines the POSIX feature test macro
# that indicates that the POSIX real time signals
# are present.
#
cdl_interface CYGINT_POSIX_REALTIME_SIGNALS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
    #     CYGINT_POSIX_REALTIME_SIGNALS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_POSIX_REALTIME_SIGNALS
    #     Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
};

# <
# Non-local jumps functionality
#
cdl_component CYGPKG_ISO_SETJMP {
    # There is no associated value.
};

# >
# setjmp() / longjmp() implementations
#
cdl_interface CYGINT_ISO_SETJMP {
    # Implemented by CYGPKG_LIBC_SETJMP, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SETJMP 
    #     CYGINT_ISO_SETJMP == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SETJMP
    #     Requires:  1 >= CYGINT_ISO_SETJMP 
};

# setjmp() / longjmp() implementation header
#
cdl_option CYGBLD_ISO_SETJMP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/libc/setjmp/setjmp.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_LIBC_SETJMP
    #     Requires:  CYGBLD_ISO_SETJMP_HEADER == "<cyg/libc/setjmp/setjmp.h>" 
};

# sigsetjmp() / siglongjmp() implementations
#
cdl_interface CYGINT_ISO_SIGSETJMP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SIGSETJMP 
    #     CYGINT_ISO_SIGSETJMP == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SIGSETJMP
    #     Requires:  1 >= CYGINT_ISO_SIGSETJMP 
};

# sigsetjmp() / siglongjmp() implementation header
#
cdl_option CYGBLD_ISO_SIGSETJMP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Assertions implementation header
#
cdl_option CYGBLD_ISO_ASSERT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX file control
# This covers the POSIX file control definitions,
# normally found in <fcntl.h>
#
cdl_component CYGPKG_ISO_POSIX_FCNTL {
    # There is no associated value.
};

# >
# POSIX open flags implementation header
#
cdl_option CYGBLD_ISO_OFLAG_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX fcntl() implementations
#
cdl_interface CYGINT_ISO_FCNTL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_FCNTL 
    #     CYGINT_ISO_FCNTL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_FCNTL
    #     Requires:  1 >= CYGINT_ISO_FCNTL 
};

# POSIX fcntl() implementation header
#
cdl_option CYGBLD_ISO_FCNTL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX file open implementations
#
cdl_interface CYGINT_ISO_OPEN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_OPEN 
    #     CYGINT_ISO_OPEN == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_OPEN
    #     Requires:  1 >= CYGINT_ISO_OPEN 
};

# POSIX file open implementation header
#
cdl_option CYGBLD_ISO_OPEN_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# <sys/stat.h> definitions implementation header
#
cdl_option CYGBLD_ISO_STAT_DEFS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX directory reading implementation
#
cdl_interface CYGINT_ISO_DIRENT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_DIRENT 
    #     CYGINT_ISO_DIRENT == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_DIRENT
    #     Requires:  1 >= CYGINT_ISO_DIRENT 
};

# <dirent.h> definitions implementation header
#
cdl_option CYGBLD_ISO_DIRENT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX <sys/types.h> contents
# This covers the types required by POSIX to be in
# <sys/types.h>
#
cdl_component CYGPKG_ISO_POSIX_TYPES {
    # There is no associated value.
};

# >
# POSIX thread types implementations
#
cdl_interface CYGINT_ISO_PTHREADTYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
    #     CYGINT_ISO_PTHREADTYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREADTYPES
    #     Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
    # interface CYGINT_ISO_PMUTEXTYPES
    #     Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
};

# POSIX thread types implementation header
#
cdl_option CYGBLD_ISO_PTHREADTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX mutex types implementations
#
cdl_interface CYGINT_ISO_PMUTEXTYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
    #     CYGINT_ISO_PTHREADTYPES == 0
    #   --> 1
};

# POSIX mutex types implementation header
#
cdl_option CYGBLD_ISO_PMUTEXTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# ssize_t implementation header
#
cdl_option CYGBLD_ISO_SSIZE_T_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Filesystem types implementation header
#
cdl_option CYGBLD_ISO_FSTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# gid_t, pid_t, uid_t implementation header
#
cdl_option CYGBLD_ISO_SCHEDTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Non-POSIX <sys/types.h> contents
# This covers the extra types required by non-POSIX
# packages to be in <sys/types.h>. These would normally
# only be visible if _POSIX_SOURCE is not defined.
#
cdl_component CYGPKG_ISO_EXTRA_TYPES {
    # There is no associated value.
};

# >
# BSD compatible types
#
cdl_interface CYGINT_ISO_BSDTYPES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_BSDTYPES 
    #     CYGINT_ISO_BSDTYPES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_BSDTYPES
    #     Requires:  1 >= CYGINT_ISO_BSDTYPES 
};

# BSD types header
#
cdl_option CYGBLD_ISO_BSDTYPES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Utsname structure
#
cdl_component CYGPKG_ISO_UTSNAME {
    # There is no associated value.
};

# >
# Utsname header
#
cdl_option CYGBLD_ISO_UTSNAME_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX scheduler
#
cdl_component CYGPKG_ISO_SCHED {
    # There is no associated value.
};

# >
# POSIX scheduler implementations
#
cdl_interface CYGINT_ISO_SCHED_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
    #     CYGINT_ISO_SCHED_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SCHED_IMPL
    #     Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
};

# POSIX scheduler implementation header
#
cdl_option CYGBLD_ISO_SCHED_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX semaphores
#
cdl_component CYGPKG_ISO_SEMAPHORES {
    # There is no associated value.
};

# >
# POSIX semaphore implementations
#
cdl_interface CYGINT_ISO_SEMAPHORES {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_SEMAPHORES 
    #     CYGINT_ISO_SEMAPHORES == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SEMAPHORES
    #     Requires:  1 >= CYGINT_ISO_SEMAPHORES 
};

# POSIX semaphore implementation header
#
cdl_option CYGBLD_ISO_SEMAPHORES_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX message queues
#
cdl_component CYGPKG_ISO_MQUEUE {
    # There is no associated value.
};

# >
# Implementations
#
cdl_interface CYGINT_ISO_MQUEUE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_MQUEUE 
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_MQUEUE
    #     Requires:  1 >= CYGINT_ISO_MQUEUE 
    # option CYGNUM_ISO_MQUEUE_OPEN_MAX
    #     ActiveIf: CYGINT_ISO_MQUEUE
    # option CYGNUM_ISO_MQUEUE_PRIO_MAX
    #     ActiveIf: CYGINT_ISO_MQUEUE
};

# Implementation header
#
cdl_option CYGBLD_ISO_MQUEUE_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Maximum number of open message queues
#
cdl_option CYGNUM_ISO_MQUEUE_OPEN_MAX {
    # This option is not active
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 0

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value:  CYGNUM_POSIX_MQUEUE_OPEN_MAX > 0 ? CYGNUM_POSIX_MQUEUE_OPEN_MAX : 0 
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX (unknown) == 0
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX (unknown) == 0
    #   --> 0 0
};

# Maximum number of message priorities
#
cdl_option CYGNUM_ISO_MQUEUE_PRIO_MAX {
    # This option is not active
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 0
    #   --> 0

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 65535
    # value_source default
    # Default value: 1 65535
};

# <
# POSIX threads
#
cdl_component CYGPKG_ISO_PTHREAD {
    # There is no associated value.
};

# >
# POSIX pthread implementations
#
cdl_interface CYGINT_ISO_PTHREAD_IMPL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
    #     CYGINT_ISO_PTHREAD_IMPL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREAD_IMPL
    #     Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
};

# POSIX pthread implementation header
#
cdl_option CYGBLD_ISO_PTHREAD_IMPL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX mutex/cond var implementations
#
cdl_interface CYGINT_ISO_PTHREAD_MUTEX {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_PTHREAD_MUTEX 
    #     CYGINT_ISO_PTHREAD_MUTEX == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREAD_MUTEX
    #     Requires:  1 >= CYGINT_ISO_PTHREAD_MUTEX 
};

# POSIX mutex/cond var implementation header
#
cdl_option CYGBLD_ISO_PTHREAD_MUTEX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Limits
#
cdl_component CYGPKG_ISO_LIMITS {
    # There is no associated value.
};

# >
# POSIX pthread limits implementations
#
cdl_interface CYGINT_ISO_POSIX_LIMITS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
    #     CYGINT_ISO_POSIX_LIMITS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_LIMITS
    #     Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
};

# POSIX pthread limits implementation header
#
cdl_option CYGBLD_ISO_POSIX_LIMITS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# OPEN_MAX implementation header
#
cdl_option CYGBLD_ISO_OPEN_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# LINK_MAX implementation header
#
cdl_option CYGBLD_ISO_LINK_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# NAME_MAX implementation header
#
cdl_option CYGBLD_ISO_NAME_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# PATH_MAX implementation header
#
cdl_option CYGBLD_ISO_PATH_MAX_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# POSIX termios
#
cdl_component CYGPKG_ISO_TERMIOS {
    # There is no associated value.
};

# >
# POSIX termios implementations
#
cdl_interface CYGINT_ISO_TERMIOS {
    # Implemented by CYGPKG_IO_SERIAL_TERMIOS, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_TERMIOS 
    #     CYGINT_ISO_TERMIOS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_TERMIOS
    #     Requires:  1 >= CYGINT_ISO_TERMIOS 
};

# POSIX termios implementation header
#
cdl_option CYGBLD_ISO_TERMIOS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Dynamic load API
#
cdl_component CYGPKG_ISO_DLFCN {
    # There is no associated value.
};

# >
# Dynamic load implementations
#
cdl_interface CYGINT_ISO_DLFCN {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_DLFCN 
    #     CYGINT_ISO_DLFCN == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_DLFCN
    #     Requires:  1 >= CYGINT_ISO_DLFCN 
};

# Dynamic load implementation header
#
cdl_option CYGBLD_ISO_DLFCN_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# UNIX standard functions
#
cdl_component CYGPKG_ISO_UNISTD {
    # There is no associated value.
};

# >
# POSIX timer operations implementations
#
cdl_interface CYGINT_ISO_POSIX_TIMER_OPS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMER_OPS 
    #     CYGINT_ISO_POSIX_TIMER_OPS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_TIMER_OPS
    #     Requires:  1 >= CYGINT_ISO_POSIX_TIMER_OPS 
};

# POSIX timer operations implementation header
#
cdl_option CYGBLD_ISO_POSIX_TIMER_OPS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# POSIX sleep() implementations
#
cdl_interface CYGINT_ISO_POSIX_SLEEP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POSIX_SLEEP 
    #     CYGINT_ISO_POSIX_SLEEP == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POSIX_SLEEP
    #     Requires:  1 >= CYGINT_ISO_POSIX_SLEEP 
};

# POSIX sleep() implementation header
#
cdl_option CYGBLD_ISO_POSIX_SLEEP_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# select()/poll() functions
#
cdl_component CYGPKG_ISO_SELECT {
    # There is no associated value.
};

# >
# select() implementations
#
cdl_interface CYGINT_ISO_SELECT {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_SELECT 
    #     CYGINT_ISO_SELECT == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_SELECT
    #     Requires:  1 >= CYGINT_ISO_SELECT 
};

# select() implementation header
#
cdl_option CYGBLD_ISO_SELECT_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# poll() implementations
#
cdl_interface CYGINT_ISO_POLL {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_POLL 
    #     CYGINT_ISO_POLL == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_POLL
    #     Requires:  1 >= CYGINT_ISO_POLL 
};

# poll() implementation header
#
cdl_option CYGBLD_ISO_POLL_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# NetDB utility functions
#
cdl_component CYGPKG_ISO_NETDB {
    # There is no associated value.
};

# >
# DNS implementations
#
cdl_interface CYGINT_ISO_DNS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 0
    # Requires:  1 >= CYGINT_ISO_DNS 
    #     CYGINT_ISO_DNS == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_DNS
    #     Requires:  1 >= CYGINT_ISO_DNS 
};

# DNS implementation header
#
cdl_option CYGBLD_ISO_DNS_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Protocol network database implementations
#
cdl_interface CYGINT_ISO_NETDB_PROTO {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 0
    # Requires:  1 >= CYGINT_ISO_NETDB_PROTO 
    #     CYGINT_ISO_NETDB_PROTO == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_NETDB_PROTO
    #     Requires:  1 >= CYGINT_ISO_NETDB_PROTO 
};

# Protocol network database implementation header
#
cdl_option CYGBLD_ISO_NETDB_PROTO_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# Services network database implementations
#
cdl_interface CYGINT_ISO_NETDB_SERV {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 0
    # Requires:  1 >= CYGINT_ISO_NETDB_SERV 
    #     CYGINT_ISO_NETDB_SERV == 0
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_NETDB_SERV
    #     Requires:  1 >= CYGINT_ISO_NETDB_SERV 
};

# Services network database implementation header
#
cdl_option CYGBLD_ISO_NETDB_SERV_HEADER {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value: 0 0
};

# <
# Build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_ISOINFRA_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the ISO C and POSIX infrastructure package.
# These flags are used in addition to the set of global flags.
#
cdl_option CYGPKG_ISOINFRA_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the ISO C and POSIX infrastructure package.
# These flags are removed from the set of global flags
# if present.
#
cdl_option CYGPKG_ISOINFRA_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# ISO C library
# doc: ref/libc.html
# The packages under this package enable compatibility with the ISO C
# standard - ISO/IEC 9899:1990. This allows the user application to use
# well known standard C library functions, and in eCos starts a thread
# to invoke the user function main(). This package is a top-level placeholder
# to contain the implementations.
#
cdl_package CYGPKG_LIBC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # component CYGNUM_LIBM_COMPATIBILITY
    #     Requires: CYGPKG_LIBC
};

# >
# ISO C library internationalization functions
# doc: ref/libc.html
# This package provides internationalization functions specified by the
# ISO C standard - ISO/IEC 9899:1990. These include locale-related
# functionality and <ctype.h> functionality.
#
cdl_package CYGPKG_LIBC_I18N {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_LIBC_I18N
};

# >
# Supported locales
# These options determine which locales other than the "C" locale
# are supported and hence contribute to the size of the executable.
#
cdl_component CYGPKG_LIBC_I18N_LOCALES {
    # There is no associated value.
};

# >
# Support for multiple locales required
#
cdl_interface CYGINT_LIBC_I18N_MB_REQUIRED {
    # Implemented by CYGFUN_LIBC_I18N_LOCALE_C_SJIS, active, disabled
    # Implemented by CYGFUN_LIBC_I18N_LOCALE_C_JIS, active, disabled
    # Implemented by CYGFUN_LIBC_I18N_LOCALE_C_EUCJP, active, disabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  CYGBLD_ISO_STDLIB_MB_CUR_MAX_HEADER ==  "<cyg/libc/i18n/mb.h>" 
    #     CYGBLD_ISO_STDLIB_MB_CUR_MAX_HEADER == 0
    #   --> 0

    # The following properties are affected by this value
};

# C-SJIS locale support
# This option controls if the "C-SJIS" locale will be
# supported by setlocale().  The locale is a hybrid locale
# that is mostly the "C" locale with Japanese SJIS multibyte
# support added.
#
cdl_option CYGFUN_LIBC_I18N_LOCALE_C_SJIS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE
    #     LegalValues:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2))) to 0x7fffffff 
    # option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE
    #     DefaultValue:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2)))  
};

# C-JIS locale support
# This option controls if the "C-JIS" locale will be
# supported by setlocale().  The locale is a hybrid locale
# that is mostly the "C" locale with Japanese JIS multibyte
# support added.
#
cdl_option CYGFUN_LIBC_I18N_LOCALE_C_JIS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE
    #     LegalValues:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2))) to 0x7fffffff 
    # option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE
    #     DefaultValue:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2)))  
};

# C-EUCJP locale support
# This option controls if the "C-EUCJP" locale will be
# supported by setlocale().  The locale is a hybrid locale
# that is mostly the "C" locale with Japanese EUCJP multibyte
# support added.
#
cdl_option CYGFUN_LIBC_I18N_LOCALE_C_EUCJP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE
    #     LegalValues:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2))) to 0x7fffffff 
    # option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE
    #     DefaultValue:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2)))  
};

# <
# Newlib's ctype implementation
# This option enables the implementation of the ctype functions
# that comes with newlib. It is table driven and therefore
# exhibits different performance characteristics. It also offers
# a limited amount of binary compatibility
# with newlib so that programs linked against newlib ctype/locale
# do not need to be recompiled when linked with eCos.
#
cdl_option CYGPKG_LIBC_I18N_NEWLIB_CTYPE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  CYGBLD_ISO_CTYPE_HEADER ==  "<cyg/libc/i18n/newlibctype.h>" 
    #     CYGBLD_ISO_CTYPE_HEADER == <cyg/libc/i18n/ctype.inl>
    #   --> 0
};

# Per-thread multibyte state
# This option controls whether the multibyte character
# handling functions mblen(), mbtowc(), and wctomb(),
# have their state recorded on a per-thread
# basis rather than global. If this option is
# disabled, some per-thread space can be saved.
# Enabling this option will use three slots
# of kernel per-thread data. You should ensure you
# have enough slots configured for all your
# per-thread data.
#
cdl_option CYGSEM_LIBC_I18N_PER_THREAD_MB {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  CYGVAR_KERNEL_THREADS_DATA != 0 
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Size of locale name strings
# This option controls the maximum size of
# locale names and is used, among other things
# to instantiate a static string used
# as a return value from the
# setlocale() function. When requesting the
# current locale settings with LC_ALL, a string
# must be constructed to contain this data, rather
# than just returning a constant string. This
# string data is stored in the static string.
# This depends on the length of locale names,
# hence this option. If just the C locale is
# present, this option can be set as low as 2.
#
cdl_option CYGNUM_LIBC_I18N_MAX_LOCALE_NAME_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 2
    # value_source default
    # Default value:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2)))  
    #     CYGFUN_LIBC_I18N_LOCALE_C_EUCJP == 0
    #     CYGFUN_LIBC_I18N_LOCALE_C_SJIS == 0
    #     CYGFUN_LIBC_I18N_LOCALE_C_JIS == 0
    #   --> 2
    # Legal values:  (CYGFUN_LIBC_I18N_LOCALE_C_EUCJP ? 8 :  (CYGFUN_LIBC_I18N_LOCALE_C_SJIS ? 7 :   (CYGFUN_LIBC_I18N_LOCALE_C_JIS ? 6 : 2))) to 0x7fffffff 
    #     CYGFUN_LIBC_I18N_LOCALE_C_EUCJP == 0
    #     CYGFUN_LIBC_I18N_LOCALE_C_SJIS == 0
    #     CYGFUN_LIBC_I18N_LOCALE_C_JIS == 0
};

# Inline versions of <ctype.h> functions
# This option chooses whether the simple character
# classification and conversion functions (e.g.
# isupper(), isalpha(), toupper(), etc.)
# from <ctype.h> are available as inline
# functions. This may improve performance and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_I18N_CTYPE_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_CTYPE_HEADER ==  "<cyg/libc/i18n/ctype.inl>" 
    #     CYGBLD_ISO_CTYPE_HEADER == <cyg/libc/i18n/ctype.inl>
    #   --> 1
};

# C library i18n functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_I18N_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_I18N_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_I18N_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library i18n function tests
# This option specifies the set of tests for the C library
# i18n functions.
#
cdl_option CYGPKG_LIBC_I18N_TESTS {
    # Calculated value:  "tests/ctype tests/setlocale tests/i18nmb" 
    # Flavor: data
    # Current_value: tests/ctype tests/setlocale tests/i18nmb
};

# <
# <
# ISO C library setjmp/longjmp functions
# doc: ref/libc.html
# This package provides non-local jumps based on setjmp() and
# longjmp() in <setjmp.h> as specified by the ISO C
# standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_SETJMP {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires:  CYGBLD_ISO_SETJMP_HEADER == "<cyg/libc/setjmp/setjmp.h>" 
    #     CYGBLD_ISO_SETJMP_HEADER == <cyg/libc/setjmp/setjmp.h>
    #   --> 1
};

# >
# C library setjmp build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_SETJMP_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_SETJMP_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_SETJMP_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library setjmp tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_SETJMP_TESTS {
    # Calculated value:  "tests/setjmp" 
    # Flavor: data
    # Current_value: tests/setjmp
};

# <
# <
# ISO C library signal functions
# doc: ref/libc.html
# This component controls signal functionality,
# as implemented in ISO/IEC 9899:1990 chapter 7.7 with
# the signal() and raise() functions. As well as
# allowing a program to send itself signals, it is
# also possible to cause hardware exceptions to
# be signalled to the program in a similar way.
#
cdl_package CYGPKG_LIBC_SIGNALS {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_SIGNAL_NUMBERS_HEADER ==  "<cyg/libc/signals/signal.h>" 
    #     CYGBLD_ISO_SIGNAL_NUMBERS_HEADER == <cyg/libc/signals/signal.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_SIGNAL_IMPL_HEADER ==  "<cyg/libc/signals/signal.h>" 
    #     CYGBLD_ISO_SIGNAL_IMPL_HEADER == <cyg/libc/signals/signal.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# >
# Thread safe signals
# Because signal handlers are global, and not
# thread-specific (as mandated by POSIX 1003.1)
# it is possible for multiple threads to clash
# and corrupt data if setting the same signal
# handler at the same time. With this option
# enabled, a kernel mutex will be used to protect
# the shared data.
#
cdl_option CYGSEM_LIBC_SIGNALS_THREAD_SAFE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Hardware exceptions cause signals
# This causes hardware exceptions like
# arithmetic exceptions (e.g. divide by zero)
# or bad memory accesses to be passed through as
# signals. It is thus possible for a program to
# handle these exceptions in a generic way using
# the appropriate signal handlers. The details of
# exactly which exceptions are passed through
# under what circumstances depend on the
# underlying HAL implementation. Consequently it
# must be remembered that signal handlers cannot
# be guaranteed to be invoked in the expected
# circumstances if you do not know about the
# underlying HAL implementation - it is possible
# that the architecture is unable to detect that
# exception.
#
cdl_component CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_KERNEL_EXCEPTIONS_GLOBAL
    #     CYGSEM_KERNEL_EXCEPTIONS_GLOBAL == 1
    #   --> 1
    # Requires: CYGSEM_KERNEL_EXCEPTIONS_DECODE
    #     CYGSEM_KERNEL_EXCEPTIONS_DECODE == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPKG_LIBC_SIGNALS_TESTS
    #     Calculated:  
    #                     "tests/signal1"
    #                     . ((CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS) ? " tests/signal2" : "")
    #                 
};

# >
# Chain old exception handlers
# When hardware exceptions are generated, it
# is possible to chain into the old kernel exception
# handler before calling any registered signal
# handler. If this is not required, disable this
# option and only the signal handler will be
# called when this exception occurs. Disabling
# this option will also save some space and code
# usage.
#
cdl_option CYGSEM_LIBC_SIGNALS_CHAIN_HWEXCEPTIONS {
    # This option is not active
    # The parent CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Inline versions of functions
# Some functions can be made inline instead of
# being function calls. These can be set here.
#
cdl_component CYGPKG_LIBC_SIGNALS_INLINE {
    # There is no associated value.
};

# >
# raise()
# Enabling this option makes raise() an inline function.
#
cdl_option CYGIMP_LIBC_SIGNALS_RAISE_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# signal()
# Enabling this option makes signal() an inline function.
#
cdl_option CYGIMP_LIBC_SIGNALS_SIGNAL_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Error handling
# You may or may not want errno to be set by
# certain functions. Not using errno could save
# both space, code, and avoid worrying about
# interactions between multiple threads when
# setting it.
#
cdl_component CYGPKG_LIBC_SIGNALS_ERROR_HANDLING {
    # There is no associated value.
};

# >
# Bad signal fatal
# Enabling this option will cause an assertion
# failure if the signal handling code is
# passed a bad signal. Otherwise an error will
# be returned, or in the case of a
# hardware-generated exception it will be silently
# ignored.
#
cdl_option CYGSEM_LIBC_SIGNALS_BAD_SIGNAL_FATAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_USE_ASSERTS
    #     CYGDBG_USE_ASSERTS == 0
    #   --> 0
};

# raise() sets errno
# You may or may not want errno to be set by
# raise() on error conditions. Not using errno
# could save both space, code, and avoid worrying
# about interactions between multiple threads when
# setting it. Strictly ISO C does not mandate
# that errno be set by raise().
#
cdl_option CYGSEM_LIBC_SIGNALS_RAISE_SETS_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
};

# signal() sets errno
# You may or may not want errno to be set by
# signal() on error conditions. Not using errno
# could save both space, code, and avoid worrying
# about interactions between multiple threads when
# setting it. Strictly ISO C mandates
# that errno be set by signal().
#
cdl_option CYGSEM_LIBC_SIGNALS_SIGNAL_SETS_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
};

# <
# Tracing
# These options control the trace output for the C
# library internal signal implementation.
#
cdl_component CYGPKG_LIBC_SIGNALS_TRACING {
    # There is no associated value.
};

# >
# Default trace level for raise()
# This gives the default tracing level for the
# raise() function. Higher numbers are more
# verbose.
#
cdl_option CYGNUM_LIBC_SIGNALS_RAISE_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# Default hardware exception handler trace level
# This gives the default tracing level for the
# hardware exception handler function (if enabled).
# Higher numbers are more verbose.
#
cdl_option CYGNUM_LIBC_SIGNALS_HWHANDLER_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# C library signal functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_SIGNALS_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_SIGNALS_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_SIGNALS_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library signal function tests
# This option specifies the set of tests for the C library
# signal functions.
#
cdl_option CYGPKG_LIBC_SIGNALS_TESTS {
    # Calculated value:  
    #                     "tests/signal1"
    #                     . ((CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS) ? " tests/signal2" : "")
    #                 
    #     CYGSEM_LIBC_SIGNALS_HWEXCEPTIONS == 0
    # Flavor: data
    # Current_value: tests/signal1
};

# <
# <
# ISO environment startup/termination
# doc: ref/c-library-startup.html
# This package manages the control of the
# environment (in the general sense) that an
# application would require for full ISO C / POSIX
# compatibility, including a main() entry point
# supplied with arguments and an environment
# (as retrievable by the getenv() function).
# It also includes at the other end of things,
# what happens when main() returns or exit() is
# called.
#
cdl_package CYGPKG_LIBC_STARTUP {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires:  CYGINT_LIBC_STARTUP_CONTEXT == 1 
    #     CYGINT_LIBC_STARTUP_CONTEXT == 1
    #   --> 1
};

# >
# main() can be invoked elsewhere
# Implementors of this interface show that they
# allow main() to be invoked elsewhere.
#
cdl_interface CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 0

    # The following properties are affected by this value
    # option CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT
    #     DefaultValue:  0 == CYGPKG_KERNEL && 0 == 
    #                                 CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    # component CYGSEM_LIBC_STARTUP_MAIN_THREAD
    #     DefaultValue:  0 != CYGPKG_KERNEL && 0 ==  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    # option CYGSEM_LIBC_STARTUP_MAIN_OTHER
    #     DefaultValue:  0 !=  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    # option CYGSEM_LIBC_STARTUP_MAIN_OTHER
    #     Requires: CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE
};

# Arguments to main()
# This option allows the setting of the arguments
# to the main function. This only has any effect
# when cyg_iso_c_start() is used to start the
# ISO C compatibility. This will automatically
# invoke main() in an ISO C compatible fashion.
# This option is in fact used as argv, and so is
# an n-tuple of string constants. The final
# entry must be NULL. Conventionally if argv[0]
# is supplied, it is used to inform the program
# of its name.
#
cdl_option CYGDAT_LIBC_ARGUMENTS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "{(char *)\"\", (char *)NULL}"
    # value_source default
    # Default value: "{(char *)\"\", (char *)NULL}"
};

# Startup context for main()
# This component describes the options available for
# what context main() is invoked in, such as in a thread
# etc.
#
cdl_component CYGPKG_LIBC_STARTUP_CONTEXT {
    # There is no associated value.
};

# >
# Startup context implementors
#
cdl_interface CYGINT_LIBC_STARTUP_CONTEXT {
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT, active, disabled
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_THREAD, active, enabled
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_OTHER, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STARTUP
    #     Requires:  CYGINT_LIBC_STARTUP_CONTEXT == 1 
};

# Invoked from initialization context
# With this option selected, main() will be
# called via cyg_user_start() (unless the program
# overrides the default cyg_user_start()). This
# means it is run in the context of the system
# initialization code, without the eCos kernel
# scheduler running, and using the startup stack.
# This means that any functions that may require 
# interactions with a running kernel will not
# work (including libc functions, if configured
# to be thread safe for example), so you should
# restrict yourself to only calling fully
# re-entrant functions from within main() in
# this case.
#
cdl_option CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 == CYGPKG_KERNEL && 0 == 
    #                                 CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    #     CYGPKG_KERNEL == current
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 0
    #   --> 0
};

# Invoked as eCos thread
# With this option selected, main() is invoked from an eCos
# thread.
#
cdl_component CYGSEM_LIBC_STARTUP_MAIN_THREAD {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_KERNEL && 0 ==  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    #     CYGPKG_KERNEL == current
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
};

# >
# System provides stack for main()'s thread
# This option controls whether the stack of
# main()'s thread is provided by the application or
# provided by the system. When disabled, the
# application must declare a pointer variable
# cyg_libc_main_stack which is a pointer to an
# appropriately aligned region of memory. The
# application must also declare a variable of
# type `int' called cyg_libc_main_stack_size
# which contains the size of the stack in bytes.
# This must be a multiple of 8.
#
cdl_option CYGSEM_LIBC_MAIN_STACK_FROM_SYSTEM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Priority of main()'s thread
# This option is used to provide the thread
# priority which main()'s thread runs at. Be
# sure to check that this number is appropriate
# for the kernel scheduler chosen. Different
# kernel schedulers impose different restrictions
# on the usable priorities.
#
cdl_option CYGNUM_LIBC_MAIN_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 10
    # value_source default
    # Default value: 10
    # Legal values: 0 to 0x7fffffff
};

# <
# Invoked elsewhere
# With this option selected, main() must be
# invoked by a separate package, or by the user.
#
cdl_option CYGSEM_LIBC_STARTUP_MAIN_OTHER {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 !=  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 0
    #   --> 0
    # Requires: CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
};

# <
# Don't allow main()'s stack size to be set
# This interface describes whether the stack size
# value set in this package is supported by the
# implementation that invokes main. If not, that
# option is disabled.
#
cdl_interface CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE {
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT, active, disabled
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 0

    # The following properties are affected by this value
    # option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE
    #     ActiveIf: !CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE
};

# main()'s default thread stack size
# This option sets the size of the stack used
# in the context that invokes main(). For example,
# with an eCos kernel, when the cyg_iso_c_start()
# function is used to invoke the user-supplied
# main() function in an ISO C compatible fashion,
# a separate thread is created to call main().
# This option controls the size of that thread's
# stack, which is allocated in the BSS. It
# must be a multiple of 8. Note, a low number
# here may be overriden by the HAL if there is
# a minimum requirement to process interrupts
# etc. This option cannot be set if the implementation
# that invokes main() does not use it.
#
cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
    # ActiveIf constraint: !CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE
    #     CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE == 0
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8192
    # value_source default
    # Default value: 8192
    # Legal values: 16 to 0x7fffffff
};

# Include atexit() function
# This option enables the use of the atexit()
# function, and ensure that the atexit handlers
# are invoked from within exit() as defined in
# the ISO C standard.
#
cdl_component CYGFUN_LIBC_ATEXIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of functions atexit() supports
# This option sets the number of functions
# that atexit() has room for. In other words,
# the number of separate atexit() calls that
# can be made before calling exit() or returning
# from main() ( in an environment controlled by
# cyg_iso_c_start() ). For strict compliance
# with the ISO C standard this should be at
# least 32.
#
cdl_option CYGNUM_LIBC_ATEXIT_HANDLERS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 1 to 0x7fffffff
};

# <
# Make exit() call fflush()
# This option will ensure that all output
# streams are flushed when exitting using
# exit() as prescribed by the ISO C standard.
#
cdl_option CYGSEM_LIBC_EXIT_CALLS_FFLUSH {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_STDIO_FILEACCESS 
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STDIO_FILEACCESS
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1
};

# _exit() stops all threads
# If this option is enabled then _exit(),
# which is called from exit() which itself is
# called on return from main(), stops the eCos
# scheduler. For strict POSIX 1003.1
# compatibility this would be the normal
# behaviour. To allow the thread to simply
# exit, without affecting other threads, simply
# leave this option disabled. If there is no eCos
# scheduler, then _exit() simply loops
# irrespective of the setting of this option.
#
cdl_option CYGSEM_LIBC_EXIT_STOPS_SYSTEM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Default environment
# This option allows the setting of the default
# contents of the environment. This is in fact
# the contents of the global environment pointer
# char **environ defined by POSIX 1003.1. Strings
# must be of the form NAME=VALUE, and the final
# entry must be NULL.
#
cdl_option CYGDAT_LIBC_DEFAULT_ENVIRONMENT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "{ NULL }"
    # value_source default
    # Default value: "{ NULL }"
};

# Invoke default static constructors
# This option causes the C library to call
# static constructors with default priority
# from within the context of the main() thread,
# working with the co-operation of the HAL.
# This may be needed for environments that
# expect static constructors to be run in a
# thread context. Note that this uses an object
# with priority 65534. Therefore do not use
# priority 65534 for any other static objects
# with this option enabled.
#
cdl_option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
    #     CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG == 0
    #   --> 0
    # Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
    #     CYGSEM_LIBC_STARTUP_MAIN_THREAD == 1
    #     CYGSEM_LIBC_STARTUP_MAIN_OTHER == 0
    #     CYGPKG_POSIX_PTHREAD (unknown) == 0
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
    #     Requires: CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
};

# ISO environment startup/termination build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STARTUP_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_STARTUP_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_STARTUP_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# ISO environment startup/termination tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_STARTUP_TESTS {
    # Calculated value:  "tests/atexit" 
    # Flavor: data
    # Current_value: tests/atexit
};

# <
# <
# ISO C library standard input/output functions
# doc: ref/libc.html
# This package provides standard input/output functions associated
# with the header file <stdio.h> as specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STDIO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1
    # Requires: CYGPKG_LIBC_I18N
    #     CYGPKG_LIBC_I18N == current
    #   --> 1
    # Requires:  (CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE == "\"/dev/ttydiag\"" ?  CYGPKG_IO_SERIAL_HALDIAG : 1) 
    #     CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE == "\"/dev/tty0\""
    #     CYGPKG_IO_SERIAL_HALDIAG == 1
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILETYPES_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILETYPES_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILEACCESS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILEACCESS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILEPOS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILEPOS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILEOPS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILEOPS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_CHAR_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_CHAR_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_DIRECT_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_DIRECT_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_ERROR_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_ERROR_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_STREAMS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_STREAMS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRERROR
    #     CYGINT_ISO_STRERROR == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_MEMFUNCS
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STDLIB_STRCONV
    #     CYGINT_ISO_STDLIB_STRCONV == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBM_USE_STDERR
    #     Requires: CYGPKG_LIBC_STDIO
};

# >
# Inline versions of <stdio.h> functions
# This option chooses whether some of the
# particularly simple functions from
# <stdio.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_STDIO_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Permitted number of open files
# This option controls the guaranteed minimum
# number of simultaneously open files. The ISO
# C standard requires it to be defined (para
# 7.9.1), and if strictly compliant, it must be
# at least 8 (para 7.9.3). In practice it can be
# as low as 3 - for stdin, stdout and stderr.
#
cdl_option FOPEN_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: 3 to 0x7fffffff
};

# Maximum length of filename
# This option defines the maximum allowed size of
# a filename in characters. The ISO C standard
# requires it to be defined (para 7.9.1).
#
cdl_option FILENAME_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
    # Legal values: 1 to 0x7fffffff
};

# Maximum length of filenames for temporary files
# This option defines the maximum allowed size of
# filenames for temporary files as generated by
# tmpnam(). It is measured in characters, and the
# ISO C standard requires it to be defined (para 
# 7.9.1).
#
cdl_option L_tmpnam {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
    # Legal values: 4 to 0x7fffffff
};

# Unique file names generated by tmpnam()
# This option defines the minimum number of
# unique file names generated by tmpnam(). The
# ISO C standard requires it to be defined (para
# 7.9.1) and for ISO compliance it should be at least
# 25. Note that TMP_MAX names may not be generated
# if L_tmpnam is too small.
#
cdl_option TMP_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 25
    # value_source default
    # Default value: 25
    # Legal values: 1 to 0x7fffffff
};

# Buffered I/O
# This option controls whether input/output
# through the <stdio.h> functions is buffered.
# This may save some memory per file. It
# is equivalent to putting every file into
# non-buffered mode (_IONBF) through setvbuf(),
# except now it can never be altered back to
# buffered mode. Disabling buffering is strictly 
# non-compliant with the ISO C standard.
#
cdl_component CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option BUFSIZ
    #     Calculated: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO ? CYGNUM_LIBC_STDIO_BUFSIZE : 0
    # option CYGPKG_LIBC_STDIO_FILEIO
    #     Requires: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO
};

# >
# Default buffer size
# This option defines the default size of buffer
# used with calls to setbuf(), and is the default
# size for buffered streams that have not had
# either setbuf() or setvbuf() invoked on them.
# It is exactly equivalent to the standard
# constant BUFSIZ, except that it is 0 if
# CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO is disabled.
# The ISO C standard requires this to be defined
# (para 7.9.1), and says it must be at least 256
# (para 7.9.2).
#
cdl_option CYGNUM_LIBC_STDIO_BUFSIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 256
    # value_source default
    # Default value: 256
    # Legal values: 1 to 0x7fffffff

    # The following properties are affected by this value
    # option BUFSIZ
    #     Calculated: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO ? CYGNUM_LIBC_STDIO_BUFSIZE : 0
};

# setbuf()/setvbuf() allows dynamic setting
# This option controls whether I/O buffers are
# implemented dynamically within the stdio
# implementation. Otherwise they will be static,
# and cannot be changed by setbuf()/setvbuf(). If
# they are static (i.e. this option is disabled),
# any attempt to use an arbitrary buffer size, or
# to pass a user-supplied buffer to setbuf() or
# setvbuf() will fail - the buffer is implemented
# internally as a static array taking the size
# of the configuration option BUFSIZ. The only
# exception is if a user buffer is not supplied,
# and the buffer size requested is less than
# BUFSIZ. In this case, the buffer will
# be configured to only use that amount of
# buffering. However the unused memory left over
# will NOT be freed. If this option is enabled,
# then setvbuf() can be used to assign a user supplied
# buffer to the stream.
# Either setting can be considered to
# be compliant with the ISO C standard.
#
cdl_option CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC
    #     Requires: CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF
    # option CYGPKG_LIBC_STDIO_FILEIO
    #     Requires: CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF
};

# setbuf()/setvbuf() uses malloc()
# This option controls whether buffers set by setbuf() and
# setvbuf() may be allocated using malloc().
#
cdl_option CYGSEM_LIBC_STDIO_SETVBUF_MALLOC {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF
    #     CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF == 1
    #   --> 1
};

# <
# Default buffer size (BUFSIZ)
#
cdl_option BUFSIZ {
    # Calculated value: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO ? CYGNUM_LIBC_STDIO_BUFSIZE : 0
    #     CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO == 1
    #     CYGNUM_LIBC_STDIO_BUFSIZE == 256
    # Flavor: data
    # Current_value: 256
};

# Support for ungetc()
# This option controls whether ungetc() is
# supported. If not, then some space can be
# saved, and speed is improved. Note that you
# MUST have this defined if you want to use the
# scanf() family of functions.
#
cdl_option CYGFUN_LIBC_STDIO_ungetc {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Dynamic opening/closing of files
# fopen() and fclose() use dynamic memory
# allocation routines to allocate memory for
# new FILE structure pointers. If a malloc
# implementation is available, this option
# may be enabled to use
# fopen() and fclose(). If disabled, only the
# default console streams - stdin, stdout and
# stderr - will be available.
#
cdl_component CYGPKG_LIBC_STDIO_OPEN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_MALLOC 
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
};

# >
# POSIX fdopen/fileno functions
# This identifies to the rest of the system
# whether the POSIX fdopen() and
# fileno() functions are implemented.
#
cdl_option CYGFUN_LIBC_STDIO_OPEN_POSIX_FDFUNCS {
    # This option is not active
    # ActiveIf constraint: CYGPKG_LIBC_STDIO_FILEIO
    #     CYGPKG_LIBC_STDIO_FILEIO == 0
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# <
# Default console device
# This option allows you to choose the
# default console device. In the current
# implementation, all these devices begin
# with the prefix /dev/ and are followed by
# the name of a device. The name of the device
# depends on the device drivers you have
# configured in your system. For example,
# /dev/ttydiag could be the HAL diagnostic output
# pseudo-device, or /dev/tty0 could be your
# first serial driver, depending on your
# configuration.
#
cdl_option CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE {
    # Flavor: data
    user_value "\"/dev/tty0\""
    # value_source user
    # Default value:  CYGDAT_IO_SERIAL_TTY_CONSOLE ? CYGDAT_IO_SERIAL_TTY_CONSOLE : "\"/dev/null\"" 
    #     CYGDAT_IO_SERIAL_TTY_CONSOLE == "\"/dev/ttydiag\""
    #     CYGDAT_IO_SERIAL_TTY_CONSOLE == "\"/dev/ttydiag\""
    #   --> "\"/dev/ttydiag\""

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires:  (CYGDAT_LIBC_STDIO_DEFAULT_CONSOLE == "\"/dev/ttydiag\"" ?  CYGPKG_IO_SERIAL_HALDIAG : 1) 
};

# Floating point support
# This component allows floating point support
# to be enabled in certain standard I/O
# functions.
#
cdl_component CYGPKG_LIBC_STDIO_FLOATING_POINT {
    # There is no associated value.
};

# >
# printf() family
# This option enables the use of floating point
# number output in the printf() family (i.e.
# printf(), sprintf(), vprintf(), etc.) of
# functions. A substantial amount of code space
# can be saved if this option is disabled. If it
# is disabled then floating point specifiers
# (%e, %f, %g) are ignored, and nothing is
# output.
#
cdl_option CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM 
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
};

# scanf() family
# This option enables the use of floating point
# number conversion in the scanf() family (i.e.
# scanf(), sscanf(), vscanf(), etc.) of
# functions. A substantial amount of code space
# can be saved if this option is disabled. If it
# is disabled then floating point specifiers
# (%e, %f, %g) are ignored, and nothing is
# converted.
#
cdl_option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    #     CYGPKG_LIBM == current
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
};

# <
# Long long support
# This option allows various functions in the C Standard I/O
# library to support the 'long long' datatype. Doing so
# will come with a noticeable code size penalty however.
#
cdl_option CYGFUN_LIBC_STDIO_LONGLONG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_STDLIB_CONV_LONGLONG
    #     CYGFUN_LIBC_STDLIB_CONV_LONGLONG == 1
    #   --> 1
};

# Thread safe I/O streams
# doc: ref/libc-thread-safety.html
# This option controls whether standard I/O streams
# are thread-safe. Having this option set allows
# the streams to be locked when accessed by
# multiple threads simultaneously.
#
cdl_option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# C99 compliant snprintf() family
# This option allows C99 compliant implementation of 
# snprintf() family (i.e. snprintf(), vsnprintf()) 
# of functions. C99 compliant snprintf() functions
# return the number of characters that would have been written 
# to a sufficiently sized buffer (excluding the '\0'). 
# If this option is disabled, the functions simply return 
# the number of bytes that have been written to the buffer.
#
cdl_option CYGIMP_LIBC_STDIO_C99_SNPRINTF {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Enable use of FILEIO package for IO operations.
# This CDL exists to control how the standard I/O functions
# interface to the underlying I/O system. Either using the
# File I/O package, or the generic I/O package which is used
# by fewer devices.
#
cdl_option CYGPKG_LIBC_STDIO_FILEIO {
    # This option is not active
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #   --> 0

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO
    #     CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO == 1
    #   --> 1
    # Requires: CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF
    #     CYGSEM_LIBC_STDIO_DYNAMIC_SETVBUF == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGFUN_LIBC_STDIO_OPEN_POSIX_FDFUNCS
    #     ActiveIf: CYGPKG_LIBC_STDIO_FILEIO
};

# C library stdio functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STDIO_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_STDIO_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_STDIO_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library stdio function tests
# This option specifies the set of tests for the C library
# stdio functions.
#
cdl_option CYGPKG_LIBC_STDIO_TESTS {
    # Calculated value:  
    #                     "tests/sprintf1 tests/sprintf2 tests/snprintf tests/sscanf tests/stdiooutput " 
    #                     . ((CYGPKG_IO_FILEIO && CYGPKG_FS_RAM) ? "tests/fileio " : "")
    #                 
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #     CYGPKG_FS_RAM (unknown) == 0
    # Flavor: data
    # Current_value: tests/sprintf1 tests/sprintf2 tests/snprintf tests/sscanf tests/stdiooutput 
};

# <
# <
# ISO C library general utility functions
# doc: ref/libc.html
# This package provides general utility functions in <stdlib.h>
# as specified by the ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STDLIB {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_CTYPE
    #     CYGINT_ISO_CTYPE == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1
};

# >
# Inline versions of <stdlib.h> functions
# This option chooses whether some of the
# particularly simple standard utility functions
# from <stdlib.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_component CYGIMP_LIBC_STDLIB_INLINES {
    # There is no associated value.
};

# >
# abs() / labs()
#
cdl_option CYGIMP_LIBC_STDLIB_INLINE_ABS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STDLIB_ABS_HEADER ==  "<cyg/libc/stdlib/abs.inl>" 
    #     CYGBLD_ISO_STDLIB_ABS_HEADER == <cyg/libc/stdlib/abs.inl>
    #   --> 1
};

# div() / ldiv()
#
cdl_option CYGIMP_LIBC_STDLIB_INLINE_DIV {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STDLIB_DIV_HEADER ==  "<cyg/libc/stdlib/div.inl>" 
    #     CYGBLD_ISO_STDLIB_DIV_HEADER == <cyg/libc/stdlib/div.inl>
    #   --> 1
};

# atof() / atoi() / atol()
#
cdl_option CYGIMP_LIBC_STDLIB_INLINE_ATOX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STDLIB_STRCONV_HEADER ==  "<cyg/libc/stdlib/atox.inl>" 
    #     CYGBLD_ISO_STDLIB_STRCONV_HEADER == <cyg/libc/stdlib/atox.inl>
    #   --> 1
};

# <
# Random number generation
# These options control the behaviour of the
# functions rand(), srand() and rand_r()
#
cdl_component CYGPKG_LIBC_RAND {
    # There is no associated value.
};

# >
# Per-thread random seed
# doc: ref/libc-thread-safety.html
# This option controls whether the pseudo-random
# number generation functions rand() and srand()
# have their state recorded on a per-thread
# basis rather than global. If this option is
# disabled, some per-thread space can be saved.
# Note there is also a POSIX-standard rand_r()
# function to achieve a similar effect with user
# support. Enabling this option will use one slot
# of kernel per-thread data. You should ensure you
# have enough slots configured for all your
# per-thread data.
#
cdl_option CYGSEM_LIBC_PER_THREAD_RAND {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Random number seed
# This selects the initial random number seed for
# rand()'s pseudo-random number generator. For
# strict ISO standard compliance, this should be 1,
# as per section 7.10.2.2 of the standard.
#
cdl_option CYGNUM_LIBC_RAND_SEED {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Legal values: 0 to 0x7fffffff
};

# Tracing level
# Trace verbosity level for debugging the rand(),
# srand() and rand_r() functions. Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_RAND_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# Simplest implementation
# This provides a very simple implementation of rand()
# that does not perform well with randomness in the
# lower significant bits. However it is exceptionally
# fast. It uses the sample algorithm from the ISO C
# standard itself.
#
cdl_option CYGIMP_LIBC_RAND_SIMPLEST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Simple implementation #1
# This provides a very simple implementation of rand()
# based on the simplest implementation above. However
# it does try to work around the lack of randomness
# in the lower significant bits, at the expense of a
# little speed.
#
cdl_option CYGIMP_LIBC_RAND_SIMPLE1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Knuth implementation #1
# This implements a slightly more complex algorithm
# published in Donald E. Knuth's Art of Computer
# Programming Vol.2 section 3.6 (p.185 in the 3rd ed.).
# This produces better random numbers than the
# simplest approach but is slower.
#
cdl_option CYGIMP_LIBC_RAND_KNUTH1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Provides strtod()
# This option allows use of the utility function
# strtod() (and consequently atof()) to convert
# from string to double precision floating point
# numbers. Disabling this option removes the
# dependency on the math library package.
#
cdl_option CYGFUN_LIBC_strtod {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM 
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
};

# Provides long long conversion functions
# Enabling this option will provide support for the strtoll(),
# strtoull() and atoll() conversion functions, which are
# the long long variants of the standard versions of these
# functions. Supporting this requires extra code and compile
# time.
#
cdl_option CYGFUN_LIBC_STDLIB_CONV_LONGLONG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

    # The following properties are affected by this value
    # option CYGFUN_LIBC_STDIO_LONGLONG
    #     Requires: CYGFUN_LIBC_STDLIB_CONV_LONGLONG
};

# bsearch() tracing level
# Trace verbosity level for debugging the <stdlib.h>
# binary search function bsearch(). Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_BSEARCH_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# qsort() tracing level
# Trace verbosity level for debugging the <stdlib.h>
# quicksort function qsort(). Increase this value
# to get additional trace output.
#
cdl_option CYGNUM_LIBC_QSORT_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# C library stdlib build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STDLIB_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_STDLIB_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building this package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_STDLIB_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library stdlib tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_STDLIB_TESTS {
    # Calculated value:  "tests/abs tests/atoi tests/atol tests/bsearch tests/div tests/getenv tests/labs tests/ldiv tests/qsort tests/rand1 tests/rand2 tests/rand3 tests/rand4 tests/srand tests/strtol tests/strtoul" 
    # Flavor: data
    # Current_value: tests/abs tests/atoi tests/atol tests/bsearch tests/div tests/getenv tests/labs tests/ldiv tests/qsort tests/rand1 tests/rand2 tests/rand3 tests/rand4 tests/srand tests/strtol tests/strtoul
};

# <
# <
# ISO C library string functions
# doc: ref/libc.html
# This package provides string functions specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STRING {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRING_MEMFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_MEMFUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRING_STRFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_STRFUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRTOK_R_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRTOK_R_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# >
# Inline versions of <string.h> functions
# This option chooses whether some of the
# particularly simple string functions from
# <string.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_STRING_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Optimize string functions for code size
# This option tries to reduce string function
# code size at the expense of execution speed. The
# same effect can be produced if the code is
# compiled with the -Os option to the compiler.
#
cdl_option CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Provide BSD compatibility functions
# Enabling this option causes various compatibility functions
# commonly found in the BSD UNIX operating system to be included.
# These are functions such as bzero, bcmp, bcopy, bzero, strcasecmp,
# strncasecmp, index, rindex and swab.
#
cdl_option CYGFUN_LIBC_STRING_BSD_FUNCS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STRING_BSD_FUNCS_HEADER ==  "<cyg/libc/string/bsdstring.h>" 
    #     CYGBLD_ISO_STRING_BSD_FUNCS_HEADER == <cyg/libc/string/bsdstring.h>
    #   --> 1
    # Requires: CYGINT_ISO_CTYPE
    #     CYGINT_ISO_CTYPE == 1
    #   --> 1
};

# strtok
# These options control the behaviour of the
# strtok() and strtok_r() string tokenization
# functions.
#
cdl_component CYGPKG_LIBC_STRING_STRTOK {
    # There is no associated value.
};

# >
# Per-thread strtok()
# This option controls whether the string function
# strtok() has its state recorded on a per-thread
# basis rather than global. If this option is
# disabled, some per-thread space can be saved.
# Note there is also a POSIX-standard strtok_r()
# function to achieve a similar effect with user
# support. Enabling this option will use one slot
# of kernel per-thread data. You should ensure you
# have enough slots configured for all your
# per-thread data.
#
cdl_option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK {
    # ActiveIf constraint: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Tracing level
# Trace verbosity level for debugging the <string.h>
# functions strtok() and strtok_r(). Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_STRING_STRTOK_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# strdup
# This option indicates whether strdup() is to be supported.
#
cdl_option CYGFUN_LIBC_STRING_STRDUP {
    # ActiveIf constraint: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# Provide strnlen() GNU extension
# This option controls support for the strnlen() function.
# (This is a GNU extension, not part of ANSI C.)
#
cdl_option CYGFUN_LIBC_STRING_GNU_STRNLEN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# C library string functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_STRING_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_STRING_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_STRING_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library string function tests
# This option specifies the set of tests for the C library
# string functions.
#
cdl_option CYGPKG_LIBC_STRING_TESTS {
    # Calculated value:  "tests/memchr tests/memcmp1 tests/memcmp2 tests/memcpy1 tests/memcpy2 tests/memmove1 tests/memmove2 tests/memset tests/strcat1 tests/strcat2 tests/strchr tests/strcmp1 tests/strcmp2 tests/strcoll1 tests/strcoll2 tests/strcpy1 tests/strcpy2 tests/strcspn tests/strcspn tests/strlen tests/strncat1 tests/strncat2 tests/strncpy1 tests/strncpy2 tests/strpbrk tests/strrchr tests/strspn tests/strstr tests/strtok tests/strxfrm1 tests/strxfrm2 tests/strnlen" 
    # Flavor: data
    # Current_value: tests/memchr tests/memcmp1 tests/memcmp2 tests/memcpy1 tests/memcpy2 tests/memmove1 tests/memmove2 tests/memset tests/strcat1 tests/strcat2 tests/strchr tests/strcmp1 tests/strcmp2 tests/strcoll1 tests/strcoll2 tests/strcpy1 tests/strcpy2 tests/strcspn tests/strcspn tests/strlen tests/strncat1 tests/strncat2 tests/strncpy1 tests/strncpy2 tests/strpbrk tests/strrchr tests/strspn tests/strstr tests/strtok tests/strxfrm1 tests/strxfrm2 tests/strnlen
};

# <
# <
# ISO C library date and time functions
# doc: ref/libc.html
# This package provides time functions specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_TIME {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_C_TIME_TYPES_HEADER == "<cyg/libc/time/time.h>" 
    #     CYGBLD_ISO_C_TIME_TYPES_HEADER == <cyg/libc/time/time.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_C_CLOCK_FUNCS_HEADER ==  "<cyg/libc/time/time.h>" 
    #     CYGBLD_ISO_C_CLOCK_FUNCS_HEADER == <cyg/libc/time/time.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_DIV
    #     CYGINT_ISO_DIV == 1
    #   --> 1
    # Requires: CYGINT_ISO_ABS
    #     CYGINT_ISO_ABS == 1
    #   --> 1
};

# >
# Working clock() function
# This option controls whether clock() will
# actually try and determine the process time
# usage. With this option disabled, clock() does
# not disappear, but will permanently return
# (clock_t)-1 as mandated by the ISO C standard.
#
cdl_option CYGSEM_LIBC_TIME_CLOCK_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_TIMER
    #     CYGFUN_KERNEL_THREADS_TIMER == 1
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
};

# Working time() function
# This option controls whether time() will
# actually try and determine the current calendar
# time. With this option disabled, time() does
# not disappear, but will permanently return
# (time_t)-1 as mandated by the ISO C standard.
#
cdl_option CYGSEM_LIBC_TIME_TIME_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_WALLCLOCK
    #     CYGPKG_IO_WALLCLOCK == current
    #   --> 1
};

# Working cyg_libc_time_settime() function
# This option controls whether cyg_libc_time_settime()
# will actually try and set the current calendar
# time. With this option disabled,
# cyg_libc_time_settime() does not disappear, but
# will permanently return an error.
#
cdl_option CYGSEM_LIBC_TIME_SETTIME_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_WALLCLOCK
    #     CYGPKG_IO_WALLCLOCK == current
    #   --> 1
};

# POSIX time functions
# Enabling this option allows the use of the
# following functions defined in POSIX 1003.1:
# asctime_r(), ctime_r(), gmtime_r(), strptime(), and
# localtime_r().
#
cdl_option CYGFUN_LIBC_TIME_POSIX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGINT_ISO_STRING_BSD_FUNCS
    #     CYGINT_ISO_STRING_BSD_FUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGIMP_LIBC_TIME_ASCTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGIMP_LIBC_TIME_CTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGIMP_LIBC_TIME_GMTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE
    #     Requires: CYGFUN_LIBC_TIME_POSIX
    # option CYGPKG_LIBC_TIME_TESTS
    #     Calculated:  
    #                     "tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time " 
    #                     . (CYGFUN_LIBC_TIME_POSIX ? "tests/strptime" : "")
    #                 
};

# Single UNIX extensions
# Enabling this option allows the use of
# certain additional conversion specifiers
# in the strftime function.
#
cdl_option CYGFUN_LIBC_TIME_SUS_EXTNS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Time zone offsets
# These options control the default STandarD (STD)
# and Daylight Savings Time (DST)
# time offsets so that dates can be set correctly
# for the local environment.
#
cdl_component CYGPKG_LIBC_TIME_ZONES {
    # There is no associated value.
};

# >
# Default Daylight Savings Time state
# This option controls whether the initial
# time environment is set up as STD, DST or
# unknown. Use the value 1 for DST, 0 for STD, 
# and (-1) for unknown. This can also be set at
# runtime using the cyg_libc_time_setdst()
# function.
#
cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_STATE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -1
    # value_source default
    # Default value: -1
    # Legal values: -1 to 1
};

# Default Standard Time offset
# This option controls the offset from UTC in
# seconds when in local Standard Time. This
# value can be positive or negative. It
# can also be set at run time using the
# cyg_libc_time_setzoneoffsets() function.
#
cdl_option CYGNUM_LIBC_TIME_STD_DEFAULT_OFFSET {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: -90000 to 90000
};

# Default Daylight Savings Time offset
# This option controls the offset from UTC in
# seconds when in local Daylight Savings Time. This
# value can be positive or negative. It
# can also be set at run time using the
# cyg_libc_time_setzoneoffsets() function.
#
cdl_option CYGNUM_LIBC_TIME_DST_DEFAULT_OFFSET {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3600
    # value_source default
    # Default value: 3600
    # Legal values: -90000 to 90000
};

# <
# Inline functions
# These options control whether certain functions
# are available in inline form. This may lead to
# faster code at the expense of code space. But for
# some functions, or some functions with constant
# arguments, it may in fact lead to smaller code.
#
cdl_component CYGPKG_LIBC_TIME_INLINES {
    # There is no associated value.
};

# >
# asctime()
# Allow the asctime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_ASCTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# ctime()
# Allow the ctime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_CTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# difftime()
# Allow the difftime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_DIFFTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# gmtime()
# Allow the gmtime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_GMTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# localtime()
# Allow the localtime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_LOCALTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# mktime()
# Allow the mktime() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_MKTIME_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# asctime_r()
# Allow the asctime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_ASCTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# ctime_r()
# Allow the ctime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_CTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# gmtime_r()
# Allow the gmtime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_GMTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# localtime_r()
# Allow the localtime_r() function to be inlined
#
cdl_option CYGIMP_LIBC_TIME_LOCALTIME_R_INLINE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_LIBC_TIME_POSIX
    #     CYGFUN_LIBC_TIME_POSIX == 1
    #   --> 1
};

# <
# clock() tracing level
# Trace verbosity level for debugging the clock()
# function. Increase this value to get
# additional trace output when tracing is enabled.
#
cdl_option CYGNUM_LIBC_TIME_CLOCK_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# C library time functions build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBC_TIME_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBC_TIME_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -Wno-format
    # value_source default
    # Default value: -Wno-format
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the C library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBC_TIME_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# C library time and date function tests
# This option specifies the set of tests for the C library
# time and date functions.
#
cdl_option CYGPKG_LIBC_TIME_TESTS {
    # Calculated value:  
    #                     "tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time " 
    #                     . (CYGFUN_LIBC_TIME_POSIX ? "tests/strptime" : "")
    #                 
    #     CYGFUN_LIBC_TIME_POSIX == 1
    # Flavor: data
    # Current_value: tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time tests/strptime
};

# <
# <
# <
# Math library
# doc: ref/libc.html
# ISO standard floating point mathematical library
# containing many useful functions for mathematical
# calculations.
#
cdl_package CYGPKG_LIBM {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT
    #     Requires: CYGPKG_LIBM
    # option CYGSEM_LIBC_STDIO_PRINTF_FLOATING_POINT
    #     DefaultValue:  0 != CYGPKG_LIBM 
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     Requires: CYGPKG_LIBM
    # option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT
    #     DefaultValue:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    # option CYGFUN_LIBC_strtod
    #     Requires: CYGPKG_LIBM
    # option CYGFUN_LIBC_strtod
    #     DefaultValue:  0 != CYGPKG_LIBM 
};

# >
# Compatibility mode
# These options deal with behaviour related to
# the various compatibility modes - POSIX, IEEE,
# X/OPEN and SVID.
#
cdl_component CYGPKG_LIBM_COMPATIBILITY {
    # There is no associated value.
};

# >
#
cdl_interface CYGINT_LIBM_COMPAT {
    # Implemented by CYGSEM_LIBM_COMPAT_IEEE_ONLY, active, disabled
    # Implemented by CYGNUM_LIBM_COMPATIBILITY, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_LIBM_COMPAT
    #     CYGINT_LIBM_COMPAT == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_LIBM_COMPAT
    #     Requires: 1 == CYGINT_LIBM_COMPAT
};

# IEEE-only
# The math library can be hard-coded to only
# behave in one compatibility mode - IEEE. This
# cannot be changed at run-time. IEEE mode is the
# most minimal of the compatibility modes, and so
# this will best help code size and speed, as well
# as omitting the code for other compatibility
# modes. If not defined, the math library can be
# set at run-time to any of the supported
# compatibility modes.
#
cdl_component CYGSEM_LIBM_COMPAT_IEEE_ONLY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGSEM_LIBM_USE_STDERR
    #     Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    # option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
};

# >
# Inline IEEE754 API wrappers
# IEEE754 API functions are just wrappers for
# core functions. This introduces indirection which can can be
# avoided by inlining. This will also prevent GCC from rendering
# these functions as builtin. The HAL can override for a set of functions
# by providing a list of builtin functions.
#
cdl_option CYGSEM_LIBM_IEEE_API_INLINE {
    # This option is not active
    # The parent CYGSEM_LIBM_COMPAT_IEEE_ONLY is disabled

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Default mode
# If you want to have support for more than one
# compatibility mode settable at run-time, rather
# than hard-coded IEEE mode, this component lets
# you choose which mode should be the default.
#
cdl_component CYGNUM_LIBM_COMPATIBILITY {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 POSIX
    # value_source default
    # Default value: 1 POSIX
    # Legal values:  "POSIX" "IEEE" "XOPEN" "SVID" 
    # Requires: CYGPKG_LIBC
    #     CYGPKG_LIBC == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGOPT_LIBM_COMPAT_POSIX_IEEE
    #     ActiveIf:  CYGNUM_LIBM_COMPATIBILITY == "POSIX" 
};

# >
# Numeric representation
# This option automatically defines the default compatibility
# mode for numeric representation in terms of the values used
# to set that mode at run-time.
#
cdl_option CYGNUM_LIBM_COMPAT_DEFAULT {
    # Calculated value:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    # Flavor: data
    # Current_value: CYGNUM_LIBM_COMPAT_POSIX
};

# POSIX return NaN for out-of-domain argument.
# Later POSIX specification states that functions
# may return either NaN (like IEEE), or implementation defined
# value when argument is out of domain. For backward compatibility
# default value is set to 0.
#
cdl_option CYGOPT_LIBM_COMPAT_POSIX_IEEE {
    # ActiveIf constraint:  CYGNUM_LIBM_COMPATIBILITY == "POSIX" 
    #     CYGNUM_LIBM_COMPATIBILITY == POSIX
    #   --> 1

    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# SVID3-style scalb()
# SVID3 defined the scalb() function as double
# scalb(double, double) rather than double
# scalb(double, int) which is used by IBM, DEC, and
# probably others. Enabling this option chooses
# the (double, double) version. Note there is a
# function double scalbn(double, int) which is
# unaffected by this choice.
#
cdl_option CYGFUN_LIBM_SVID3_scalb {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Reduce namespace pollution
# If you do not want to use either the X/Open or
# SVID3 compatibility modes, you may want to define
# this option to reduce the chance of namespace
# pollution. This is particularly likely to occur
# here as these standards define symbols with
# names that often appear in applications, such as
# exception, DOMAIN, OVERFLOW, etc. If your
# application also used these names, it may cause
# problems.
#
cdl_option CYGSYM_LIBM_NO_XOPEN_SVID_NAMESPACE_POLLUTION {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Output to stderr for math errors
# The SVID3 standard says that error
# messages should be output on the stderr console
# output stream. This option allows this ability
# to be explicitly controlled. However, this still
# only has an effect in SVID3 compatibility mode.
#
cdl_option CYGSEM_LIBM_USE_STDERR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    #     CYGSEM_LIBM_COMPAT_IEEE_ONLY == 0
    #   --> 1
    # Requires: CYGPKG_LIBC_STDIO
    #     CYGPKG_LIBC_STDIO == current
    #   --> 1
};

# <
# Thread safety
# This option controls whether the C library has
# support for thread safe operation in general.
# This requires eCos kernel support for per-thread
# data, and adjustment of the stack limit.
#
cdl_component CYGPKG_LIBM_THREAD_SAFETY {
    # There is no associated value.
};

# >
# Compatibility mode setting
# This option makes the setting of the compatiblity
# mode be a per-thread property. This directly
# implies that it also becomes thread-safe.
#
cdl_option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    #     CYGSEM_LIBM_COMPAT_IEEE_ONLY == 0
    #   --> 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL
    #     Requires: CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
};

# gamma() and lgamma()
# This option makes the gamma() and lgamma()
# functions be thread-safe. Note that these
# functions are identical - they take the log of
# the absolute value of their argument. The sign
# of the argument is stored in a variable called
# signgam. Enabling this option makes signgam
# a per-thread variable. Note there are also
# gamma_r() and lgamma_r() alternatives that
# allow signgam to be passed in by reference as
# an argument.
#
cdl_option CYGSEM_LIBM_THREAD_SAFE_GAMMA_FUNCTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_SIGNGAM_TRACE_LEVEL
    #     Requires: CYGSEM_LIBM_THREAD_SAFE_GAMMA_FUNCTIONS
};

# <
# Tracing output levels in math library
# Tracing support is useful for debugging. Some
# Math library modules can be configured with
# different levels of tracing verbosity. These
# levels can be configured here.
#
cdl_component CYGPKG_LIBM_TRACE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGDBG_USE_TRACING
    #     CYGDBG_USE_TRACING == 0
    #   --> 0
};

# >
# Compatibility mode get/set
# Trace level for debugging the getting and
# setting of the compatibility mode when it is
# configured to be thread-safe.
#
cdl_option CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL {
    # This option is not active
    # The parent CYGPKG_LIBM_TRACE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
    # Requires: CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE == 0
    #   --> 0
};

# signgam variable access
# Trace level for debugging all accesses to the
# signgam variable in thread-safe mode.
#
cdl_option CYGNUM_LIBM_SIGNGAM_TRACE_LEVEL {
    # This option is not active
    # The parent CYGPKG_LIBM_TRACE is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
    # Requires: CYGSEM_LIBM_THREAD_SAFE_GAMMA_FUNCTIONS
    #     CYGSEM_LIBM_THREAD_SAFE_GAMMA_FUNCTIONS == 0
    #   --> 0
};

# <
# Bessel function limit of significance
# For the Bessel functions (j0(), j1(), jn(),
# y0(), y1(), yn()) this option defines the
# maximum absolute value of the ordinate
# before we assume total loss of significance.
# This number must be a floating-point number (e.g.
# contains a decimal point), and should be
# large.
#
cdl_option CYGNUM_LIBM_X_TLOSS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1.41484755040569E+16
    # value_source default
    # Default value: 1.41484755040569E+16
    # Legal values: 1 to 1e308
};

# Complex
# Complex library provides support for some basic operations
# on complex numbers as well as mathematical functions in
# complex domain.
#
cdl_component CYGPKG_COMPLEX {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Math library build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_LIBM_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the math library. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_LIBM_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value -fno-strict-aliasing
    # value_source default
    # Default value:  "-fno-strict-aliasing" .  ((!CYGPKG_HAL_I386 && !CYGPKG_HAL_SYNTH_I386) ? "" : " -ffloat-store") 
    #     CYGPKG_HAL_I386 (unknown) == 0
    #     CYGPKG_HAL_SYNTH_I386 (unknown) == 0
    #   --> -fno-strict-aliasing
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the math library. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_LIBM_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Math library tests
# this option specifies the set of tests for the math library.
#
cdl_option CYGPKG_LIBM_TESTS {
    # Calculated value:  "tests/vectors/acos tests/vectors/asin              tests/vectors/cos tests/vectors/cosh                         tests/vectors/sin tests/vectors/sinh                         tests/vectors/atan tests/vectors/atan2                       tests/vectors/tan tests/vectors/tanh                         tests/vectors/sqrt tests/vectors/pow                         tests/vectors/ceil tests/vectors/floor                       tests/vectors/fabs tests/vectors/fmod                        tests/vectors/frexp tests/vectors/ldexp                      tests/vectors/exp tests/vectors/log tests/vectors/log10       tests/vectors/acosf tests/vectors/asinf                      tests/vectors/cosf tests/vectors/coshf                       tests/vectors/sinf tests/vectors/sinhf                       tests/vectors/atanf tests/vectors/atan2f                     tests/vectors/tanf tests/vectors/tanhf                       tests/vectors/hypotf tests/vectors/sqrtf tests/vectors/powf  tests/vectors/floorf tests/vectors/ceilf                     tests/vectors/fabsf tests/vectors/fmodf                      tests/vectors/frexpf tests/vectors/ldexpf                    tests/vectors/expf tests/vectors/logf tests/vectors/log10f "
    #                 
    # Flavor: data
    # Current_value: tests/vectors/acos tests/vectors/asin              tests/vectors/cos tests/vectors/cosh                         tests/vectors/sin tests/vectors/sinh                         tests/vectors/atan tests/vectors/atan2                       tests/vectors/tan tests/vectors/tanh                         tests/vectors/sqrt tests/vectors/pow                         tests/vectors/ceil tests/vectors/floor                       tests/vectors/fabs tests/vectors/fmod                        tests/vectors/frexp tests/vectors/ldexp                      tests/vectors/exp tests/vectors/log tests/vectors/log10       tests/vectors/acosf tests/vectors/asinf                      tests/vectors/cosf tests/vectors/coshf                       tests/vectors/sinf tests/vectors/sinhf                       tests/vectors/atanf tests/vectors/atan2f                     tests/vectors/tanf tests/vectors/tanhf                       tests/vectors/hypotf tests/vectors/sqrtf tests/vectors/powf  tests/vectors/floorf tests/vectors/ceilf                     tests/vectors/fabsf tests/vectors/fmodf                      tests/vectors/frexpf tests/vectors/ldexpf                    tests/vectors/expf tests/vectors/logf tests/vectors/log10f 
};

# <
# <
# Wallclock device
# The wallclock device provides real time stamps, as opposed
# to the eCos kernel timers which typically just count the
# number of clock ticks since the hardware was powered up.
# Depending on the target platform this device may involve
# interacting with a suitable clock chip, or it may be
# emulated by using the kernel timers.
#
cdl_package CYGPKG_IO_WALLCLOCK {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current

    # The following properties are affected by this value
    # option CYGSEM_LIBC_TIME_TIME_WORKING
    #     Requires: CYGPKG_IO_WALLCLOCK
    # option CYGSEM_LIBC_TIME_SETTIME_WORKING
    #     Requires: CYGPKG_IO_WALLCLOCK
};

# >
# Number of wallclock hardware implementations
#
cdl_interface CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGPKG_WALLCLOCK_EMULATE
    #     DefaultValue:  0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    # option CYGIMP_WALLCLOCK_NONE
    #     DefaultValue:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
};

# Number of wallclock implementations
#
cdl_interface CYGINT_WALLCLOCK_IMPLEMENTATIONS {
    # Implemented by CYGPKG_WALLCLOCK_EMULATE, active, enabled
    # Implemented by CYGIMP_WALLCLOCK_NONE, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_WALLCLOCK_IMPLEMENTATIONS
    #     CYGINT_WALLCLOCK_IMPLEMENTATIONS == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_WALLCLOCK_IMPLEMENTATIONS
    #     Requires: 1 == CYGINT_WALLCLOCK_IMPLEMENTATIONS
};

# Wallclock driver supports set/get mode
#
cdl_interface CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGSEM_WALLCLOCK_MODE
    #     DefaultValue:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ?  "set_get" : "init_get" 
    # option CYGSEM_WALLCLOCK_MODE
    #     Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
};

# Wallclock mode
# The wallclock driver can be used in one of two
# modes. Set/get mode allows time to be kept during power
# off (assuming there's a battery backed clock). Init/get
# mode is slightly smaller and can be used when there is no
# battery backed clock - in this mode time 0 is the time of
# the board power up.
#
cdl_option CYGSEM_WALLCLOCK_MODE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value init_get
    # value_source default
    # Default value:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ?  "set_get" : "init_get" 
    #     CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED == 0
    #   --> init_get
    # Legal values:  "init_get" "set_get" 
    # Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
    #     CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED == 0
    #     CYGSEM_WALLCLOCK_MODE == init_get
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_WALLCLOCK_MODE
    #     Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
    # option CYGSEM_WALLCLOCK_SET_GET_MODE
    #     Calculated:  CYGSEM_WALLCLOCK_MODE == "set_get" ? 1 : 0 
};

# Wallclock set/get mode
#
cdl_option CYGSEM_WALLCLOCK_SET_GET_MODE {
    # Calculated value:  CYGSEM_WALLCLOCK_MODE == "set_get" ? 1 : 0 
    #     CYGSEM_WALLCLOCK_MODE == init_get
    # Flavor: bool
    # Current value: 0
};

# Wallclock implementation
# Implementations of the wallclock device.
#
cdl_component CYGPKG_IO_WALLCLOCK_IMPLEMENTATION {
    # There is no associated value.
};

# >
# Wallclock emulator
# When this option is enabled, a wallclock device will be
# emulated using the kernel real-time clock.
#
cdl_option CYGPKG_WALLCLOCK_EMULATE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    #     CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS == 0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# No wallclock
# Disables the wallclock.
#
cdl_option CYGIMP_WALLCLOCK_NONE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    #     CYGPKG_KERNEL == current
    #     CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS == 0
    #   --> 0
};

# <
# Wallclock build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_IO_WALLCLOCK_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the wallclock device. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_WALLCLOCK_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the wallclock device. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_WALLCLOCK_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Wallclock tests
# This option specifies the set of tests for the
# wallclock device.
#
cdl_option CYGPKG_IO_WALLCLOCK_TESTS {
    # Calculated value:  CYGPKG_KERNEL ? "tests/wallclock tests/wallclock2" : "" 
    #     CYGPKG_KERNEL == current
    # Flavor: data
    # Current_value: tests/wallclock tests/wallclock2
};

# <
# <
# Common error code support
# This package contains the common list of error and
# status codes. It is held centrally to allow
# packages to interchange error codes and status
# codes in a common way, rather than each package
# having its own conventions for error/status
# reporting. The error codes are modelled on the
# POSIX style naming e.g. EINVAL etc. This package
# also provides the standard strerror() function to
# convert error codes to textual representation, as
# well as an implementation of the errno idiom.
#
cdl_package CYGPKG_ERROR {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
    #     CYGBLD_ISO_ERRNO_CODES_HEADER == <cyg/error/codes.h>
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_SERIAL
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_SERIAL_CORTEXM_STM32
    #     Requires: CYGPKG_ERROR
};

# >
# errno variable
# This package controls the behaviour of the
# errno variable (or more strictly, expression)
# from <errno.h>.
#
cdl_component CYGPKG_ERROR_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_ERRNO_HEADER == "<cyg/error/errno.h>" 
    #     CYGBLD_ISO_ERRNO_HEADER == <cyg/error/errno.h>
    #   --> 1
};

# >
# Per-thread errno
# This option controls whether the standard error
# code reporting variable errno is a per-thread
# variable, rather than global.
#
cdl_option CYGSEM_ERROR_PER_THREAD_ERRNO {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Tracing level
# Trace verbosity level for debugging the errno
# retrieval mechanism in errno.cxx. Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_ERROR_ERRNO_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# <
# strerror function
# This package controls the presence and behaviour of the
# strerror() function from <string.h>
#
cdl_option CYGPKG_ERROR_STRERROR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_STRERROR_HEADER == "<cyg/error/strerror.h>" 
    #     CYGBLD_ISO_STRERROR_HEADER == <cyg/error/strerror.h>
    #   --> 1
};

# Error package build options
# Package specific build options including control over
# compiler flags used only in building this package,
# and details of which tests are built.
#
cdl_component CYGPKG_ERROR_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the error package. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_ERROR_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building the error package. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_ERROR_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# <
# <
# <

