OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [ecos.ecc] - Rev 299

Go to most recent revision | Compare with Previous | Blame | View Log

# 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    ORP ;
    template    default ;
    package -hardware CYGPKG_HAL_OPENRISC current ;
    package -hardware CYGPKG_HAL_OPENRISC_ORP current ;
    package -hardware CYGPKG_DEVS_FLASH_OPENRISC_ORP current ;
    package -hardware CYGPKG_DEVS_FLASH_AMD_AM29XXXXX v2_0 ;
    package -template CYGPKG_HAL v2_0 ;
    package -template CYGPKG_IO v2_0 ;
    package -template CYGPKG_IO_SERIAL v2_0 ;
    package -template CYGPKG_INFRA v2_0 ;
    package -template CYGPKG_KERNEL v2_0 ;
    package -template CYGPKG_MEMALLOC v2_0 ;
    package -template CYGPKG_ISOINFRA v2_0 ;
    package -template CYGPKG_LIBC v2_0 ;
    package -template CYGPKG_LIBC_I18N v2_0 ;
    package -template CYGPKG_LIBC_SETJMP v2_0 ;
    package -template CYGPKG_LIBC_SIGNALS v2_0 ;
    package -template CYGPKG_LIBC_STARTUP v2_0 ;
    package -template CYGPKG_LIBC_STDIO v2_0 ;
    package -template CYGPKG_LIBC_STDLIB v2_0 ;
    package -template CYGPKG_LIBC_STRING v2_0 ;
    package -template CYGPKG_LIBC_TIME v2_0 ;
    package -template CYGPKG_LIBM v2_0 ;
    package -template CYGPKG_IO_WALLCLOCK v2_0 ;
    package -template CYGPKG_ERROR v2_0 ;
};

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

# ---- contents --------------------------------------------------------
# >
# >
# 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
    # No user value, uncomment the following line to provide one.
    # user_value or32-elf
    # value_source default
    # Default value: or32-elf
};

# 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
    # No user value, uncomment the following line to provide one.
    # user_value "-msoft-float -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
    # value_source default
    # Default value: "-msoft-float -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"

    # 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") 
};

# 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
    # No user value, uncomment the following line to provide one.
    # user_value "-msoft-float -g -nostdlib -Wl,--gc-sections -Wl,-static"
    # value_source default
    # Default value: "-msoft-float -g -nostdlib -Wl,--gc-sections -Wl,-static"
};

# Build GDB stub ROM image
# This option enables the building of the GDB stubs for the
# board. The common HAL controls takes care of most of the
# build process, but the final conversion from ELF image to
# binary data is handled by the platform CDL, allowing
# relocation of the data if necessary.
#
cdl_option CYGBLD_BUILD_GDB_STUBS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires:  CYG_HAL_STARTUP == "ROM" 
    #     CYG_HAL_STARTUP == ROM
    #   --> 1
    # Requires: CYGSEM_HAL_ROM_MONITOR
    #     CYGSEM_HAL_ROM_MONITOR == 1
    #   --> 1
    # Requires: CYGBLD_BUILD_COMMON_GDB_STUBS
    #     CYGBLD_BUILD_COMMON_GDB_STUBS == 0
    #   --> 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT == 0
    #   --> 1
    # Requires: ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 0
    # 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
};

# 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

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires: CYGBLD_BUILD_COMMON_GDB_STUBS
};

# <
# Redboot HAL options
# This option lists the target's requirements for a valid Redboot
# configuration.
#
cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
    # This option is not active
    # ActiveIf constraint: CYGPKG_REDBOOT
    #     CYGPKG_REDBOOT (unknown) == 0
    #   --> 0

    # There is no associated value.
};

# >
# Build Redboot ROM binary image
# This option enables the conversion of the Redboot ELF
# image to a binary image suitable for ROM programming.
#
cdl_option CYGBLD_BUILD_REDBOOT_BIN {
    # This option is not active
    # The parent CYGPKG_REDBOOT_HAL_OPTIONS is not active
    # ActiveIf constraint: CYGBLD_BUILD_REDBOOT
    #     CYGBLD_BUILD_REDBOOT (unknown) == 0
    #   --> 0

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

# <
# Flash memory support for OpenRISC ORP
#
cdl_package CYGPKG_DEVS_FLASH_OPENRISC_ORP {
    # 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
    # Requires: CYGPKG_HAL_OPENRISC_ORP
    #     CYGPKG_HAL_OPENRISC_ORP == current
    #   --> 1
    # Requires: CYGHWR_DEVS_FLASH_AMD_AM29LV160
    #     CYGHWR_DEVS_FLASH_AMD_AM29LV160 == 0
    #   --> 0
};

# >
# AMD AM29LV160 driver required
#
cdl_interface CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED {
    # Implemented by CYGPKG_DEVS_FLASH_OPENRISC_ORP, inactive, enabled
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_OPENRISC_ORP is not active

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

    # The following properties are affected by this value
    # package CYGPKG_DEVS_FLASH_AMD_AM29XXXXX
    #     ActiveIf: CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED
};

# <
# AMD AM29XXXXX FLASH memory support
# FLASH memory device support for AMD AM29XXXXX
#
cdl_package CYGPKG_DEVS_FLASH_AMD_AM29XXXXX {
    # 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
    # ActiveIf constraint: CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED
    #     CYGINT_DEVS_FLASH_AMD_AM29XXXXX_REQUIRED == 0
    #   --> 0

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 v2_0
    # Requires:  CYGINT_DEVS_FLASH_AMD_VARIANTS != 0 
    #     CYGINT_DEVS_FLASH_AMD_VARIANTS == 0
    #   --> 0
};

# >
# Number of included variants
#
cdl_interface CYGINT_DEVS_FLASH_AMD_VARIANTS {
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29F040B, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29LV160, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29LV320D, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29LV200, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_ST_M29W200B, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29LV640, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29DL322D, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29DL323D, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29DL324D, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29DL640D, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29F800, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_AM29LV800, inactive, disabled
    # Implemented by CYGHWR_DEVS_FLASH_AMD_TC58FVB800, inactive, disabled
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

    # The following properties are affected by this value
    # package CYGPKG_DEVS_FLASH_AMD_AM29XXXXX
    #     Requires:  CYGINT_DEVS_FLASH_AMD_VARIANTS != 0 
};

# AMD AM29F040B flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AMD29F040B
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29F040B {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29LV160 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AMD29LV160
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29LV160 {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

    # 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_DEVS_FLASH_OPENRISC_ORP
    #     Requires: CYGHWR_DEVS_FLASH_AMD_AM29LV160
};

# AMD AM29LV320 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AMD29LV320
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29LV320D {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29LV200 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AMD29LV200
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29LV200 {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# ST M29W200B flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the ST M29W200B part. This
# memory device is pin- and software compatible with the
# AMD AM29LV200 device.
#
cdl_option CYGHWR_DEVS_FLASH_ST_M29W200B {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29LV640 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AMD29LV640
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29LV640 {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29DL322D flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AM29DL322D
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29DL322D {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29DL323D flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AM29DL323D
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29DL323D {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29DL324D flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AM29DL324D
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29DL324D {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29DL640D flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AM29DL640D
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29DL640D {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29F800 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AM29F800
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29F800 {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# AMD AM29LV800 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the AM29LV800
# part in the family.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_AM29LV800 {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# Toshiba TC58FVB800 flash memory support
# When this option is enabled, the AMD flash driver will be
# able to recognize and handle the Toshiba TC58FVB800.
#
cdl_option CYGHWR_DEVS_FLASH_AMD_TC58FVB800 {
    # This option is not active
    # The parent CYGPKG_DEVS_FLASH_AMD_AM29XXXXX is not active

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

# <
# <
# 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 v2_0
    # Requires: CYGPKG_INFRA
    #     CYGPKG_INFRA == v2_0
    #   --> 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 == v2_0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == v2_0
    #   --> 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"
};

# <
# <
# 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 == v2_0
    #   --> 4096
    # Legal values: 1024 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 CYGBLD_BUILD_GDB_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 CYGBLD_BUILD_GDB_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_OPENRISC_ORP, 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 == 0
    #   --> 1
    # 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
    # option CYGBLD_BUILD_GDB_STUBS
    #     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_OPENRISC_ORP, 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
    # option CYGBLD_BUILD_GDB_STUBS
    #     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 == 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 == 1
    #     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 CYGBLD_BUILD_GDB_STUBS
    #     Requires: ! CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    # 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
};

# <
# 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.

    # The following properties are affected by this value
};

# >
# Target has virtual vector support
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT {
    # Implemented by CYGPKG_HAL_OPENRISC_ORP, 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_OPENRISC_ORP, 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 == 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 == 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_CACHE
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_CACHE == 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_CACHE
    #     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_CACHE
    #     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 cache virtual vectors
# This option will cause the cache virtual vectors
# to be claimed.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_CACHE {
    # 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_CACHE
};

# 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 
};

# <
# Work with a ROM monitor
# Support can be enabled for three different varieties of ROM monitor.
# This support changes various eCos semantics such as the encoding
# of diagnostic output, or the overriding of hardware interrupt
# vectors.
# Firstly there is "Generic" support which prevents the HAL
# from overriding the hardware vectors that it does not use, to
# instead allow an installed ROM monitor to handle them. This is
# the most basic support which is likely to be common to most
# implementations of ROM monitor.
# "CygMon" provides support for the Cygnus ROM Monitor.
# And finally, "GDB_stubs" provides support when GDB stubs are
# included in the ROM monitor or boot ROM.
#
cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 0 0
    # value_source default
    # Default value:  CYG_HAL_STARTUP == "RAM" ? "CygMon" : 0 
    #     CYG_HAL_STARTUP == ROM
    #   --> 0 0
    # Legal values:  "Generic" "CygMon" "GDB_stubs" 
    # Requires:  CYG_HAL_STARTUP == "RAM" 
    #     CYG_HAL_STARTUP == ROM
    #   --> 0

    # The following properties are affected by this value
    # option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
    #     Requires: ! CYGSEM_HAL_USE_ROM_MONITOR
    # option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
    #     ActiveIf:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE
    #     ActiveIf: CYGSEM_HAL_USE_ROM_MONITOR
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     DefaultValue:  CYG_HAL_STARTUP != "RAM" || !CYGSEM_HAL_USE_ROM_MONITOR 
};

# Behave as a ROM monitor
# Enable this option if this program is to be used as a ROM monitor,
# i.e. applications will be loaded into RAM on the board, and this
# ROM monitor may process exceptions or interrupts generated from the
# application. This enables features such as utilizing a separate
# interrupt stack when exceptions are generated.
#
cdl_option CYGSEM_HAL_ROM_MONITOR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYG_HAL_STARTUP == "ROM" 
    #     CYG_HAL_STARTUP == ROM
    #   --> 1

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

# <
# 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
};

# 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" : "") 
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
};

# <
# OpenRISC architecture
# The OpenRISC architecture HAL package provides generic support
# for this processor architecture. It is also necessary to
# select a specific target platform HAL package.
#
cdl_package CYGPKG_HAL_OPENRISC {
    # 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
};

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

# CPU frequency
# This option contains the frequency of the CPU in MegaHertz.
# Choose the frequency to match the processor you have. This
# may affect thing like serial device, interval clock and
# memory access speed settings.
#
cdl_option CYGHWR_HAL_OPENRISC_CPU_FREQ {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 104
    # value_source default
    # Default value: 104
    # Legal values: 0 to 1000000

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

# OpenRISC Reference Platform
# The ORP HAL package should be used when targetting the
# OpenRISC Reference Platform.
#
cdl_package CYGPKG_HAL_OPENRISC_ORP {
    # 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_DEVS_FLASH_OPENRISC_ORP
    #     Requires: CYGPKG_HAL_OPENRISC_ORP
};

# >
# Startup type
# Selects whether code initially runs from ROM or RAM.  In the case of ROM startup,
# it's possible for the code to be copied into RAM and executed there.
#
cdl_component CYG_HAL_STARTUP {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ROM
    # value_source default
    # Default value: ROM
    # Legal values: "RAM" "ROM"

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires:  CYG_HAL_STARTUP == "ROM" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "openrisc_orp_ram" :  "openrisc_orp_rom" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_openrisc_orp_ram.ldi>" :  "<pkgconf/mlt_openrisc_orp_rom.ldi>" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_openrisc_orp_ram.h>" :  "<pkgconf/mlt_openrisc_orp_rom.h>" 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     DefaultValue:  CYG_HAL_STARTUP == "RAM" ? "CygMon" : 0 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "RAM" 
    # option CYGSEM_HAL_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "ROM" 
    # 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 
};

# Diagnostic serial port baud rate
# This option selects the baud rate used for the diagnostic console.
# Note: this should match the value chosen for the GDB port if the
# diagnostic and GDB port are the same.
# Note: very high baud rates are useful during simulation.
#
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 230400 460800 921600
};

# GDB serial port baud rate
# This option controls the baud rate used for the GDB connection.
# Note: very high baud rates are useful during simulation.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_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 230400 460800 921600
};

# 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 {
    # Calculated value: 1000000000
    # Flavor: data
    # Current_value: 1000000000
};

# Real-time clock denominator
#
cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
    # Calculated value: 100
    # Flavor: data
    # Current_value: 100

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

# Real-time clock period
# The tick timer facility is used
# to drive the eCos kernel RTC. The count register
# increments at the CPU clock speed.  By default, 100 Hz
#
cdl_option CYGNUM_HAL_RTC_PERIOD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1040000
    # value_source default
    # Default value: CYGHWR_HAL_OPENRISC_CPU_FREQ * 1000000 / CYGNUM_HAL_RTC_DENOMINATOR
    #     CYGHWR_HAL_OPENRISC_CPU_FREQ == 104
    #     CYGNUM_HAL_RTC_DENOMINATOR == 100
    #   --> 1040000
};

# <
# 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 25
    # value_source default
    # Default value: 25
};

# Number of communication channels on the board
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
    # Flavor: data
    # 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 CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
};

# Debug serial port
# The ORP platform has at least one serial port, but it can potentially have several.
# This option chooses 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

    # 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_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Diagnostic serial port
# The ORP platform has at least one serial port, but it can potentially have several.
# This option chooses 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

    # 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_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 1
};

# Memory layout
#
cdl_component CYGHWR_MEMORY_LAYOUT {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "openrisc_orp_ram" :  "openrisc_orp_rom" 
    #     CYG_HAL_STARTUP == ROM
    # Flavor: data
    # Current_value: openrisc_orp_rom
};

# >
# Memory layout linker script fragment
#
cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_openrisc_orp_ram.ldi>" :  "<pkgconf/mlt_openrisc_orp_rom.ldi>" 
    #     CYG_HAL_STARTUP == ROM
    # Flavor: data
    # Current_value: <pkgconf/mlt_openrisc_orp_rom.ldi>
};

# Memory layout header file
#
cdl_option CYGHWR_MEMORY_LAYOUT_H {
    # Calculated value:  CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_openrisc_orp_ram.h>" :  "<pkgconf/mlt_openrisc_orp_rom.h>" 
    #     CYG_HAL_STARTUP == ROM
    # Flavor: data
    # Current_value: <pkgconf/mlt_openrisc_orp_rom.h>
};

# <
# <
# <
# <
# 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 v2_0
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == v2_0
    #   --> 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 == v2_0
    #   --> 1

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

# >
# 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: CYGPKG_IO_SERIAL_HALDIAG
};

# 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
};

# 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
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # 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 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY0 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\""
};

# <
# 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
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # 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 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY1 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\""
};

# <
# 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
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # 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 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_TTY_TTY2 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 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 == v2_0
    #     CYGPKG_IO_FILEIO (unknown) == 0
    #     CYGINT_ISO_ERRNO_CODES == 1
    #     CYGINT_ISO_ERRNO == 1
    #   --> 0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 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
    # 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\""
};

# <
# 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
    # 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 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" : "" 
};

# 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 == 0
    # Flavor: data
    # Current_value: 
};

# <
# 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: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO (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 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

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

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

# 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 v2_0

    # 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
    # component CYGFUN_KERNEL_THREADS_STACK_CHECKING
    #     ActiveIf: CYGPKG_INFRA_DEBUG
    # component CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT
    #     DefaultValue:  0 != CYGPKG_INFRA_DEBUG 
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
};

# >
# 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
};

# 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
};

# 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 == "-msoft-float -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
    #   --> 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 == "-msoft-float -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
    #   --> 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_option CYGPKG_INFRA_TESTS {
    # Calculated value:  "" 
    # Flavor: data
    # Current_value: 
};

# <
# <
# 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 v2_0

    # 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_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
    #     Requires: CYGPKG_KERNEL
    # option CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS
    #     DefaultValue:  0 != 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" : "" 
};

# >
# 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_option 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
};

# 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 
};

# >
# 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
};

# 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 oldest threads first
# With this option enabled, threads queued in a thread queue
# will be dequeued in priority order, rather than last in,
# first out (LIFO). 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
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
};

# 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
    # component CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE
    #     Requires: 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
};

# Override default clock settings
# The kernel has default settings for the clock interrupt
# frequency. These settings will vary from platform to
# platform, but typically there will be a 100 clock interrupts
# every second. It is possible to change this frequency, but
# it requires some knowledge of the target hardware.
#
cdl_component CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE {
    # 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 CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION
    #     Calculated:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "{CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_NUMERATOR,     CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_DENOMINATOR}"   : "{CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}"
    # option CYGNUM_KERNEL_COUNTERS_RTC_PERIOD
    #     Calculated:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_PERIOD"         : "CYGNUM_HAL_RTC_PERIOD"
};

# >
# Clock hardware initialization value
# During system initialization this value is used to initialize
# the clock hardware. The exact meaning of the value and the
# range of legal values therefore depends on the target hardware,
# and the hardware documentation should be consulted for further
# details. In addition the clock resolution numerator and
# denominator values should be updated. Typical values for
# this option would be 150000 on the MN10300 stdeval1 board,
# 15625 on the tx39 jmr3904 board, and 20833 on the powerpc
# cogent board.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_PERIOD {
    # This option is not active
    # The parent CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE is disabled

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

# Clock resolution numerator
# If a non-default clock interrupt frequency is used then it
# is necessary to specify the clock resolution explicitly.
# This resolution involves two separate values, the numerator
# and the denominator. The result of dividing the numerator by
# the denominator should correspond to the number of
# nanoseconds between clock interrupts. For example a
# numerator of 1000000000 and a denominator of 100 means that
# there are 10000000 nanoseconds (or 10 milliseconds) between
# clock interrupts. Expressing the resolution as a fraction
# should minimize clock drift even for frequencies that cannot
# be expressed as a simple integer. For example a frequency of
# 60Hz corresponds to a clock resolution of 16666666.66...
# nanoseconds. This can be expressed accurately as 1000000000
# over 60.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_NUMERATOR {
    # This option is not active
    # The parent CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE is disabled

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

# Clock resolution denominator
# If a non-default clock interrupt frequency is used then it
# is necessary to specify the clock resolution explicitly.
# This resolution involves two separate values, the numerator
# and the denominator. The result of dividing the numerator by
# the denominator should correspond to the number of
# nanoseconds between clock interrupts. For example a
# numerator of 1000000000 and a denominator of 100 means that
# there are 10000000 nanoseconds (or 10 milliseconds) between
# clock interrupts. Expressing the resolution as a fraction
# should minimize clock drift even for frequencies that cannot
# be expressed as a simple integer. For example a frequency of
# 60Hz corresponds to a clock resolution of 16666666.66...
# nanoseconds. This can be expressed accurately as 1000000000
# over 60.
#
cdl_option CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_DENOMINATOR {
    # This option is not active
    # The parent CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE is disabled

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

# <
#
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.  For more information, see the option to 
# override default clock settings
# (CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE) and associated options.
#
cdl_option CYGNUM_KERNEL_COUNTERS_RTC_RESOLUTION {
    # Calculated value:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "{CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_NUMERATOR,     CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_DENOMINATOR}"   : "{CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}"
    #     CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE == 0
    # Flavor: data
    # Current_value: {CYGNUM_HAL_RTC_NUMERATOR, CYGNUM_HAL_RTC_DENOMINATOR}
};

# RTC period
# This option automatically defines the RTC period to be used in
# setting the system clock hardware.  For more information, see the
# option to override default clock settings
# (CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE) and associated options.
#
cdl_option CYGNUM_KERNEL_COUNTERS_RTC_PERIOD {
    # Calculated value:  CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE ?                 "CYGNUM_KERNEL_COUNTERS_CLOCK_OVERRIDE_PERIOD"         : "CYGNUM_HAL_RTC_PERIOD"
    #     CYGPKG_KERNEL_COUNTERS_CLOCK_OVERRIDE == 0
    # 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_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
};

# >
# 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 
};

# <
# 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
# 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
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
};

# >
# 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
};

# Size of 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 instrument 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 the scheduler
# 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 interrupts
# 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 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
};

# 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
};

# Print user friendly instrument 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
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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" : "")
    #                 
    # 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_option CYGPKG_KERNEL_TESTS {
    # Calculated value:  
    #                     "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest" : "")
    #                     . ((!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 == 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
    # Flavor: data
    # Current_value: tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 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/tm_basic tests/fptest tests/dhrystone tests/kcache1 tests/kcache2
};

# <
# <
# Dynamic memory allocation
# 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 v2_0
};

# >
# 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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 memcpy() and memset()
# This may be used to control whether memset() and memcpy()
# are used within the implementation. The alternative is
# to use some macro equivalents, which some people report
# are faster in some circumstances.
#
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 
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 1
};

# <
# 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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
};

# 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 == v2_0
    #   --> 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
};

# 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 v2_0

    # 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 
    # 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 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 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEOPS 
    #     CYGINT_ISO_STDIO_FILEOPS == 0
    #   --> 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
    # value_source default
    # Default value: 0 0
};

# 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 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 0 0
    # Requires:  1 >= CYGINT_ISO_STDIO_FILEPOS 
    #     CYGINT_ISO_STDIO_FILEPOS == 0
    #   --> 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 {
    # 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 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 CYGPKG_LIBC_STDIO_OPEN, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >=  CYGINT_ISO_STDIO_POSIX_FDFUNCS 
    #     CYGINT_ISO_STDIO_POSIX_FDFUNCS == 1
    #   --> 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 
    # option CYGPKG_LIBC_STDIO_OPEN
    #     Requires: CYGINT_ISO_MALLOC
    # option CYGPKG_LIBC_STDIO_OPEN
    #     DefaultValue:  0 != 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 
};

# 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 
    # 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
};

# 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 v2_0

    # 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 v2_0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 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)))  
};

# <
# 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 {
    # 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
};

# 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 v2_0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 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 v2_0
    # 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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 v2_0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 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 "{\"\", NULL}"
    # value_source default
    # Default value: "{\"\", 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 == v2_0
    #     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 == v2_0
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == v2_0
    #   --> 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 == v2_0
    #   --> 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 v2_0
    # Requires: CYGPKG_IO
    #     CYGPKG_IO == v2_0
    #   --> 1
    # Requires: CYGPKG_IO_SERIAL_HALDIAG
    #     CYGPKG_IO_SERIAL_HALDIAG == 1
    #   --> 1
    # Requires: CYGPKG_LIBC_I18N
    #     CYGPKG_LIBC_I18N == v2_0
    #   --> 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_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 == v2_0
    #   --> 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: 1 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).
#
cdl_option TMP_MAX {
    # 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 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
};

# 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_option 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
};

# 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
    # No user value, uncomment the following line to provide one.
    # user_value "\"/dev/ttydiag\""
    # value_source default
    # Default value: CYGDAT_IO_SERIAL_TTY_CONSOLE
    #     CYGDAT_IO_SERIAL_TTY_CONSOLE == "\"/dev/ttydiag\""
    #   --> "\"/dev/ttydiag\""
};

# 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 == v2_0
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == v2_0
    #   --> 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 == v2_0
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == v2_0
    #   --> 1
    # Requires: CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 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 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_KERNEL 
    #     CYGPKG_KERNEL == v2_0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == v2_0
    #   --> 1
};

# 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/sscanf tests/stdiooutput" 
    # Flavor: data
    # Current_value: tests/sprintf1 tests/sprintf2 tests/sscanf tests/stdiooutput
};

# <
# Enable use of FILEIO package for IO operations.
#
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
};

# <
# 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 v2_0
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == v2_0
    #   --> 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 == v2_0
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == v2_0
    #   --> 1
};

# 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 v2_0
    # 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 == v2_0
    #   --> 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

    # The following properties are affected by this value
    # option CYGFUN_LIBC_TIME_POSIX
    #     Requires: CYGFUN_LIBC_STRING_BSD_FUNCS
};

# 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 == v2_0
    #   --> 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
};

# <
# 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" 
    # 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
};

# <
# <
# 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 v2_0
    # 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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 == v2_0
    #   --> 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: CYGFUN_LIBC_STRING_BSD_FUNCS
    #     CYGFUN_LIBC_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 1
    # value_source default
    # Default value: 1
};

# 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 1
    # value_source default
    # Default value: 1
    # 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 v2_0

    # 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_option 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
};

# 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 == v2_0
    #   --> 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>"  
};

# >
# 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
};

# <
# 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 == v2_0
    #   --> 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 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
};

# 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 ""
    # value_source default
    # Default value:  ((0 == CYGPKG_HAL_I386) && (0 == CYGPKG_HAL_SYNTH_I386)) ? "" : "-ffloat-store" 
    #     CYGPKG_HAL_I386 (unknown) == 0
    #     CYGPKG_HAL_SYNTH_I386 (unknown) == 0
    #   --> ""
};

# 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/atan tests/vectors/atan2 tests/vectors/ceil tests/vectors/cos tests/vectors/cosh tests/vectors/exp tests/vectors/fabs tests/vectors/floor tests/vectors/fmod tests/vectors/frexp tests/vectors/ldexp tests/vectors/log tests/vectors/log10 tests/vectors/modf tests/vectors/pow tests/vectors/sin tests/vectors/sinh tests/vectors/sqrt tests/vectors/tan tests/vectors/tanh" 
    # Flavor: data
    # Current_value: tests/vectors/acos tests/vectors/asin tests/vectors/atan tests/vectors/atan2 tests/vectors/ceil tests/vectors/cos tests/vectors/cosh tests/vectors/exp tests/vectors/fabs tests/vectors/floor tests/vectors/fmod tests/vectors/frexp tests/vectors/ldexp tests/vectors/log tests/vectors/log10 tests/vectors/modf tests/vectors/pow tests/vectors/sin tests/vectors/sinh tests/vectors/sqrt tests/vectors/tan tests/vectors/tanh
};

# <
# <
# 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 v2_0

    # 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 == v2_0
    #   --> 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 == v2_0
    #     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 == v2_0
    # 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 v2_0
    # 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
};

# >
# 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: ""
};

# <
# <
# <

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.