This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Fwd: RE: Still having problems getting networking up


> > > Just FYI, it seems that template is currently broken, as eCos won't build
> > > successfully with "ecosconfig new edb7xxx net". I'll redo it and send a
> > > make.out if you want, but it should be easy to reproduce.
> > >
> >
> >I tried this "six ways from Sunday" against the current [master] sources and
> >I could not reproduce your error.

I successfully reproduced it; I've attached the ecos.ecc and make.out from the
session. The only manual change I made to ecos.ecc was to set the processor type to
EP7212. I am building under Red Hat 6.1.

> > > Anyway, I got everything built OK, but it seems that more configuration is
> > > required. When my app starts, it hangs repeating "CS8900: Tx interrupt
> > lost".
> > >
> >
> >If you have an EDB7212 board then you'll need to remove a resistor to get
> >interrupts to work.  Remove R168 and all jumpers from JP45.

Aha! R168 is not fitted on my board, but there was a jumper on one of the JP45
pairs.

Removing the jumper has not made any difference to RedBoot's behavior (still can't
find the bootp server). However, my application now works for DHCP, which is great
and I can get my main functionality up & running.

In my app I will eventually need to implement the "AutoIP" scheme (I'm implementing
UPnP) if I don't detect a DHCP/BOOTP server. Is there a recognized process for
using an internally-generated (at runtime) IP address if DHCP fails? I guess I just
poke stuff into the bootp structure for eth0?

> > > support for setting the MAC address in this release." Does the networking
> > > code in eCos [not redboot] read the MAC address set by fconfig and
> >
> >Currently, if you run RedBoot and enable the network address (turn on
> >networking support in RedBoot) then eCos will just use that.  Note: eCos does
> not get the
> >ESA from the FLASH, it assumes that RedBoot has set it up.

ESA? Is that a networking term I don't know or an eCos term? I'm not a TCP/IP
expert, having only ever programmed it at a high level in the past. Very much of a
learning curve.

Anyway, I understand by your reply that since the EEPROM doesn't work on the
EDB7212 and eCos doesn't support it anyway, since there is no documented API for me
to tell the networking layer the MAC address, I will need to modify the network
code myself? (I have to find out from Cirrus how they expect us to handle this. I
originally assumed that the CS8900 had the MAC factory-burned, I didn't think about
the EEPROM until I looked at the board).


-- Lewin A.R.W. Edwards (Embedded Engineer)              * Linux system
Work:     http://www.digi-frame.com/
Personal: http://www.larwe.com/ and http://www.zws.com/


# 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    edb7xxx ;
    template    net ;
    package -hardware CYGPKG_HAL_ARM current ;
    package -hardware CYGPKG_HAL_ARM_EDB7XXX current ;
    package -hardware CYGPKG_DEVS_ETH_ARM_EDB7XXX current ;
    package -hardware CYGPKG_IO_SERIAL_ARM_EDB7XXX current ;
    package -hardware CYGPKG_DEVS_FLASH_EDB7XXX current ;
    package -template CYGPKG_HAL current ;
    package -template CYGPKG_IO current ;
    package -template CYGPKG_IO_SERIAL current ;
    package -template CYGPKG_INFRA current ;
    package -template CYGPKG_ISOINFRA current ;
    package -template CYGPKG_KERNEL current ;
    package -template CYGPKG_MEMALLOC current ;
    package -template CYGPKG_LIBC current ;
    package -template CYGPKG_LIBC_TIME current ;
    package -template CYGPKG_LIBC_STDLIB current ;
    package -template CYGPKG_LIBC_STRING current ;
    package -template CYGPKG_LIBC_I18N current ;
    package -template CYGPKG_LIBC_SETJMP current ;
    package -template CYGPKG_LIBC_STARTUP current ;
    package -template CYGPKG_LIBC_STDIO current ;
    package -template CYGPKG_LIBM current ;
    package -template CYGPKG_POSIX current ;
    package -template CYGPKG_UITRON current ;
    package -template CYGPKG_IO_WATCHDOG current ;
    package -template CYGPKG_IO_WALLCLOCK current ;
    package -template CYGPKG_ERROR current ;
    package -template CYGPKG_IO_FILEIO current ;
    package -template CYGPKG_NET current ;
    package -template CYGPKG_IO_ETH_DRIVERS current ;
};

# ---- 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 arm-elf
    # value_source default
    # Default value: arm-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 "-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
    # value_source default
    # Default value:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-mcpu=arm710c -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :  "-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #   --> "-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority"
};

# 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 "-mcpu=arm7tdmi -Wl,--gc-sections -Wl,-static -g -nostdlib"
    # value_source default
    # Default value:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-mcpu=arm710c -Wl,--gc-sections -Wl,-static -g -nostdlib" : "-mcpu=arm7tdmi -Wl,--gc-sections -Wl,-static -g -nostdlib"
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #   --> "-mcpu=arm7tdmi -Wl,--gc-sections -Wl,-static -g -nostdlib"
};

# 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 == RAM
    #   --> 0
    # Requires: CYGSEM_HAL_ROM_MONITOR
    #     CYGSEM_HAL_ROM_MONITOR == 0
    #   --> 0
    # 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
    #   --> 0
    # Requires: CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
    #     CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 1
    # Requires: ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
    #     CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT == 1
    #   --> 0
    # Requires: ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
    #     CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM == 1
    #   --> 0
};

# Build flash programming tool
# This option enables the building of the flash programming tool for copying the GDB stubs into flash memory.
#
cdl_option CYGBLD_BUILD_FLASH_TOOL {
    # 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 == "RAM" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 1
    # Requires: CYGPKG_LIBC
    #     CYGPKG_LIBC == current
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Build tests for auxiliaries
# This option enables the building of some tests for the
# auxiliary devices.
#
cdl_option CYGBLD_BUILD_AUX_TESTS {
    # 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 == "RAM" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 1
    # Requires: CYGPKG_LIBC
    #     CYGPKG_LIBC == current
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

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

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

    # There is no associated value.
    # Requires: CYGPKG_IO_SERIAL_ARM_EDB7XXX
    #     CYGPKG_IO_SERIAL_ARM_EDB7XXX == 0
    #   --> 0
    # Requires: (CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser1\"") ||  (CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1)
    #     CYGDAT_CYGMON_CONSOLE_DEV == 0
    #     CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1 == 0
    #   --> 1
    # Requires: (CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser2\"") ||  (CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2)
    #     CYGDAT_CYGMON_CONSOLE_DEV == 0
    #     CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2 == 0
    #   --> 1
};

# >
# Serial port for default console
# This option selects the physical device to use as the default
# console device for CygMon.
#
cdl_option CYGDAT_CYGMON_CONSOLE_DEV {
    # This option is not active
    # The parent CYGPKG_CYGMON_HAL_OPTIONS is not active

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

    # The following properties are affected by this value
    # component CYGPKG_CYGMON_HAL_OPTIONS
    #     Requires: (CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser1\"") ||  (CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1)
    # component CYGPKG_CYGMON_HAL_OPTIONS
    #     Requires: (CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser2\"") ||  (CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2)
};

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

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

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

# <
# Cirrus Logic EDB7xxx FLASH memory support
# FLASH memory device support for Cirrus Logic EDB7xxx boards
#
cdl_package CYGPKG_DEVS_FLASH_EDB7XXX {
    # 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_ARM_EDB7XXX
    #     CYGPKG_HAL_ARM_EDB7XXX == current
    #   --> 1
};

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

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

    # The following properties are affected by this value
};

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

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

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

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

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

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

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

# 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 {
    # This option is not active
    # ActiveIf constraint: !CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE == 1
    #   --> 0
    # ActiveIf constraint:  CYGPKG_HAL_ARM || CYGPKG_HAL_POWERPC_MPC8xx  || CYGPKG_HAL_V85X_V850 || CYGSEM_HAL_VIRTUAL_VECTOR_DIAG 
    #     CYGPKG_HAL_ARM == current
    #     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 1
    # 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 == RAM
    #   --> 1

    # 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 not active

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

# <
# 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_ARM_EDB7XXX, 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 == GDB_stubs
    #   --> 0
    # Requires:  !CYGSEM_HAL_VIRTUAL_VECTOR_DIAG  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    #     CYGSEM_HAL_VIRTUAL_VECTOR_DIAG == 1
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS == 0
    #   --> 0

    # 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 CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
    #     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_ARM_EDB7XXX, 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 {
    # ActiveIf constraint:  CYGSEM_HAL_USE_ROM_MONITOR || CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS 
    #     CYGSEM_HAL_USE_ROM_MONITOR == GDB_stubs
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 1
    # 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 == 0
    #     CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT == 1
    #   --> 1

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

    # The following properties are affected by this value
    # option 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
};

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

# The platform port was written with vector support
# Many platform HALs have adopted the virtual vector support
# after its introduction. On those platforms, old ROM
# monitors will not provide the necessary services - and
# so the use of these services should be disabled per default.
# Newer ports, however, guarantee to provide the necessary
# services in all ROM monitors, and so default to use the
# services.
#
cdl_interface CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED {
    # Implemented by CYGPKG_HAL_ARM_EDB7XXX, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INHERIT_CONSOLE
    #     DefaultValue:  CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED  && !CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS 
    # option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     DefaultValue:  CYG_HAL_STARTUP != "RAM" || !CYGSEM_HAL_USE_ROM_MONITOR || !CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
};

# 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 {
    # ActiveIf constraint: CYGSEM_HAL_USE_ROM_MONITOR
    #     CYGSEM_HAL_USE_ROM_MONITOR == GDB_stubs
    #   --> 1

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

    # 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 == 0
    # Flavor: bool
    # Current value: 0

    # 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 == 1
    #     CYGDBG_HAL_DIAG_TO_DEBUG_CHAN == 0
    # Flavor: bool
    # Current value: 0

    # 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). The default setting of
# this option will see to this, but it is still
# possible to override the option when a target with
# a newer ROM monitor is used.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  CYG_HAL_STARTUP != "RAM" || !CYGSEM_HAL_USE_ROM_MONITOR || !CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
    #     CYG_HAL_STARTUP == RAM
    #     CYGSEM_HAL_USE_ROM_MONITOR == GDB_stubs
    #     CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED == 1
    #   --> 0
    # Requires: CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_ICTRL
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_ICTRL == 1
    #   --> 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 == 0
    #   --> 0

    # 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_ICTRL
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # 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 
    # 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 {
    # ActiveIf constraint: !CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE
    #     CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE == 0
    #   --> 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 CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_ICTRL
    #     DefaultValue:  CYGSEM_HAL_VIRTUAL_VECTOR_INIT_WHOLE_TABLE  || CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT 
    # 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 ictrl/exc virtual vectors
# This option will cause the ictrl/exc virtual
# vectors to be claimed. These are pointers to
# the HAL interrupt handlers table and the HAL VSR
# table.
#
cdl_option CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_ICTRL {
    # 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 == 0
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 1
    #   --> 1

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

# 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 == 0
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 1
    #   --> 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 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 == 0
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 1
    #   --> 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 == 0
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 1
    #   --> 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. These are (unused at present)
# pointers to CPU, board and debug information.
#
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 == 0
    #     CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_DEFAULT == 1
    #   --> 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 0
    # 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 == 0
    #     CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS == 0
    #   --> 0

    # 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:  CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED  && !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 
};

# <
# 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 0
    # value_source default
    # Default value: 0
    # Requires:  CYG_HAL_STARTUP == "ROM" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 0

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

# Work with a ROM monitor
# Support can be enabled for 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.
# "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 1 GDB_stubs
    # value_source default
    # Default value:  CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 
    #     CYG_HAL_STARTUP == RAM
    #   --> 1 GDB_stubs
    # Legal values:  "Generic" "GDB_stubs" 
    # Requires:  CYG_HAL_STARTUP == "RAM" 
    #     CYG_HAL_STARTUP == RAM
    #   --> 1

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

# <
# Common HAL tests
# This option specifies the set of tests for the common HAL.
#
cdl_option CYGPKG_HAL_TESTS {
    # Calculated value:  "tests/cache tests/context tests/intr" 
    # Flavor: data
    # Current_value: tests/cache tests/context tests/intr
};

# ARM architecture
# The ARM 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_ARM {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

    # The following properties are affected by this value
    # component CYGDBG_HAL_DIAG_TO_DEBUG_CHAN
    #     ActiveIf:  CYGPKG_HAL_ARM || CYGPKG_HAL_POWERPC_MPC8xx  || CYGPKG_HAL_V85X_V850 || CYGSEM_HAL_VIRTUAL_VECTOR_DIAG 
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     CYGPKG_HAL_ARM_AEB ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  CYGPKG_HAL_ARM_EBSA285 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_SA11X0 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_EDB7XXX ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_CMA230 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  CYGPKG_HAL_ARM ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" 
    #                 
};

# >
# Enable Thumb instruction set
# Enable use of the Thumb instruction set.
#
cdl_option CYGHWR_THUMB {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Use big-endian mode
# Use the CPU in big-endian mode.
#
cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# ARM CPU family
# It is possible to optimize code for either the ARM7 or
# ARM9 CPU family. This option selects which CPU to
# optimize for on boards that support both CPUs.
#
cdl_option CYGHWR_HAL_ARM_CPU_FAMILY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ARM7
    # value_source default
    # Default value: ARM7
    # Legal values: "ARM7" "ARM9"
};

# Provide diagnostic dump for exceptions
# Print messages about hardware exceptions, including
# raw exception frame dump and register contents.
#
cdl_option CYGHWR_HAL_ARM_DUMP_EXCEPTIONS {
    # 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
    #   --> 1
};

# Process all exceptions with the eCos application
# Normal RAM-based programs which do not include GDB stubs 
# defer processing of the illegal instruction exception to GDB.
# Setting this options allows the program to explicitly handle
# the illegal instruction exception itself.  Note: this will
# prevent the use of GDB to debug the application as breakpoints
# will no longer work.
#
cdl_option CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

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

# Implementations of hal_arm_mem_real_region_top()
#
cdl_interface CYGINT_HAL_ARM_MEM_REAL_REGION_TOP {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
};

# Cirrus Logic development board
# The EDB7XXX HAL package provides the support needed to run
# eCos on a Cirrus Logic development board.
#
cdl_package CYGPKG_HAL_ARM_EDB7XXX {
    # 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_ETH_ARM_EDB7XXX
    #     ActiveIf: CYGPKG_HAL_ARM_EDB7XXX
    # package CYGPKG_IO_SERIAL_ARM_EDB7XXX
    #     ActiveIf: CYGPKG_HAL_ARM_EDB7XXX
    # package CYGPKG_DEVS_FLASH_EDB7XXX
    #     Requires: CYGPKG_HAL_ARM_EDB7XXX
    # option CYGPKG_KERNEL_TESTS
    #     Calculated:  
    #                     CYGPKG_HAL_ARM_AEB ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  CYGPKG_HAL_ARM_EBSA285 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_SA11X0 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_EDB7XXX ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_CMA230 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  CYGPKG_HAL_ARM ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" 
    #                 
};

# >
# Cirrus Logic processor variant
# The Cirrus Logic processor variant.
#
cdl_option CYGHWR_HAL_ARM_EDB7XXX_VARIANT {
    # Flavor: data
    user_value EP7212
    # value_source user
    # Default value: EP7211
    # Legal values:  "CL_PS7111" "EP7209" "EP7211" "EP7212" 

    # The following properties are affected by this value
    # component CYG_HAL_STARTUP
    #     LegalValues:  "ROM"
    #                             ((CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209") ? "" : "RAM")
    #             
    # component CYG_HAL_STARTUP
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "ROM" : "RAM"
    # option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 18432 : 73728 
    # option CYGHWR_HAL_ARM_EDB7XXX_DRAM_SIZE
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 2 :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 0 : 16 
    # option CYGHWR_HAL_ARM_EDB7XXX_DRAM_SIZE
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 2 :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 0 : 16 
    # option CYGBLD_GLOBAL_CFLAGS
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-mcpu=arm710c -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :  "-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" 
    # option CYGBLD_GLOBAL_LDFLAGS
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-mcpu=arm710c -Wl,--gc-sections -Wl,-static -g -nostdlib" : "-mcpu=arm7tdmi -Wl,--gc-sections -Wl,-static -g -nostdlib"
    # option CYGPKG_HAL_ARM_EDB7XXX_CFLAGS_ADD
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-D__CL7111" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "-D__EDB7209" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? "-D__EDB7211" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? "-D__EDB7209 -D__EDB7212" : "" 
    # option CYGPKG_HAL_ARM_EDB7XXX_CFLAGS_ADD
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-D__CL7111" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "-D__EDB7209" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? "-D__EDB7211" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? "-D__EDB7209 -D__EDB7212" : "" 
    # option CYGPKG_HAL_ARM_EDB7XXX_CFLAGS_ADD
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-D__CL7111" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "-D__EDB7209" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? "-D__EDB7211" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? "-D__EDB7209 -D__EDB7212" : "" 
    # option CYGPKG_HAL_ARM_EDB7XXX_CFLAGS_ADD
    #     DefaultValue:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-D__CL7111" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "-D__EDB7209" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? "-D__EDB7211" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? "-D__EDB7209 -D__EDB7212" : "" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
};

# Startup type
# When targetting the Cirrus Logic evaluation boards it is possible to build
# the system for either RAM bootstrap or ROM bootstrap(s). Select
# 'ram' when building programs to load into RAM using onboard
# debug software such as Angel or eCos GDB stubs.  Select 'rom'
# when building a stand-alone application which will be put
# into ROM.
#
cdl_component CYG_HAL_STARTUP {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value RAM
    # value_source default
    # Default value:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "ROM" : "RAM"
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #   --> RAM
    # Legal values:  "ROM"
    #                             ((CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209") ? "" : "RAM")
    #             
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212

    # The following properties are affected by this value
    # option CYGBLD_BUILD_GDB_STUBS
    #     Requires:  CYG_HAL_STARTUP == "ROM" 
    # option CYGBLD_BUILD_FLASH_TOOL
    #     Requires:  CYG_HAL_STARTUP == "RAM" 
    # option CYGBLD_BUILD_AUX_TESTS
    #     Requires:  CYG_HAL_STARTUP == "RAM" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # component CYGHWR_MEMORY_LAYOUT
    #     Calculated:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_LDI
    #     Calculated:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGHWR_MEMORY_LAYOUT_H
    #     Calculated: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    # option CYGSEM_HAL_ROM_MONITOR
    #     Requires:  CYG_HAL_STARTUP == "ROM" 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     DefaultValue:  CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 
    # option CYGSEM_HAL_USE_ROM_MONITOR
    #     Requires:  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 || !CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT_GUARANTEED 
};

# Diagnostic serial port baud rate
# This option selects the baud rate used for the diagnostic port.
# Note: this should match the value chosen for the GDB port if the
# diagnostic and GDB port are the same.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 38400
    # value_source default
    # Default value: 38400
    # Legal values: 9600 19200 38400 115200
};

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

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

    # The following properties are affected by this value
    # option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT
    #     LegalValues: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    # 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
};

# Default console channel.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT {
    # Calculated value: 0
    # Flavor: data
    # Current_value: 0
    # Legal values: 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
    #     CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS == 2
};

# Debug serial port
# The EDB7xxx boards have two serial ports. This option
# chooses which port will be used to connect to a host
# running GDB.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
    # This option is not active
    # ActiveIf constraint: CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
    #     CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE == 0
    #   --> 0

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

# Diagnostic serial port
# The EDB7xxx boards have two serial ports.  This option
# chooses which port will be used for diagnostic output.
#
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
    # This option is not active
    # ActiveIf constraint: CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
    #     CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE == 0
    #   --> 0

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

# Processor clock rate
# The processor can run at various frequencies.
#
cdl_option CYGHWR_HAL_ARM_EDB7XXX_PROCESSOR_CLOCK {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 73728
    # value_source default
    # Default value:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 18432 : 73728 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #   --> 73728
    # Legal values: 18432 36864 49152 73728
};

# Installed DRAM on board
# The Cirrus Logic boards can have various amounts of DRAM installed.
# The machine needs to be initialized differently, depending
# upon the amount installed.
#
cdl_option CYGHWR_HAL_ARM_EDB7XXX_DRAM_SIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 2 :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 0 : 16 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #   --> 16
    # Legal values: 0 2 16
};

# Perform DRAM refresh in software
# This option will add code that refreshes the DRAM by
# touching all of DRAM during the system clock interrupt
# processing.
#
cdl_option CYGHWR_HAL_ARM_EDB7XXX_SOFTWARE_DRAM_REFRESH {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# LCD installed
# If an LCD panel is installed, 128K of DRAM will be dedicated to the
# LCD buffer by the system intialization.  Note: changing this value
# from the default will alter the memory map and a new debug enviroment
# (GDB or CygMon) may be required.
#
cdl_option CYGHWR_HAL_ARM_EDB7XXX_LCD_INSTALLED {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

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

# >
# Real-time clock numerator
#
cdl_option CYGNUM_HAL_RTC_NUMERATOR {
    # 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
};

# Real-time clock period
#
cdl_option CYGNUM_HAL_RTC_PERIOD {
    # Calculated value: (5120)
    # Flavor: data
    # Current_value: 5120
};

# <
# Cirrus Logic 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_HAL_ARM_EDB7XXX_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the Cirrus Logic HAL. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_HAL_ARM_EDB7XXX_CFLAGS_ADD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "-D__EDB7209 -D__EDB7212"
    # value_source default
    # Default value:  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? "-D__CL7111" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? "-D__EDB7209" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? "-D__EDB7211" :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? "-D__EDB7209 -D__EDB7212" : "" 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #   --> "-D__EDB7209 -D__EDB7212"
};

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

# Cirrus Logic tests
# This option specifies the set of tests for the Cirrus Logic HAL.
#
cdl_option CYGPKG_HAL_ARM_EDB7XXX_TESTS {
    # Calculated value:  "tests/dram_test" 
    # Flavor: data
    # Current_value: tests/dram_test
};

# <
# Memory layout
#
cdl_component CYGHWR_MEMORY_LAYOUT {
    # Calculated value:  
    #               CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_cl7111_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_cl7111_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ? 
    #                 (CYG_HAL_STARTUP == "ROM" ? "arm_edb7209_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7211_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7211_rom" : "BOGUS.mlt" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ? 
    #                 (CYG_HAL_STARTUP == "RAM" ? "arm_edb7212_ram" :  CYG_HAL_STARTUP == "ROM" ? "arm_edb7212_rom" : "BOGUS.mlt" ) :  "BOGUS.mlt" 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    # Flavor: data
    # Current_value: arm_edb7212_ram
};

# >
# Memory layout linker script fragment
#
cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
    # Calculated value:  
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.ldi>" :  "BOGUS.ldi" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.ldi>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.ldi>" :  "BOGUS.ldi" ) :  "BOGUS.ldi" 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    # Flavor: data
    # Current_value: <pkgconf/mlt_arm_edb7212_ram.ldi>
};

# Memory layout header file
#
cdl_option CYGHWR_MEMORY_LAYOUT_H {
    # Calculated value: 
    #                   CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "CL_PS7111" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_cl7111_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_cl7111_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7209" ?
    #                     (CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7209_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7211" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7211_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7211_rom.h>" :  "BOGUS.h" ) :  CYGHWR_HAL_ARM_EDB7XXX_VARIANT == "EP7212" ?
    #                     (CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_edb7212_ram.h>" :   CYG_HAL_STARTUP == "ROM" ? "<pkgconf/mlt_arm_edb7212_rom.h>" :  "BOGUS.h" ) :  "BOGUS.h" 
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    #     CYGHWR_HAL_ARM_EDB7XXX_VARIANT == EP7212
    #     CYG_HAL_STARTUP == RAM
    #     CYG_HAL_STARTUP == RAM
    # Flavor: data
    # Current_value: <pkgconf/mlt_arm_edb7212_ram.h>
};

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

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

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL
    #     ActiveIf: CYGPKG_IO
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_IO
    # package CYGPKG_NET
    #     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 {
    # This option is not active
    # ActiveIf constraint: !CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO == current
    #   --> 0

    # 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 {
    # This option is not active
    # The parent CYGPKG_IO_FILE_SUPPORT is not active

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

# <
# Common ethernet support
# Platform independent ethernet drivers
#
cdl_package CYGPKG_IO_ETH_DRIVERS {
    # 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_ETH_ARM_EDB7XXX
    #     ActiveIf: CYGPKG_IO_ETH_DRIVERS
};

# >
# Support for standard eCos TCP/IP stack.
#
cdl_component CYGPKG_IO_ETH_DRIVERS_NET {
    # ActiveIf constraint: CYGPKG_NET
    #     CYGPKG_NET == current
    #   --> 1

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

# >
# Warn when there are no more mbufs
# Warnings about running out of mbufs are printed to the
# diagnostic output channel via diag_printf() if this option
# is enabled.  Mbufs are the network stack's basic dynamic
# memory objects that hold all packets in transit; running
# out is bad for performance but not fatal, not a crash.
# You might want to turn off the warnings to preserve realtime
# properties of the system even in extremis.
#
cdl_option CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Simulate network failures for testing
# This package contains a suite of simulated failure modes
# for the ethernet device layer, including dropping and/or
# corrupting received packets, dropping packets queued for
# transmission, and simulating a complete network break.
# It requires the kernel as a source of time information.
#
cdl_component CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# Drop incoming packets (percentage)
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_DROP_RX {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 10
    # value_source default
    # Default value: 1 10
    # Legal values: 10 50 80
};

# Corrupt incoming packets (percentage)
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_CORRUPT_RX {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 10
    # value_source default
    # Default value: 1 10
    # Legal values: 10 50 80
};

# Drop outgoing packets (percentage)
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_DROP_TX {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES is disabled

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 10
    # value_source default
    # Default value: 1 10
    # Legal values: 10 50 80
};

# Simulate a line cut from time to time
# This option causes the system to drop all packets for a
# short random period (10s of seconds), and then act
# normally for up to 4 times that long.  This simulates your
# sysadmin fiddling with plugs in the network switch
# cupboard.
#
cdl_option CYGPKG_IO_ETH_DRIVERS_SIMULATE_LINE_CUT {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES 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 stand-alone network stack.
#
cdl_component CYGPKG_IO_ETH_DRIVERS_STAND_ALONE {
    # This option is not active
    # ActiveIf constraint: !CYGPKG_NET
    #     CYGPKG_NET == current
    #   --> 0

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

# >
# Number of [network] buffers
# This option is used to allocate space to buffer incoming network
# packets.  These buffers are used to hold data until they can be
# logically processed by higher layers.
#
cdl_option CYGNUM_IO_ETH_DRIVERS_NUM_PKT {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_STAND_ALONE is not active

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

# Show driver warnings
# Selecting this option will allows the stand-alone ethernet driver
# to display warnings on the system console when incoming network
# packets are being discarded due to lack of buffer space.
#
cdl_option CYGSEM_IO_ETH_DRIVERS_WARN {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_STAND_ALONE is not active

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

# Print driver debug information
# Selecting this option will enable the stand-alone driver to print
# lots of information.  Useful only when getting a low-level hardware
# driver to work.
#
cdl_option CYGSEM_IO_ETH_DRIVERS_DEBUG {
    # This option is not active
    # The parent CYGPKG_IO_ETH_DRIVERS_STAND_ALONE is not active

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

# <
# Common ethernet support build options
#
cdl_component CYGPKG_IO_ETH_DRIVERS_OPTIONS {
    # There is no associated value.
};

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

# <
# Cirrus Logic ethernet driver
# Ethernet driver for Cirrus Logic EDB7xxx boards.
#
cdl_package CYGPKG_DEVS_ETH_ARM_EDB7XXX {
    # 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_ETH_DRIVERS
    #     CYGPKG_IO_ETH_DRIVERS == current
    #   --> 1
    # ActiveIf constraint: CYGPKG_HAL_ARM_EDB7XXX
    #     CYGPKG_HAL_ARM_EDB7XXX == current
    #   --> 1

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

# >
# Set the ethernet station address
# Enabling this option will allow the ethernet
# station address to be forced to the value set by the
# configuration.  This may be required if the hardware does
# not include a serial EEPROM for the ESA.
#
cdl_component CYGSEM_ARM_EDB7XXX_SET_ESA {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# The ethernet station address
# The ethernet station address
#
cdl_option CYGDAT_ARM_EDB7XXX_ESA {
    # This option is not active
    # The parent CYGSEM_ARM_EDB7XXX_SET_ESA is disabled

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "{0x08, 0x88, 0x12, 0x34, 0x56, 0x78}"
    # value_source default
    # Default value: "{0x08, 0x88, 0x12, 0x34, 0x56, 0x78}"
};

# <
# Cirrus Logic ethernet driver build options
#
cdl_component CYGPKG_DEVS_ETH_ARM_EDB7XXX_OPTIONS {
    # There is no associated value.
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    # The following properties are affected by this value
    # package CYGPKG_LIBC_STDIO
    #     Requires: 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\""
};

# 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 1
    # value_source default
    # Default value:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    #     CYGPKG_ISOINFRA == current
    #     CYGPKG_IO_FILEIO == current
    #     CYGINT_ISO_ERRNO_CODES == 1
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO == current
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
};

# >
# Termios TTY channel #0
# This option causes '/dev/termios0' to be included in the standard 
# drivers.
#
cdl_component CYGPKG_IO_SERIAL_TERMIOS_TERMIOS0 {
    # 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 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 {
    # 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 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 {
    # 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 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 {
    # 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" : "" 
};

# >
# ARM EDB7XXX serial device drivers
# doc: redirect/ecos-device-drivers.html
# This option enables the serial device drivers for the
# Cirrus Logic EDB7XXX.
#
cdl_package CYGPKG_IO_SERIAL_ARM_EDB7XXX {
    # 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
    # The parent CYGPKG_IO_SERIAL_DEVICES is disabled
    # ActiveIf constraint: CYGPKG_IO_SERIAL
    #     CYGPKG_IO_SERIAL == current
    #   --> 1
    # ActiveIf constraint: CYGPKG_HAL_ARM_EDB7XXX
    #     CYGPKG_HAL_ARM_EDB7XXX == current
    #   --> 1

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

    # The following properties are affected by this value
    # component CYGPKG_CYGMON_HAL_OPTIONS
    #     Requires: CYGPKG_IO_SERIAL_ARM_EDB7XXX
};

# >
# Cirrus Logic EDB7XXX serial port 1 driver
# This option includes the serial device driver for the Cirrus Logic EDB7XXX
# port 1.
#
cdl_component CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX is not active

    # 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_ARM_EDB7XXX_TESTING
    #     ActiveIf: CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1
    # component CYGPKG_CYGMON_HAL_OPTIONS
    #     Requires: (CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser1\"") ||  (CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1)
};

# >
# Device name for the Cirrus Logic EDB7XXX serial port 1 driver
# This option specifies the name of serial device for the ARM 
# EDB7XXX port 1.
#
cdl_option CYGDAT_IO_SERIAL_ARM_EDB7XXX_SERIAL1_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1 is not active

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

    # The following properties are affected by this value
    # option CYGPRI_SER_TEST_SER_DEV
    #     DefaultValue:  CYGDAT_IO_SERIAL_ARM_EDB7XXX_SERIAL1_NAME 
};

# Baud rate for the Cirrus Logic EDB7XXX serial port 1 driver
# This option specifies the default baud rate (speed) for the ARM
# EDB7XXX port 1.
#
cdl_option CYGNUM_IO_SERIAL_ARM_EDB7XXX_SERIAL1_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1 is not active

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

# Buffer size for the Cirrus Logic EDB7XXX serial port 1 driver
# This option specifies the size of the internal buffers used 
# for the Cirrus Logic EDB7XXX port 1.
#
cdl_option CYGNUM_IO_SERIAL_ARM_EDB7XXX_SERIAL1_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1 is not active

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

# <
# Cirrus Logic EDB7XXX serial port 2 driver
# This option includes the serial device driver for the ARM 
# EDB7XXX port 2.
#
cdl_component CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2 {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX is not active

    # 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_CYGMON_HAL_OPTIONS
    #     Requires: (CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser2\"") ||  (CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2)
};

# >
# Device name for the Cirrus Logic EDB7XXX serial port 2 driver
# This option specifies the name of serial device for the ARM 
# EDB7XXX port 2.
#
cdl_option CYGDAT_IO_SERIAL_ARM_EDB7XXX_SERIAL2_NAME {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2 is not active

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

# Baud rate for the Cirrus Logic EDB7XXX serial port 2 driver
# This option specifies the default baud rate (speed) for the 
# Cirrus Logic EDB7XXX port 2.
#
cdl_option CYGNUM_IO_SERIAL_ARM_EDB7XXX_SERIAL2_BAUD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2 is not active

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

# Buffer size for the Cirrus Logic EDB7XXX serial port 2 driver
# This option specifies the size of the internal buffers used for
# the Cirrus Logic EDB7XXX port 2.
#
cdl_option CYGNUM_IO_SERIAL_ARM_EDB7XXX_SERIAL2_BUFSIZE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL2 is not active

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

# <
# 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_ARM_EDB7XXX_OPTIONS {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX is not active

    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_IO_SERIAL_ARM_EDB7XXX_CFLAGS_ADD {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_OPTIONS is not active

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

# Suppressed compiler flags
# This option modifies the set of compiler flags for
# building these serial device drivers. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_SERIAL_ARM_EDB7XXX_CFLAGS_REMOVE {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_OPTIONS is not active

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

# <
# Testing parameters
#
cdl_component CYGPKG_IO_SERIAL_ARM_EDB7XXX_TESTING {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX is not active
    # ActiveIf constraint: CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1
    #     CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1 == 0
    #   --> 0

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

# >
# Serial device used for testing
#
cdl_option CYGPRI_SER_TEST_SER_DEV {
    # This option is not active
    # The parent CYGPKG_IO_SERIAL_ARM_EDB7XXX_TESTING is not active

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

# <
# <
# <
# 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 {
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO == current
    #   --> 1

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

# 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 {
    # Implemented by CYGPKG_IO_SERIAL_ARM_EDB7XXX_TESTING, inactive, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
};

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

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

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

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

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

# >
# Use varargs in diag_printf()
# The diagnostic routine diag_printf() can be defined
# using either variadic arguments or a K&R style definition.
# The former will work in most circumstances, but if variable
# argument handling is broken or missing then the K&R variant
# may be used. This will also generate warnings about the
# declaration of diag_printf() not being a prototype.
# These may safely be ignored.
#
cdl_option CYGDBG_INFRA_DIAG_PRINTF_USE_VARARG {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

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

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

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

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

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

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

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

# 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 {
    # ActiveIf constraint: CYGPKG_UITRON
    #     CYGPKG_UITRON == current
    #   --> 1

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

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

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

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

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

    # The following properties are affected by this value
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGPKG_ISOINFRA
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     Requires: CYGPKG_ISOINFRA
    # option CYGIMP_MEMALLOC_ALLOCATOR_DLMALLOC_USE_MEMCPY
    #     DefaultValue:  0 != CYGPKG_ISOINFRA 
    # component CYGPKG_MEMALLOC_MALLOC_ALLOCATORS
    #     ActiveIf: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_TIME
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STDLIB
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STRING
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_I18N
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_SETJMP
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STARTUP
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_POSIX
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_IO_FILEIO
    #     Requires: CYGPKG_ISOINFRA
    # package CYGPKG_NET
    #     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
};

# 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 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # package CYGPKG_POSIX
    #     Requires: CYGINT_ISO_ERRNO_CODES
    # package CYGPKG_IO_FILEIO
    #     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 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_ERRNO
    # package CYGPKG_POSIX
    #     Requires: CYGINT_ISO_ERRNO
    # component CYGPKG_POSIX_MQUEUES
    #     Requires: CYGINT_ISO_ERRNO
    # package CYGPKG_IO_FILEIO
    #     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 
};

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

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

# Multibyte character implementations
#
cdl_interface CYGINT_ISO_STDLIB_MULTIBYTE {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STDLIB_MULTIBYTE 
    #     CYGINT_ISO_STDLIB_MULTIBYTE == 0
    #   --> 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: data
    # Current_value: 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: data
    # Current_value: 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: data
    # Current_value: 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 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires:  1 >= CYGINT_ISO_STRING_BSD_FUNCS 
    #     CYGINT_ISO_STRING_BSD_FUNCS == 0
    #   --> 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
    # value_source default
    # Default value: 0 0
};

# 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: data
    # Current_value: 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: data
    # Current_value: 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 
    # package CYGPKG_LIBC_STDIO
    #     Requires: CYGINT_ISO_STRING_STRFUNCS
    # component CYGPKG_POSIX_MQUEUES
    #     Requires: CYGINT_ISO_STRING_STRFUNCS
    # package CYGPKG_IO_FILEIO
    #     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 {
    # Implemented by CYGPKG_POSIX_TIMERS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMER_TYPES 
    #     CYGINT_ISO_POSIX_TIMER_TYPES == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/time.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_TIMERS
    #     Requires:  CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER ==  "<cyg/posix/time.h>" 
};

# 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: data
    # Current_value: 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 {
    # Implemented by CYGPKG_POSIX_TIMERS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMERS 
    #     CYGINT_ISO_POSIX_TIMERS == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/time.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_TIMERS
    #     Requires:  CYGBLD_ISO_POSIX_TIMERS_HEADER ==  "<cyg/posix/time.h>" 
};

# 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: data
    # Current_value: 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: data
    # Current_value: 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_POSIX, 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/posix/signal.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_POSIX
    #     Requires:  CYGBLD_ISO_SIGNAL_NUMBERS_HEADER ==  "<cyg/posix/signal.h>" 
};

# Number of signal implementations
#
cdl_interface CYGINT_ISO_SIGNAL_IMPL {
    # Implemented by CYGPKG_POSIX, 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/posix/signal.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_POSIX
    #     Requires:  CYGBLD_ISO_SIGNAL_IMPL_HEADER ==  "<cyg/posix/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 {
    # Implemented by CYGPKG_POSIX_SIGNALS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_POSIX_REALTIME_SIGNALS 
    #     CYGINT_POSIX_REALTIME_SIGNALS == 1
    #   --> 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 {
    # Implemented by CYGPKG_POSIX, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SIGSETJMP 
    #     CYGINT_ISO_SIGSETJMP == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/sigsetjmp.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_POSIX
    #     Requires:  CYGBLD_ISO_SIGSETJMP_HEADER ==  "<cyg/posix/sigsetjmp.h>" 
};

# <
# 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 {
    # Implemented by CYGPKG_IO_FILEIO, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_FCNTL 
    #     CYGINT_ISO_FCNTL == 1
    #   --> 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 {
    # Implemented by CYGPKG_IO_FILEIO, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_OPEN 
    #     CYGINT_ISO_OPEN == 1
    #   --> 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 {
    # Implemented by CYGPKG_IO_FILEIO, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_DIRENT 
    #     CYGINT_ISO_DIRENT == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/fileio/dirent.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_IO_FILEIO
    #     Requires:  CYGBLD_ISO_DIRENT_HEADER == "<cyg/fileio/dirent.h>" 
};

# 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 {
    # Implemented by CYGPKG_POSIX_PTHREAD_REQUIREMENTS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_PTHREADTYPES 
    #     CYGINT_ISO_PTHREADTYPES == 1
    #   --> 1

    # The following properties are affected by this value
    # interface CYGINT_ISO_PTHREADTYPES
    #     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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/types.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires:  CYGBLD_ISO_PTHREADTYPES_HEADER ==  "<cyg/posix/types.h>" 
};

# 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 {
    # Implemented by CYGPKG_NET, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_BSDTYPES 
    #     CYGINT_ISO_BSDTYPES == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <sys/bsdtypes.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_NET
    #     Requires:  CYGBLD_ISO_BSDTYPES_HEADER == "<sys/bsdtypes.h>" 
};

# <
# 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/utsname.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # component CYGPKG_POSIX_UTSNAME
    #     Requires:  CYGBLD_ISO_UTSNAME_HEADER ==  "<cyg/posix/utsname.h>" 
};

# <
# POSIX scheduler
#
cdl_component CYGPKG_ISO_SCHED {
    # There is no associated value.
};

# >
# POSIX scheduler implementations
#
cdl_interface CYGINT_ISO_SCHED_IMPL {
    # Implemented by CYGPKG_POSIX, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SCHED_IMPL 
    #     CYGINT_ISO_SCHED_IMPL == 1
    #   --> 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 {
    # Implemented by CYGPKG_POSIX_SEMAPHORES, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_SEMAPHORES 
    #     CYGINT_ISO_SEMAPHORES == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/semaphore.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_SEMAPHORES
    #     Requires:  CYGBLD_ISO_SEMAPHORES_HEADER ==  "<cyg/posix/semaphore.h>" 
};

# <
# POSIX message queues
#
cdl_component CYGPKG_ISO_MQUEUE {
    # There is no associated value.
};

# >
# Implementations
#
cdl_interface CYGINT_ISO_MQUEUE {
    # Implemented by CYGPKG_POSIX_MQUEUES, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_MQUEUE 
    #     CYGINT_ISO_MQUEUE == 1
    #   --> 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 {
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 1
    #   --> 1

    # Flavor: booldata
    # No user value, uncomment the following line to provide one.
    # user_value 1 8
    # value_source default
    # Default value:  CYGNUM_POSIX_MQUEUE_OPEN_MAX > 0 ? CYGNUM_POSIX_MQUEUE_OPEN_MAX : 0 
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX == 8
    #     CYGNUM_POSIX_MQUEUE_OPEN_MAX == 8
    #   --> 1 8
};

# Maximum number of message priorities
#
cdl_option CYGNUM_ISO_MQUEUE_PRIO_MAX {
    # ActiveIf constraint: CYGINT_ISO_MQUEUE
    #     CYGINT_ISO_MQUEUE == 1
    #   --> 1

    # 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 {
    # Implemented by CYGPKG_POSIX_PTHREAD_REQUIREMENTS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_PTHREAD_IMPL 
    #     CYGINT_ISO_PTHREAD_IMPL == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/pthread.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires:  CYGBLD_ISO_PTHREAD_IMPL_HEADER ==  "<cyg/posix/pthread.h>" 
};

# <
# Limits
#
cdl_component CYGPKG_ISO_LIMITS {
    # There is no associated value.
};

# >
# POSIX pthread limits implementations
#
cdl_interface CYGINT_ISO_POSIX_LIMITS {
    # Implemented by CYGPKG_POSIX, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_POSIX_LIMITS 
    #     CYGINT_ISO_POSIX_LIMITS == 1
    #   --> 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/posix/limits.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_POSIX
    #     Requires:  CYGBLD_ISO_POSIX_LIMITS_HEADER ==  "<cyg/posix/limits.h>" 
};

# 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
    # The inferred value should not be edited directly.
    inferred_value 1 <cyg/fileio/limits.h>
    # value_source inferred
    # Default value: 0 0

    # The following properties are affected by this value
    # package CYGPKG_IO_FILEIO
    #     Requires:  CYGBLD_ISO_OPEN_MAX_HEADER == "<cyg/fileio/limits.h>" 
};

# 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, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires:  1 >= CYGINT_ISO_TERMIOS 
    #     CYGINT_ISO_TERMIOS == 1
    #   --> 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 {
    # Implemented by CYGPKG_POSIX_TIMERS, active, enabled
    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 1
    # Requires:  1 >= CYGINT_ISO_POSIX_TIMER_OPS 
    #     CYGINT_ISO_POSIX_TIMER_OPS == 1
    #   --> 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
};

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

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

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

    # The following properties are affected by this value
    # option CYGBLD_BUILD_FLASH_TOOL
    #     Requires: CYGPKG_KERNEL
    # option CYGBLD_BUILD_AUX_TESTS
    #     Requires: CYGPKG_KERNEL
    # option CYGFUN_HAL_COMMON_KERNEL_SUPPORT
    #     Requires: CYGPKG_KERNEL
    # option CYGFUN_HAL_COMMON_KERNEL_SUPPORT
    #     DefaultValue: CYGPKG_KERNEL
    # 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 CYGFUN_MEMALLOC_KAPI
    #     ActiveIf: 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 
    # package CYGPKG_POSIX
    #     Requires: CYGPKG_KERNEL
    # option CYGPKG_POSIX_TIMERS
    #     Requires: CYGPKG_KERNEL
    # component CYGPKG_POSIX_MQUEUES
    #     Requires: CYGPKG_KERNEL
    # package CYGPKG_UITRON
    #     Requires: 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" : "" 
    # package CYGPKG_IO_FILEIO
    #     Requires: CYGPKG_KERNEL
};

# >
# Kernel interrupt handling
# doc: redirect/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: redirect/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
    # component CYGPKG_POSIX_SIGNALS
    #     Requires: 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
};

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

# <
# Kernel schedulers
# doc: redirect/the-scheduler.html
# 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_option CYGSEM_KERNEL_SCHED_MLQUEUE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1

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

# 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

    # 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
    # The inferred value should not be edited directly.
    inferred_value 1
    # value_source inferred
    # Default value: 0

    # The following properties are affected by this value
    # package CYGPKG_POSIX
    #     Requires: CYGIMP_KERNEL_SCHED_SORTED_QUEUES
};

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

    # The following properties are affected by this value
    # option _POSIX_THREADS
    #     Requires: CYGSEM_KERNEL_SCHED_TIMESLICE
    # option CYGIMP_UITRON_STRICT_CONFORMANCE
    #     Requires: !CYGSEM_KERNEL_SCHED_TIMESLICE
};

# >
# 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
    # The inferred value should not be edited directly.
    inferred_value 1
    # value_source inferred
    # Default value: false
    #     false (unknown) == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires: CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE
};

# <
# 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
    # The inferred value should not be edited directly.
    inferred_value 1
    # value_source inferred
    # Default value: false
    #     false (unknown) == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires: CYGSEM_KERNEL_SCHED_ASR_SUPPORT
};

# >
# 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 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # The inferred value should not be edited directly.
    inferred_value 1
    # value_source inferred
    # Default value: true
    #     true (unknown) == 0
    #   --> 0

    # The following properties are affected by this value
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires: CYGSEM_KERNEL_SCHED_ASR_GLOBAL
};

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

    # The following properties are affected by this value
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires: !CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL
};

# <
# <
# Counters and clocks
# doc: redirect/counters-clocks-and-alarms.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 CYGSEM_LIBC_TIME_CLOCK_WORKING
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGPKG_POSIX_TIMERS
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGIMP_UITRON_STRICT_CONFORMANCE
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGSEM_UITRON_TIME_IS_MILLISECONDS
    #     ActiveIf: CYGVAR_KERNEL_COUNTERS_CLOCK
    # component CYGPKG_UITRON_ALARMS
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # component CYGPKG_UITRON_CYCLICS
    #     Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    # option CYGPKG_WATCHDOG_EMULATE
    #     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
# doc: redirect/thread-operations.html
# 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
    # option CYGIMP_UITRON_STRICT_CONFORMANCE
    #     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
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     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
# 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_PER_THREAD_RAND
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBC_STRING_PER_THREAD_STRTOK
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
    #     Requires: CYGVAR_KERNEL_THREADS_DATA
    # option _POSIX_THREADS
    #     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.
#
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 65535
};

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

# <
# <
# 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 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_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
# doc: redirect/thread-synchronization.html
# 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
# 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" 
    # option _POSIX_THREAD_PRIO_INHERIT
    #     Requires: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT
};

# 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_option 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
    #     DefaultValue:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT ?
    #                             "INHERIT" :
    #                             CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING ?
    #                             "CEILING" : "NONE" 
    # option _POSIX_THREAD_PRIO_PROTECT
    #     Requires: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
};

# 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 {
    # 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" 

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

# Default priority ceiling
# This option defines the default priority ceiling to be
# used if the chosen default priority inversion protocol is
# priority ceiling 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 {
    # This option is not active
    # ActiveIf constraint:  CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT == "CEILING" 
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DEFAULT == INHERIT
    #   --> 0

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

# 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_DYNAMIC
    #     ActiveIf:  CYGINT_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_COUNT > 1 
};

# <
# Message box blocking put support
# 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
# 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
# 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
# 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
};

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

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

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

# <
# 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
# doc: redirect/kernel-apis.html
# 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
    # Requires: CYGPKG_MEMALLOC
    #     CYGPKG_MEMALLOC == current
    #   --> 1
    # Requires: CYGFUN_MEMALLOC_KAPI
    #     CYGFUN_MEMALLOC_KAPI == 1
    #   --> 1

    # The following properties are affected by this value
    # 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:  
    #                     CYGPKG_HAL_ARM_AEB ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  CYGPKG_HAL_ARM_EBSA285 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_SA11X0 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_EDB7XXX ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" :  CYGPKG_HAL_ARM_CMA230 ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  CYGPKG_HAL_ARM ? "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone" :  "tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads tests/kcache1 tests/kcache2" 
    #                 
    #     CYGPKG_HAL_ARM_AEB (unknown) == 0
    #     CYGPKG_HAL_ARM_EBSA285 (unknown) == 0
    #     CYGPKG_HAL_ARM_SA11X0 (unknown) == 0
    #     CYGPKG_HAL_ARM_EDB7XXX == current
    #     CYGPKG_HAL_ARM_CMA230 (unknown) == 0
    #     CYGPKG_HAL_ARM == current
    # Flavor: data
    # Current_value: tests/bin_sem0 tests/bin_sem1 tests/bin_sem2 tests/clock0 tests/clock1 tests/clockcnv tests/cnt_sem0 tests/cnt_sem1 tests/except1 tests/flag0 tests/flag1 tests/intr0 tests/kclock0 tests/kclock1 tests/kexcept1 tests/kintr0 tests/kmbox1 tests/kmutex0 tests/kmutex1 tests/ksched1 tests/ksem0 tests/ksem1 tests/kflag0 tests/kflag1 tests/klock tests/kthread0 tests/kthread1 tests/mbox1 tests/mqueue1 tests/mutex0 tests/mutex1 tests/mutex2 tests/mutex3 tests/sched1 tests/sync2 tests/sync3 tests/thread0 tests/thread1 tests/thread2 tests/release tests/kill tests/thread_gdb tests/tm_basic tests/dhrystone tests/stress_threads 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 current

    # The following properties are affected by this value
    # option CYGFUN_KERNEL_API_C
    #     Requires: CYGPKG_MEMALLOC
    # component CYGPKG_UITRON_MEMPOOLFIXED
    #     Requires: CYGPKG_MEMALLOC
    # component CYGPKG_UITRON_MEMPOOLVAR
    #     Requires: CYGPKG_MEMALLOC
    # package CYGPKG_NET
    #     Requires: CYGPKG_MEMALLOC
};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Use system 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 == current
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

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

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

    # The following properties are affected by this value
    # option CYGFUN_KERNEL_API_C
    #     Requires: CYGFUN_MEMALLOC_KAPI
};

# 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 == current
    #   --> 1

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

# >
# 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/kmemfix1 tests/kmemvar1 tests/malloc1 tests/malloc2 tests/malloc3 tests/malloc4 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/realloc" 
    # Flavor: data
    # Current_value: tests/dlmalloc1 tests/dlmalloc2 tests/kmemfix1 tests/kmemvar1 tests/malloc1 tests/malloc2 tests/malloc3 tests/malloc4 tests/memfix1 tests/memfix2 tests/memvar1 tests/memvar2 tests/realloc
};

# <
# <
# ISO C library
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# The packages under this package enable compatibility with the ISO C
# standard - ISO/IEC 9899:1990. This allows the user application to use
# well known standard C library functions, and in eCos starts a thread
# to invoke the user function main(). This package is a top-level placeholder
# to contain the implementations.
#
cdl_package CYGPKG_LIBC {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

    # The following properties are affected by this value
    # option CYGBLD_BUILD_FLASH_TOOL
    #     Requires: CYGPKG_LIBC
    # option CYGBLD_BUILD_AUX_TESTS
    #     Requires: CYGPKG_LIBC
    # component CYGNUM_LIBM_COMPATIBILITY
    #     Requires: CYGPKG_LIBC
};

# >
# ISO C library date and time functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides time functions specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_TIME {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_C_TIME_TYPES_HEADER == "<cyg/libc/time/time.h>" 
    #     CYGBLD_ISO_C_TIME_TYPES_HEADER == <cyg/libc/time/time.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_C_CLOCK_FUNCS_HEADER ==  "<cyg/libc/time/time.h>" 
    #     CYGBLD_ISO_C_CLOCK_FUNCS_HEADER == <cyg/libc/time/time.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_DIV
    #     CYGINT_ISO_DIV == 1
    #   --> 1
    # Requires: CYGINT_ISO_ABS
    #     CYGINT_ISO_ABS == 1
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_NET
    #     Requires: CYGPKG_LIBC_TIME
};

# >
# Working clock() function
# This option controls whether clock() will
# actually try and determine the process time
# usage. With this option disabled, clock() does
# not disappear, but will permanently return
# (clock_t)-1 as mandated by the ISO C standard.
#
cdl_option CYGSEM_LIBC_TIME_CLOCK_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGFUN_KERNEL_THREADS_TIMER
    #     CYGFUN_KERNEL_THREADS_TIMER == 1
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
};

# Working time() function
# This option controls whether time() will
# actually try and determine the current calendar
# time. With this option disabled, time() does
# not disappear, but will permanently return
# (time_t)-1 as mandated by the ISO C standard.
#
cdl_option CYGSEM_LIBC_TIME_TIME_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_WALLCLOCK
    #     CYGPKG_IO_WALLCLOCK == current
    #   --> 1
};

# Working cyg_libc_time_settime() function
# This option controls whether cyg_libc_time_settime()
# will actually try and set the current calendar
# time. With this option disabled,
# cyg_libc_time_settime() does not disappear, but
# will permanently return an error.
#
cdl_option CYGSEM_LIBC_TIME_SETTIME_WORKING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_IO_WALLCLOCK
    #     CYGPKG_IO_WALLCLOCK == current
    #   --> 1
};

# POSIX time functions
# Enabling this option allows the use of the
# following functions defined in POSIX 1003.1:
# asctime_r(), ctime_r(), gmtime_r(), 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

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

# 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 ""
    # 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_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" 
    # Flavor: data
    # Current_value: tests/asctime tests/clock tests/ctime tests/gmtime tests/localtime tests/mktime tests/strftime tests/time
};

# <
# <
# ISO C library general utility functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides general utility functions in <stdlib.h>
# as specified by the ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STDLIB {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

# >
# 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
# This option controls whether the pseudo-random
# number generation functions rand() and srand()
# have their state recorded on a per-thread
# basis rather than global. If this option is
# disabled, some per-thread space can be saved.
# Note there is also a POSIX-standard rand_r()
# function to achieve a similar effect with user
# support. Enabling this option will use one slot
# of kernel per-thread data. You should ensure you
# have enough slots configured for all your
# per-thread data.
#
cdl_option CYGSEM_LIBC_PER_THREAD_RAND {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1
};

# Random number seed
# This selects the initial random number seed for
# rand()'s pseudo-random number generator. For
# strict ISO standard compliance, this should be 1,
# as per section 7.10.2.2 of the standard.
#
cdl_option CYGNUM_LIBC_RAND_SEED {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Legal values: 0 to 0x7fffffff
};

# Tracing level
# Trace verbosity level for debugging the rand(),
# srand() and rand_r() functions. Increase this
# value to get additional trace output.
#
cdl_option CYGNUM_LIBC_RAND_TRACE_LEVEL {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Legal values: 0 to 1
};

# Simplest implementation
# This provides a very simple implementation of rand()
# that does not perform well with randomness in the
# lower significant bits. However it is exceptionally
# fast. It uses the sample algorithm from the ISO C
# standard itself.
#
cdl_option CYGIMP_LIBC_RAND_SIMPLEST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Simple implementation #1
# This provides a very simple implementation of rand()
# based on the simplest implementation above. However
# it does try to work around the lack of randomness
# in the lower significant bits, at the expense of a
# little speed.
#
cdl_option CYGIMP_LIBC_RAND_SIMPLE1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Knuth implementation #1
# This implements a slightly more complex algorithm
# published in Donald E. Knuth's Art of Computer
# Programming Vol.2 section 3.6 (p.185 in the 3rd ed.).
# This produces better random numbers than the
# simplest approach but is slower.
#
cdl_option CYGIMP_LIBC_RAND_KNUTH1 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Provides strtod()
# This option allows use of the utility function
# strtod() (and consequently atof()) to convert
# from string to double precision floating point
# numbers. Disabling this option removes the
# dependency on the math library package.
#
cdl_option CYGFUN_LIBC_strtod {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM 
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
};

# 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: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides string functions specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STRING {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRING_MEMFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_MEMFUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRING_STRFUNCS_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRING_STRFUNCS_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STRTOK_R_HEADER ==  "<cyg/libc/string/string.h>" 
    #     CYGBLD_ISO_STRTOK_R_HEADER == <cyg/libc/string/string.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
};

# >
# Inline versions of <string.h> functions
# This option chooses whether some of the
# particularly simple string functions from
# <string.h> are available as inline
# functions. This may improve performance, and as
# the functions are small, may even improve code
# size.
#
cdl_option CYGIMP_LIBC_STRING_INLINES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Optimize string functions for code size
# This option tries to reduce string function
# code size at the expense of execution speed. The
# same effect can be produced if the code is
# compiled with the -Os option to the compiler.
#
cdl_option CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

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

# 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 internationalization functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides internationalization functions specified by the
# ISO C standard - ISO/IEC 9899:1990. These include locale-related
# functionality and <ctype.h> functionality.
#
cdl_package CYGPKG_LIBC_I18N {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

# >
# 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: 2
    # Legal values: 2 to 0x7fffffff
};

# 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" 
    # Flavor: data
    # Current_value: tests/ctype tests/setlocale
};

# <
# <
# ISO C library setjmp/longjmp functions
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides non-local jumps based on setjmp() and
# longjmp() in <setjmp.h> as specified by the ISO C
# standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_SETJMP {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires:  CYGBLD_ISO_SETJMP_HEADER == "<cyg/libc/setjmp/setjmp.h>" 
    #     CYGBLD_ISO_SETJMP_HEADER == <cyg/libc/setjmp/setjmp.h>
    #   --> 1
};

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

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

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

# C library setjmp tests
# This option specifies the set of tests for this package.
#
cdl_option CYGPKG_LIBC_SETJMP_TESTS {
    # Calculated value:  "tests/setjmp" 
    # Flavor: data
    # Current_value: tests/setjmp
};

# <
# <
# ISO environment startup/termination
# doc: redirect/c-library-startup.html
# This package manages the control of the
# environment (in the general sense) that an
# application would require for full ISO C / POSIX
# compatibility, including a main() entry point
# supplied with arguments and an environment
# (as retrievable by the getenv() function).
# It also includes at the other end of things,
# what happens when main() returns or exit() is
# called.
#
cdl_package CYGPKG_LIBC_STARTUP {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

    # The following properties are affected by this value
    # component CYGPKG_POSIX_MAIN_THREAD
    #     Requires:  0 != CYGPKG_LIBC_STARTUP 
};

# >
# 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 {
    # Implemented by CYGPKG_POSIX_MAIN_THREAD, active, enabled
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 1

    # 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, disabled
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_OTHER, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

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

# Invoked from initialization context
# With this option selected, main() will be
# called via cyg_user_start() (unless the program
# overrides the default cyg_user_start()). This
# means it is run in the context of the system
# initialization code, without the eCos kernel
# scheduler running, and using the startup stack.
# This means that any functions that may require 
# interactions with a running kernel will not
# work (including libc functions, if configured
# to be thread safe for example), so you should
# restrict yourself to only calling fully
# re-entrant functions from within main() in
# this case.
#
cdl_option CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  0 == CYGPKG_KERNEL && 0 == 
    #                                 CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    #     CYGPKG_KERNEL == current
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 1
    #   --> 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 0
    # value_source default
    # Default value:  0 != CYGPKG_KERNEL && 0 ==  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    #     CYGPKG_KERNEL == current
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 1
    #   --> 0
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
};

# >
# System provides stack for main()'s thread
# This option controls whether the stack of
# main()'s thread is provided by the application or
# provided by the system. When disabled, the
# application must declare a pointer variable
# cyg_libc_main_stack which is a pointer to an
# appropriately aligned region of memory. The
# application must also declare a variable of
# type `int' called cyg_libc_main_stack_size
# which contains the size of the stack in bytes.
# This must be a multiple of 8.
#
cdl_option CYGSEM_LIBC_MAIN_STACK_FROM_SYSTEM {
    # This option is not active
    # The parent CYGSEM_LIBC_STARTUP_MAIN_THREAD is disabled

    # 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 {
    # This option is not active
    # The parent CYGSEM_LIBC_STARTUP_MAIN_THREAD is disabled

    # 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 1
    # value_source default
    # Default value:  0 !=  CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE 
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 1
    #   --> 1
    # Requires: CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE
    #     CYGINT_LIBC_STARTUP_EXTERNAL_INVOKE_MAIN_POSSIBLE == 1
    #   --> 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) 
    # component CYGPKG_POSIX_MAIN_THREAD
    #     Requires: CYGSEM_LIBC_STARTUP_MAIN_OTHER
};

# <
# Don't allow main()'s stack size to be set
# This interface describes whether the stack size
# value set in this package is supported by the
# implementation that invokes main. If not, that
# option is disabled.
#
cdl_interface CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE {
    # Implemented by CYGSEM_LIBC_STARTUP_MAIN_INITCONTEXT, active, disabled
    # This value cannot be modified here.
    # Flavor: bool
    # Current value: 0

    # The following properties are affected by this value
    # option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE
    #     ActiveIf: !CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE
};

# main()'s default thread stack size
# This option sets the size of the stack used
# in the context that invokes main(). For example,
# with an eCos kernel, when the cyg_iso_c_start()
# function is used to invoke the user-supplied
# main() function in an ISO C compatible fashion,
# a separate thread is created to call main().
# This option controls the size of that thread's
# stack, which is allocated in the BSS. It
# must be a multiple of 8. Note, a low number
# here may be overriden by the HAL if there is
# a minimum requirement to process interrupts
# etc. This option cannot be set if the implementation
# that invokes main() does not use it.
#
cdl_option CYGNUM_LIBC_MAIN_DEFAULT_STACK_SIZE {
    # ActiveIf constraint: !CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE
    #     CYGINT_LIBC_STARTUP_MAIN_NO_STACK_SIZE == 0
    #   --> 1

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

# Include atexit() function
# This option enables the use of the atexit()
# function, and ensure that the atexit handlers
# are invoked from within exit() as defined in
# the ISO C standard.
#
cdl_component CYGFUN_LIBC_ATEXIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of functions atexit() supports
# This option sets the number of functions
# that atexit() has room for. In other words,
# the number of separate atexit() calls that
# can be made before calling exit() or returning
# from main() ( in an environment controlled by
# cyg_iso_c_start() ). For strict compliance
# with the ISO C standard this should be at
# least 32.
#
cdl_option CYGNUM_LIBC_ATEXIT_HANDLERS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 1 to 0x7fffffff
};

# <
# Make exit() call fflush()
# This option will ensure that all output
# streams are flushed when exitting using
# exit() as prescribed by the ISO C standard.
#
cdl_option CYGSEM_LIBC_EXIT_CALLS_FFLUSH {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGINT_ISO_STDIO_FILEACCESS 
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STDIO_FILEACCESS
    #     CYGINT_ISO_STDIO_FILEACCESS == 1
    #   --> 1
};

# _exit() stops all threads
# If this option is enabled then _exit(),
# which is called from exit() which itself is
# called on return from main(), stops the eCos
# scheduler. For strict POSIX 1003.1
# compatibility this would be the normal
# behaviour. To allow the thread to simply
# exit, without affecting other threads, simply
# leave this option disabled. If there is no eCos
# scheduler, then _exit() simply loops
# irrespective of the setting of this option.
#
cdl_option CYGSEM_LIBC_EXIT_STOPS_SYSTEM {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# Default environment
# This option allows the setting of the default
# contents of the environment. This is in fact
# the contents of the global environment pointer
# char **environ defined by POSIX 1003.1. Strings
# must be of the form NAME=VALUE, and the final
# entry must be NULL.
#
cdl_option CYGDAT_LIBC_DEFAULT_ENVIRONMENT {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value "{ NULL }"
    # value_source default
    # Default value: "{ NULL }"
};

# Invoke default static constructors
# This option causes the C library to call
# static constructors with default priority
# from within the context of the main() thread,
# working with the co-operation of the HAL.
# This may be needed for environments that
# expect static constructors to be run in a
# thread context. Note that this uses an object
# with priority 65534. Therefore do not use
# priority 65534 for any other static objects
# with this option enabled.
#
cdl_option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
    #     CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG == 0
    #   --> 0
    # Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
    #     CYGSEM_LIBC_STARTUP_MAIN_THREAD == 0
    #     CYGSEM_LIBC_STARTUP_MAIN_OTHER == 1
    #     CYGPKG_POSIX_PTHREAD == 1
    #   --> 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: redirect/the-iso-standard-c-and-math-libraries.html
# This package provides standard input/output functions associated
# with the header file <stdio.h> as specified by the
# ISO C standard - ISO/IEC 9899:1990.
#
cdl_package CYGPKG_LIBC_STDIO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1
    # Requires: CYGPKG_IO_SERIAL_HALDIAG
    #     CYGPKG_IO_SERIAL_HALDIAG == 1
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILETYPES_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILETYPES_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FILEACCESS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FILEACCESS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_CHAR_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_CHAR_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_DIRECT_IO_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_DIRECT_IO_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_ERROR_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_ERROR_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_STDIO_STREAMS_HEADER ==  "<cyg/libc/stdio/stdio.h>" 
    #     CYGBLD_ISO_STDIO_STREAMS_HEADER == <cyg/libc/stdio/stdio.h>
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRERROR
    #     CYGINT_ISO_STRERROR == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_MEMFUNCS
    #     CYGINT_ISO_STRING_MEMFUNCS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_LIBM_USE_STDERR
    #     Requires: CYGPKG_LIBC_STDIO
    # option CYGPKG_NET_NLOOP
    #     Requires:  (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1  
};

# >
# 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: "\"/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 == current
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
};

# scanf() family
# This option enables the use of floating point
# number conversion in the scanf() family (i.e.
# scanf(), sscanf(), vscanf(), etc.) of
# functions. A substantial amount of code space
# can be saved if this option is disabled. If it
# is disabled then floating point specifiers
# (%e, %f, %g) are ignored, and nothing is
# converted.
#
cdl_option CYGSEM_LIBC_STDIO_SCANF_FLOATING_POINT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 != CYGPKG_LIBM &&
    #                                 0 != CYGINT_ISO_STDLIB_STRCONV_FLOAT 
    #     CYGPKG_LIBM == current
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
    # Requires: CYGPKG_LIBM
    #     CYGPKG_LIBM == current
    #   --> 1
    # Requires: CYGINT_ISO_STDLIB_STRCONV_FLOAT
    #     CYGINT_ISO_STDLIB_STRCONV_FLOAT == 1
    #   --> 1
};

# <
# Thread safe I/O streams
# 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 == current
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 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 {
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO == current
    #   --> 1

    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO
    #     CYGSEM_LIBC_STDIO_WANT_BUFFERED_IO == 1
    #   --> 1
};

# <
# <
# Math library
# doc: redirect/the-iso-standard-c-and-math-libraries.html
# ISO standard floating point mathematical library
# containing many useful functions for mathematical
# calculations.
#
cdl_package CYGPKG_LIBM {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

    # The following properties are affected by this value
    # option CYGFUN_LIBC_strtod
    #     Requires: CYGPKG_LIBM
    # option CYGFUN_LIBC_strtod
    #     DefaultValue:  0 != CYGPKG_LIBM 
    # 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 
};

# >
# 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 == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
    # option CYGNUM_LIBM_COMPAT_DEFAULT
    #     Calculated:   CYGNUM_LIBM_COMPATIBILITY == "POSIX" ? "CYGNUM_LIBM_COMPAT_POSIX" : CYGNUM_LIBM_COMPATIBILITY == "IEEE"  ? "CYGNUM_LIBM_COMPAT_IEEE" : CYGNUM_LIBM_COMPATIBILITY == "XOPEN" ? "CYGNUM_LIBM_COMPAT_XOPEN" : CYGNUM_LIBM_COMPATIBILITY == "SVID"  ? "CYGNUM_LIBM_COMPAT_SVID" : "<undefined>"  
};

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

# <
# Thread safety
# This option controls whether the C library has
# support for thread safe operation in general.
# This requires eCos kernel support for per-thread
# data, and adjustment of the stack limit.
#
cdl_component CYGPKG_LIBM_THREAD_SAFETY {
    # There is no associated value.
};

# >
# Compatibility mode setting
# This option makes the setting of the compatiblity
# mode be a per-thread property. This directly
# implies that it also becomes thread-safe.
#
cdl_option CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
    # Requires: !CYGSEM_LIBM_COMPAT_IEEE_ONLY
    #     CYGSEM_LIBM_COMPAT_IEEE_ONLY == 0
    #   --> 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGNUM_LIBM_COMPATMODE_TRACE_LEVEL
    #     Requires: CYGSEM_LIBM_THREAD_SAFE_COMPAT_MODE
};

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

# <
# 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 ? "" : "-ffloat-store" 
    #     CYGPKG_HAL_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
};

# <
# <
# POSIX compatibility layer
# This package enables the POSIX compatibility
# layer that implements IEEE 1003.1.
#
cdl_package CYGPKG_POSIX {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGIMP_KERNEL_SCHED_SORTED_QUEUES
    #     CYGIMP_KERNEL_SCHED_SORTED_QUEUES == 1
    #   --> 1
    # Requires:  CYGBLD_ISO_SIGNAL_NUMBERS_HEADER ==  "<cyg/posix/signal.h>" 
    #     CYGBLD_ISO_SIGNAL_NUMBERS_HEADER == <cyg/posix/signal.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_SIGNAL_IMPL_HEADER ==  "<cyg/posix/signal.h>" 
    #     CYGBLD_ISO_SIGNAL_IMPL_HEADER == <cyg/posix/signal.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_POSIX_LIMITS_HEADER ==  "<cyg/posix/limits.h>" 
    #     CYGBLD_ISO_POSIX_LIMITS_HEADER == <cyg/posix/limits.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_SIGSETJMP_HEADER ==  "<cyg/posix/sigsetjmp.h>" 
    #     CYGBLD_ISO_SIGSETJMP_HEADER == <cyg/posix/sigsetjmp.h>
    #   --> 1
};

# >
# POSIX scheduling configuration
# This component provides controls over scheduling
# in POSIX.
#
cdl_component CYGPKG_POSIX_SCHED {
    # 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_POSIX_PTHREAD
    #     Requires: CYGPKG_POSIX_SCHED
    # option CYGPKG_POSIX_PTHREAD_REQUIREMENTS
    #     Requires: CYGPKG_POSIX_SCHED
};

# >
# POSIX priority scheduling feature test macro
# This option defines the POSIX feature test macro
# that indicates that priority scheduling is present.
# This should not be undefined.
#
cdl_option _POSIX_PRIORITY_SCHEDULING {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGSEM_KERNEL_SCHED_MLQUEUE
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #   --> 1
};

# <
# POSIX pthread configuration
# This component provides configuration controls for
# the POSIX pthreads package.
#
cdl_component CYGPKG_POSIX_PTHREAD {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_POSIX_SCHED
    #     CYGPKG_POSIX_SCHED == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGPKG_POSIX_TIMERS
    #     Requires: CYGPKG_POSIX_PTHREAD
    # component CYGPKG_POSIX_SIGNALS
    #     Requires: CYGPKG_POSIX_PTHREAD
    # option CYGSEM_LIBC_INVOKE_DEFAULT_STATIC_CONSTRUCTORS
    #     Requires:  CYGSEM_LIBC_STARTUP_MAIN_THREAD ||  (CYGSEM_LIBC_STARTUP_MAIN_OTHER && CYGPKG_POSIX_PTHREAD) 
};

# >
# Generic requirements of pthread package
# This option exists merely to carry the pthread
# package requirements.
#
cdl_option CYGPKG_POSIX_PTHREAD_REQUIREMENTS {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGPKG_POSIX_SCHED
    #     CYGPKG_POSIX_SCHED == 1
    #   --> 1
    # Requires: CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE
    #     CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE == 1
    #   --> 1
    # Requires: CYGSEM_KERNEL_SCHED_ASR_SUPPORT
    #     CYGSEM_KERNEL_SCHED_ASR_SUPPORT == 1
    #   --> 1
    # Requires: CYGSEM_KERNEL_SCHED_ASR_GLOBAL
    #     CYGSEM_KERNEL_SCHED_ASR_GLOBAL == 1
    #   --> 1
    # Requires: !CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL
    #     CYGSEM_KERNEL_SCHED_ASR_DATA_GLOBAL == 0
    #   --> 1
    # Requires: CYGFUN_KERNEL_THREADS_STACK_LIMIT
    #     CYGFUN_KERNEL_THREADS_STACK_LIMIT == 1
    #   --> 1
    # Requires:  CYGBLD_ISO_PTHREADTYPES_HEADER ==  "<cyg/posix/types.h>" 
    #     CYGBLD_ISO_PTHREADTYPES_HEADER == <cyg/posix/types.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_PTHREAD_IMPL_HEADER ==  "<cyg/posix/pthread.h>" 
    #     CYGBLD_ISO_PTHREAD_IMPL_HEADER == <cyg/posix/pthread.h>
    #   --> 1
};

# POSIX mutex priority inheritance feature test macro
# This option defines the POSIX feature test macro
# for supporting priority inheritance protocol in mutexes.
#
cdl_option _POSIX_THREAD_PRIO_INHERIT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_INHERIT == 1
    #   --> 1
};

# POSIX mutex priority ceiling feature test macro
# This option defines the POSIX feature test macro
# for supporting priority ceiling protocol in mutexes.
#
cdl_option _POSIX_THREAD_PRIO_PROTECT {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING
    #     CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING == 1
    #   --> 1
};

# Constant values used in pthread package
# These are values that are either configurable, or derived
# from system parameters.
#
cdl_component CYGPKG_POSIX_PTHREAD_VALUES {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# Maximum number of iterations of key destructors
# Maximum number of iterations of key destructors allowed.
#
cdl_option CYGNUM_POSIX_PTHREAD_DESTRUCTOR_ITERATIONS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 4 to 100
};

# Maximum number of per-thread data keys allowed
# Number of per-thread data keys supported.
#
cdl_option CYGNUM_POSIX_PTHREAD_KEYS_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 128
    # value_source default
    # Default value: 128
    # Legal values: 128 to 65535
};

# Maximum number of threads allowed
# Maximum number of threads supported.
#
cdl_option CYGNUM_POSIX_PTHREAD_THREADS_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 64
    # value_source default
    # Default value: 64
    # Legal values: 64 to 1024
};

# <
# Fixed Feature test macros for POSIX
# These options define POSIX feature test macros that
# describe the eCos implementation of pthreads. These
# are not changeable configuration options.
#
cdl_component CYGPKG_POSIX_PTHREAD_FEATURES {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# >
# POSIX thread support feature test macro
# This option defines the POSIX feature test macro
# for thread support.
#
cdl_option _POSIX_THREADS {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGSEM_KERNEL_SCHED_TIMESLICE
    #     CYGSEM_KERNEL_SCHED_TIMESLICE == 1
    #   --> 1
    # Requires: CYGVAR_KERNEL_THREADS_DATA
    #     CYGVAR_KERNEL_THREADS_DATA == 1
    #   --> 1

    # The following properties are affected by this value
    # option _POSIX_THREAD_PRIORITY_SCHEDULING
    #     Requires: _POSIX_THREADS
};

# POSIX thread priority scheduling feature test macro
# This option defines the POSIX feature test macro
# for thread priority scheduling support.
#
cdl_option _POSIX_THREAD_PRIORITY_SCHEDULING {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires: CYGSEM_KERNEL_SCHED_MLQUEUE
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #   --> 1
    # Requires: _POSIX_THREADS
    #     _POSIX_THREADS == 1
    #   --> 1
};

# POSIX stack address attribute feature test macro
# This option defines the POSIX feature test macro
# for supporting the thread stack address in the thread
# attribute object.
#
cdl_option _POSIX_THREAD_ATTR_STACKADDR {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# POSIX stack size attribute feature test macro
# This option defines the POSIX feature test macro
# for supporting the thread stack size in the thread
# attribute object.
#
cdl_option _POSIX_THREAD_ATTR_STACKSIZE {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
};

# POSIX process shared attribute feature test macro
# This option defines the POSIX feature test macro
# for supporting process shared mutexes. Since eCos
# does not have processes, this attribute is undefined.
#
cdl_option _POSIX_THREAD_PROCESS_SHARED {
    # Calculated value: 0
    # Flavor: bool
    # Current value: 0
};

# <
# Main thread configuration
# These options control the thread used to
# run the main() application entry routine.
#
cdl_component CYGPKG_POSIX_MAIN_THREAD {
    # Calculated value: 1
    # Flavor: bool
    # Current value: 1
    # Requires:  0 != CYGPKG_LIBC_STARTUP 
    #     CYGPKG_LIBC_STARTUP == current
    #   --> 1
    # Requires: CYGSEM_LIBC_STARTUP_MAIN_OTHER
    #     CYGSEM_LIBC_STARTUP_MAIN_OTHER == 1
    #   --> 1
};

# >
# main()'s default thread priority
# POSIX compatibility requires that the application's
# main() function be invoked in a thread.
# This option controls the priority of that thread. Its
# default value makes it the second highest priority in
# the system.
#
cdl_option CYGNUM_POSIX_MAIN_DEFAULT_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 30
    # value_source default
    # Default value: 30
    # Legal values: 0 to 31
};

# <
# <
# POSIX timers
# This component provides configuration controls for
# the POSIX timers.
#
cdl_option CYGPKG_POSIX_TIMERS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER ==  "<cyg/posix/time.h>" 
    #     CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER == <cyg/posix/time.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_POSIX_TIMERS_HEADER ==  "<cyg/posix/time.h>" 
    #     CYGBLD_ISO_POSIX_TIMERS_HEADER == <cyg/posix/time.h>
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
    # Requires: CYGPKG_POSIX_PTHREAD
    #     CYGPKG_POSIX_PTHREAD == 1
    #   --> 1

    # The following properties are affected by this value
    # component CYGPKG_POSIX_SIGNALS
    #     Requires: CYGPKG_POSIX_TIMERS
};

# POSIX semaphores
# This component provides configuration controls for
# POSIX semaphores.
#
cdl_option CYGPKG_POSIX_SEMAPHORES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_SEMAPHORES_HEADER ==  "<cyg/posix/semaphore.h>" 
    #     CYGBLD_ISO_SEMAPHORES_HEADER == <cyg/posix/semaphore.h>
    #   --> 1
};

# POSIX message queues
# This component provides configuration controls for
# POSIX message queues.
#
cdl_component CYGPKG_POSIX_MQUEUES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGINT_ISO_MALLOC
    #     CYGINT_ISO_MALLOC == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1
};

# >
# Maximum number of message queues
#
cdl_option CYGNUM_POSIX_MQUEUE_OPEN_MAX {
    # 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 999999

    # The following properties are affected by this value
    # option CYGNUM_ISO_MQUEUE_OPEN_MAX
    #     DefaultValue:  CYGNUM_POSIX_MQUEUE_OPEN_MAX > 0 ? CYGNUM_POSIX_MQUEUE_OPEN_MAX : 0 
    # option CYGNUM_ISO_MQUEUE_OPEN_MAX
    #     DefaultValue:  CYGNUM_POSIX_MQUEUE_OPEN_MAX > 0 ? CYGNUM_POSIX_MQUEUE_OPEN_MAX : 0 
};

# Validate queue descriptors
# This option turns on checking that message queue descriptors
# (of type mqd_t) passed into mq_* functions are valid. If so,
# the functions will fail with EBADF, as POSIX 1003.1 mandates.
# If this option is disabled, if an invalid descriptor is used,
# random corruption may occur, or the system may crash. If
# you are confident invalid descriptors will not be used,
# you may wish to be disable this to save some per-instance
# memory and execution time.
#
cdl_option CYGIMP_POSIX_MQUEUE_VALIDATE_DESCRIPTOR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Allow empty queue notification
# Enabling this option adds the function mq_notify() to the
# API. Without it, some code and per-message queue descriptor
# space is saved, as well as no longer requiring POSIX realtime
# signal support.
#
cdl_option CYGFUN_POSIX_MQUEUE_NOTIFY {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: CYGPKG_POSIX_SIGNALS
    #     CYGPKG_POSIX_SIGNALS == 1
    #   --> 1
    # Requires: CYGPKG_POSIX_SIGNALS
    #     CYGPKG_POSIX_SIGNALS == 1
    #   --> 1
};

# <
# POSIX signals configuration
# This component provides configuration controls for
# the POSIX signals.
#
cdl_component CYGPKG_POSIX_SIGNALS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_KERNEL_EXCEPTIONS
    #     CYGPKG_KERNEL_EXCEPTIONS == 1
    #   --> 1
    # Requires: CYGPKG_POSIX_PTHREAD
    #     CYGPKG_POSIX_PTHREAD == 1
    #   --> 1
    # Requires: CYGPKG_POSIX_TIMERS
    #     CYGPKG_POSIX_TIMERS == 1
    #   --> 1

    # The following properties are affected by this value
    # option CYGFUN_POSIX_MQUEUE_NOTIFY
    #     Requires: CYGPKG_POSIX_SIGNALS
    # option CYGFUN_POSIX_MQUEUE_NOTIFY
    #     DefaultValue: CYGPKG_POSIX_SIGNALS
};

# POSIX utsname configuration
# This component provides configuration controls for
# the POSIX utsname structure and the uname() function.
#
cdl_component CYGPKG_POSIX_UTSNAME {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  CYGBLD_ISO_UTSNAME_HEADER ==  "<cyg/posix/utsname.h>" 
    #     CYGBLD_ISO_UTSNAME_HEADER == <cyg/posix/utsname.h>
    #   --> 1
};

# >
# Length of name strings in utsname structure
#
cdl_option CYG_POSIX_UTSNAME_LENGTH {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 65
    # value_source default
    # Default value: 65
    # Legal values: 1 to 99999999

    # The following properties are affected by this value
    # option CYG_POSIX_UTSNAME_NODENAME_LENGTH
    #     DefaultValue:  CYG_POSIX_UTSNAME_LENGTH 
};

# Length of nodename string in utsname structure
#
cdl_option CYG_POSIX_UTSNAME_NODENAME_LENGTH {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 65
    # value_source default
    # Default value:  CYG_POSIX_UTSNAME_LENGTH 
    #     CYG_POSIX_UTSNAME_LENGTH == 65
    #   --> 65
    # Legal values: 1 to 99999999
};

# <
# POSIX tests
# This option specifies the set of tests for the POSIX package.
#
cdl_option CYGPKG_POSIX_TESTS {
    # Calculated value:  "tests/pthread1 tests/pthread2 tests/pthread3 tests/mutex3 tests/signal1 tests/timer1 tests/tm_basic tests/signal2 tests/mqueue1 tests/mqueue2 tests/sigsetjmp" 
    # Flavor: data
    # Current_value: tests/pthread1 tests/pthread2 tests/pthread3 tests/mutex3 tests/signal1 tests/timer1 tests/tm_basic tests/signal2 tests/mqueue1 tests/mqueue2 tests/sigsetjmp
};

# <
# uITRON compatibility layer
# doc: redirect/micro-itron-api.html
# eCos supports a uITRON Compatibility Layer, providing
# full Level S (Standard) compliance with Version 3.02 of
# the uITRON Standard, plus many Level E (Extended) features.
# uITRON is the premier Japanese embedded RTOS standard.
#
cdl_package CYGPKG_UITRON {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

    # The following properties are affected by this value
    # option CYGSEM_START_UITRON_COMPATIBILITY
    #     Requires: CYGPKG_UITRON
    # option CYGSEM_START_UITRON_COMPATIBILITY
    #     ActiveIf: CYGPKG_UITRON
};

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

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

# Check strict uITRON standards conformance
# Require the rest of the system configuration
# to match the needs of strict uITRON standards conformance.
# This option can only be set if the rest of the system is
# configured correctly for uITRON semantics, for example
# there must be a realtime clock, a suitable scheduler, and no
# timeslicing.
# Of course a system without this selected can be completely
# conformant; this is here to help you check.
#
cdl_option CYGIMP_UITRON_STRICT_CONFORMANCE {
    # 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
    # Requires: CYGSEM_KERNEL_SCHED_MLQUEUE
    #     CYGSEM_KERNEL_SCHED_MLQUEUE == 1
    #   --> 1
    # Requires: !CYGSEM_KERNEL_SCHED_TIMESLICE
    #     CYGSEM_KERNEL_SCHED_TIMESLICE == 1
    #   --> 0
    # Requires: CYGFUN_KERNEL_THREADS_TIMER
    #     CYGFUN_KERNEL_THREADS_TIMER == 1
    #   --> 1
};

# System configuration overrides uITRON
# Do not require the rest of the system configuration
# to match the needs of strict uITRON standards conformance.
# For example a bitmap scheduler, or timeslicing, can be used
# with the uITRON functions, but such an environment is not
# strictly conformant with the uITRON specification.
# Of course a system with this selected can be completely
# conformant; but it is up to you to configure it correctly.
#
cdl_option CYGIMP_UITRON_LOOSE_CONFORMANCE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Inline functions
# If compiling your application with a C++ compiler,
# uITRON functions can be inline: set this to make it so.
# Inlining functions often increases execution speed,
# though possibly at the cost of a larger executable,
# depending on what functions are used.
# Do NOT set this if compiling your application
# in plain C.
#
cdl_option CYGIMP_UITRON_INLINE_FUNCS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# C++ function names
# If compiling your application with a C++ compiler,
# uITRON functions can be given C++ style mangled names:
# set this to make it so.
# This option may make debugging your program easier,
# depending on your development environment.
# Do NOT set this if compiling your application
# in plain C.
#
cdl_option CYGIMP_UITRON_CPP_OUTLINE_FUNCS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Return error codes for bad params
# When an application is fully debugged there is no need
# to check for bad parameters on every system call, for those
# parameters which are typically pointers or constants.
# Removing the checking code saves space
# and improves performance: set this to make it so.
# When this option is set, the correctness of parameters
# is asserted using CYG_ASSERT() which compiles to
# nothing in a non-debug configuration.
#
cdl_option CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# NULL is a good pointer
# uITRON deliberately defines the constant NADR (-1) for
# use as an invalid memory address.
# The value -1 is chosen to allow working in microcontrollers
# which have real memory at address zero, the traditional 'C'
# NULL pointer.
# By default, uITRON functions check for both NULL and NADR as
# bad addresses: set this option to prevent checking for
# NULL and allow pointers to address zero to be used.
#
cdl_option CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Semaphores
# uITRON Semaphore objects are used with functions
# named xxx_sem(); they support traditional semaphore
# semantics.
#
cdl_component CYGPKG_UITRON_SEMAS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of semaphores
# The number of uITRON semaphores present in the system.
# Valid semaphore object IDs will range from 1 to this value.
#
cdl_option CYGNUM_UITRON_SEMAS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 1 to 65535
};

# Support create and delete
# Support semaphore create and delete operations (cre_sem, del_sem).
# Otherwise all semaphores are created, up to the number specified 
# above.
#
cdl_component CYGPKG_UITRON_SEMAS_CREATE_DELETE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of semaphores created initially
# The number of uITRON semaphores initially created.
# This number should not be more than the number
# of semaphores in the system, though setting it to a large
# value to mean 'all' is acceptable.
# Initially, only semaphores numbered 1 to this number exist;
# higher numbered ones must be created before use.
# It is only useful to initialize semaphores up to this number;
# higher numbered ones must be created in order to use them,
# and so they will be re-initialized.
#
cdl_option CYGNUM_UITRON_SEMAS_INITIALLY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 0 to 65535
};

# <
# Initialize semaphore counts
# Initialize semaphores to specific count values.
# Otherwise semaphores are initialized with the count
# set to zero.
#
cdl_component CYGPKG_UITRON_SEMAS_ARE_INITIALIZED {
    # 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
};

# >
# Static initializers
# A list of initializers separated by commas,
# one per line.
# An initializer is 'CYG_UIT_SEMA(INITIAL-COUNT)'
# or 'CYG_UIT_SEMA_NOEXS' for slots above the number
# initially to be created, when create and delete
# operations are supported.
# Note: this option is invoked in the context of a
# C++ array initializer, between curly brackets.
# Ensure that the number of initializers here exactly
# matches the total number of semaphores specified.
#
cdl_option CYGDAT_UITRON_SEMA_INITIALIZERS {
    # This option is not active
    # The parent CYGPKG_UITRON_SEMAS_ARE_INITIALIZED is disabled

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

# <
# <
# Mailboxes
# uITRON Mailbox objects are used with functions
# named xxx_msg() and xxx_mbx(); they support
# passing addresses (of 'messages') between tasks
# in a safe manner.
#
cdl_component CYGPKG_UITRON_MBOXES {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of mailboxes
# The number of uITRON mailboxes present in the system.
# Valid mailbox object IDs will range from 1 to this value.
#
cdl_option CYGNUM_UITRON_MBOXES {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 1 to 65535
};

# Support create and delete
# Support mailbox create and delete operations (cre_mbx, del_mbx).
# Otherwise all mailboxes are created, up to the number specified above.
#
cdl_component CYGPKG_UITRON_MBOXES_CREATE_DELETE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of mailboxes created initially
# The number of uITRON mailboxes initially created.
# This number should not be more than the number
# of mailboxes in the system, though setting it to a large
# value to mean 'all' is acceptable.
# Initially, only mailboxes numbered 1 to this number exist;
# higher numbered ones must be created before use.
#
cdl_option CYGNUM_UITRON_MBOXES_INITIALLY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 0 to 65535
};

# <
# <
# Eventflags
# uITRON Eventflag objects are used with functions
# named xxx_flg(); they support communication between
# tasks by means of setting and clearing bits in a word
# or flag value.
# Waiting for all or any of a set of bits is supported.
#
cdl_component CYGPKG_UITRON_FLAGS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of eventflags
# The number of uITRON eventflag objects present in the system.
# Valid eventflag object IDs will range from 1 to this value.
#
cdl_option CYGNUM_UITRON_FLAGS {
    # 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 create and delete
# Support eventflag create and delete operations (cre_flg, del_flg).
# Otherwise all eventflags are created, up to the number specified above.
#
cdl_component CYGPKG_UITRON_FLAGS_CREATE_DELETE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of eventflags created initially
# The number of uITRON eventflags initially created.
# This number should not be more than the number
# of eventflags in the system, though setting it to a large
# value to mean 'all' is acceptable.
# Initially, only eventflags numbered 1 to this number exist;
# higher numbered ones must be created before use.
#
cdl_option CYGNUM_UITRON_FLAGS_INITIALLY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 5
    # value_source default
    # Default value: 5
    # Legal values: 0 to 65535
};

# <
# <
# Tasks
# uITRON Tasks are the basic blocks of multi-tasking
# in the uITRON world; they are threads or lightweight
# processes, sharing the address space and the CPU.
# They communicate using the primitives outlined above.
# Each has a stack, an entry point (a C or C++ function),
# and (where appropriate) a scheduling priority.
#
cdl_component CYGPKG_UITRON_TASKS {
    # There is no associated value.
};

# >
# Number of tasks
# The number of uITRON tasks present in the system.
# Valid task object IDs will range from 1 to this value.
#
cdl_option CYGNUM_UITRON_TASKS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 1 to 65535
};

# Start tasks
# The number of uITRON tasks to start automatically.
# Tasks from 1 to this value will be started
# at the beginning of application execution.
# A value of zero here means to start them all.
# Tasks started in this way have a start code of
# zero, as if they were started by sta_tsk(i,0).
# If create and delete operations are supported,
# this number should be no greater than the number
# of tasks created initially.
#
cdl_option CYGNUM_UITRON_START_TASKS {
    # 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 65535
};

# Support create and delete
# Support task create and delete operations (cre_tsk, del_tsk).
# Otherwise all tasks are created, up to the number specified above.
#
cdl_component CYGPKG_UITRON_TASKS_CREATE_DELETE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Number of tasks created initially
# The number of uITRON tasks initially created.
# This number should not be more than the number
# of tasks in the system, though setting it to a large
# value to mean 'all' is acceptable.
# Initially, only tasks numbered 1 to this number exist;
# higher numbered ones must be created before use.
#
cdl_option CYGNUM_UITRON_TASKS_INITIALLY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 1 to 65535
};

# <
# Default stack size
# Define a default stack size for uITRON tasks,
# for use in the initialization options below.
# This will be overridden where it is used if the
# architectural HAL requires a minimum stack size
# to handle interrupts correctly.
#
cdl_option CYGNUM_UITRON_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: 128 to 0x7FFFFFFF
};

# Externs for initialization
# Task initializers may refer to external objects
# such as memory for stack or functions to call.
# Use this option to define or declare any external
# objects needed by the task static initializer below.
# Example: create some memory for a stack using
# 'static char stack1[CYGNUM_UITRON_STACK_SIZE];'
# to set up a chunk of memory of the default stack size.
# Note: this option is invoked in the 'outermost' context
# of C++ source, where global/static objects are created;
# it should contain valid, self-contained, C++ source.
#
cdl_option CYGDAT_UITRON_TASK_EXTERNS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value \
    # "extern \"C\" void task1( unsigned int ); \\
    #  extern \"C\" void task2( unsigned int ); \\
    #  extern \"C\" void task3( unsigned int ); \\
    #  extern \"C\" void task4( unsigned int ); \\
    #  static char stack1\[ CYGNUM_UITRON_STACK_SIZE \], \\
    #  stack2\[ CYGNUM_UITRON_STACK_SIZE \], \\
    #  stack3\[ CYGNUM_UITRON_STACK_SIZE \], \\
    #  stack4\[ CYGNUM_UITRON_STACK_SIZE \];"
    # value_source default
    # Default value: \
    #     "extern \"C\" void task1( unsigned int ); \\
    #      extern \"C\" void task2( unsigned int ); \\
    #      extern \"C\" void task3( unsigned int ); \\
    #      extern \"C\" void task4( unsigned int ); \\
    #      static char stack1\[ CYGNUM_UITRON_STACK_SIZE \], \\
    #      stack2\[ CYGNUM_UITRON_STACK_SIZE \], \\
    #      stack3\[ CYGNUM_UITRON_STACK_SIZE \], \\
    #      stack4\[ CYGNUM_UITRON_STACK_SIZE \];"
};

# Static initializers
# Tasks must be statically
# initialized: enter a list of initializers
# separated by commas, one per line.
# An initializer is
# 'CYG_UIT_TASK(NAME,PRIO,FUNC,STACK,SIZE)'
# where name is a quoted string to name the task,
# prio is the initial priority of the task,
# func is the name of the entry point,
# stack is the address of the task's stack,
# and size is the size of the task's stack.
# When create and delete operations are supported,
# 'CYG_UIT_TASK_NOEXS(NAME,STACK,SIZE)' should be
# used for tasks which are not initially created,
# in order to tell the system what memory to use
# for stacks when these tasks are created later on.
# Using 'CYGNUM_UITRON_STACK_SIZE' for size
# is recommended, to use the option defined above,
# so long as that truly is the size of your stack(s).
# Note: this option is invoked in the context of a
# C++ array initializer, between curly brackets.
# Ensure that the number of initializers here exactly
# matches the number of tasks specified.
#
cdl_option CYGDAT_UITRON_TASK_INITIALIZERS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value \
    # "CYG_UIT_TASK( \"t1\", 1, task1, &stack1, CYGNUM_UITRON_STACK_SIZE ), \\
    #  CYG_UIT_TASK( \"t2\", 2, task2, &stack2, CYGNUM_UITRON_STACK_SIZE ), \\
    #  CYG_UIT_TASK( \"t3\", 3, task3, &stack3, CYGNUM_UITRON_STACK_SIZE ), \\
    #  CYG_UIT_TASK( \"t4\", 4, task4, &stack4, CYGNUM_UITRON_STACK_SIZE ),"
    # value_source default
    # Default value: \
    #     "CYG_UIT_TASK( \"t1\", 1, task1, &stack1, CYGNUM_UITRON_STACK_SIZE ), \\
    #      CYG_UIT_TASK( \"t2\", 2, task2, &stack2, CYGNUM_UITRON_STACK_SIZE ), \\
    #      CYG_UIT_TASK( \"t3\", 3, task3, &stack3, CYGNUM_UITRON_STACK_SIZE ), \\
    #      CYG_UIT_TASK( \"t4\", 4, task4, &stack4, CYGNUM_UITRON_STACK_SIZE ),"
};

# <
# Fixed-size memorypools
# uITRON supports memory pools for dynamic, task-safe
# memory allocation.
# Two kinds are supported, fixed-size and variable-size.
# There may be multiple of each
# type of pool, each with differing characteristics.
# This option controls whether there are any fixed-size
# memorypools in the system.
# A fixed-size memorypool allocates blocks of memory of
# its preset fixed size and none other.
#
cdl_component CYGPKG_UITRON_MEMPOOLFIXED {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_MEMALLOC
    #     CYGPKG_MEMALLOC == current
    #   --> 1
};

# >
# Number of fixed-size memorypools
# The number of uITRON Fixed-Size
# Memorypools present in the system.
# Valid Fixed-Size Memorypool IDs will range
# from 1 to this value.
#
cdl_option CYGNUM_UITRON_MEMPOOLFIXED {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 1 to 65535

    # The following properties are affected by this value
    # component CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
    #     ActiveIf: (0 < CYGNUM_UITRON_MEMPOOLFIXED)
};

# Support create and delete
# Support fixed-size memory pool
# create and delete operations
# (cre_mpf, del_mpf).
# Otherwise all fixed mempools are created,
# up to the number specified above.
#
cdl_component CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE {
    # ActiveIf constraint: (0 < CYGNUM_UITRON_MEMPOOLFIXED)
    #     CYGNUM_UITRON_MEMPOOLFIXED == 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 fixed mempools created initially
# The number of fixed mempools initially created.
# This number should not be more than the number
# of fixed mempools in the system, though setting
# it to a large value to mean 'all' is acceptable.
# Initially, only fixed mempools numbered from
# 1 to this number exist;
# higher numbered ones must be created before use.
# Whilst all mempools must be initialized to tell
# the system what memory to use for each pool,
# it is only useful to initialize the blocksize of
# fixed mempools up to this number;
# the blocksize for higher numbered ones
# will be defined when they are created.
#
cdl_option CYGNUM_UITRON_MEMPOOLFIXED_INITIALLY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 0 to 65535
};

# <
# Externs for initialization
# Fixed mempool initializers may refer to external
# objects such as memory for the pool to manage.
# Use this option to define or declare any external
# objects needed by the pool's static initializer below.
# Example: create some memory for a mempool using
# 'static char fpool1[2000];'
# to set up a chunk of memory of 2000 bytes.
# Note: this option is invoked in the 'outermost' context
# of C++ source, where global/static objects are created;
# it should contain valid, self-contained, C++ source.
#
cdl_option CYGDAT_UITRON_MEMPOOLFIXED_EXTERNS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value \
    # "static char fpool1\[ 2000 \], \\
    #  fpool2\[ 2000 \], \\
    #  fpool3\[ 2000 \];"
    # value_source default
    # Default value: \
    #     "static char fpool1\[ 2000 \], \\
    #      fpool2\[ 2000 \], \\
    #      fpool3\[ 2000 \];"
};

# Static initializers
# Fixed block memory pools should be statically
# initialized: enter a list of initializers
# separated by commas, one per line.
# An initializer is
# 'CYG_UIT_MEMPOOLFIXED(ADDR,SIZE,BLOCK)'
# where addr is the address of memory to manage,
# size is the total size of that memory, and
# block is the block size for allocation by the pool.
# If create and delete operations are supported,
# initializers of the form
# 'CYG_UIT_MEMPOOLFIXED_NOEXS(ADDR,SIZE)' should be
# used for pools which are not initially created, to tell
# the system what memory to use for each pool.
# Note: this option is invoked in the context of a
# C++ array initializer, between curly brackets.
# Ensure that the number of initializers here exactly
# matches the total number of fixed pools specified.
#
cdl_option CYGDAT_UITRON_MEMPOOLFIXED_INITIALIZERS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value \
    # "CYG_UIT_MEMPOOLFIXED( fpool1, 2000,  20 ), \\
    #  CYG_UIT_MEMPOOLFIXED( fpool2, 2000, 100 ), \\
    #  CYG_UIT_MEMPOOLFIXED( fpool3, 2000, 500 ),"
    # value_source default
    # Default value: \
    #     "CYG_UIT_MEMPOOLFIXED( fpool1, 2000,  20 ), \\
    #      CYG_UIT_MEMPOOLFIXED( fpool2, 2000, 100 ), \\
    #      CYG_UIT_MEMPOOLFIXED( fpool3, 2000, 500 ),"
};

# <
# Variable-size memorypools
# uITRON supports memory pools for dynamic, task-safe
# memory allocation.
# Two kinds are supported, fixed-size and variable-size.
# There may be multiple of each
# type of pool, each with differing characteristics.
# This option controls whether there are any variable-size
# memorypools in the system.
# A variable-size memorypool allocates blocks of memory of
# any size requested, resources permitting.
#
cdl_component CYGPKG_UITRON_MEMPOOLVAR {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires: CYGPKG_MEMALLOC
    #     CYGPKG_MEMALLOC == current
    #   --> 1
};

# >
# Number of variable-size memory pools
# The number of uITRON Variable-Size Memorypools present in the system.
# Valid Variable-Size Memorypool IDs will range from 1 to this value.
#
cdl_option CYGNUM_UITRON_MEMPOOLVAR {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 1 to 65535

    # The following properties are affected by this value
    # component CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE
    #     ActiveIf: (0 < CYGNUM_UITRON_MEMPOOLVAR)
};

# Support create and delete
# Support variable-size memory pool create and delete operations
# (cre_mpl, del_mpl). Otherwise all variable-size mempools are created,
# up to the number specified above.
#
cdl_component CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE {
    # ActiveIf constraint: (0 < CYGNUM_UITRON_MEMPOOLVAR)
    #     CYGNUM_UITRON_MEMPOOLVAR == 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 variable-size mempools created initially
# The number of variable-size mempools initially created.
# This number should not be more than the number
# of variable mempools in the system, though setting
# it to a large value to mean 'all' is acceptable.
# Initially, only variable mempools numbered from
# 1 to this number exist;
# higher numbered ones must be created before use.
# All mempools must be initialized to tell
# the system what memory to use for each pool.
#
cdl_option CYGNUM_UITRON_MEMPOOLVAR_INITIALLY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 0 to 65535
};

# <
# Externs for initialization
# Variable mempool initializers may refer to external
# objects such as memory for the pool to manage.
# Use this option to define or declare any external
# objects needed by the pool's static initializer below.
# Example: create some memory for a mempool using
# 'static char vpool1[2000];'
# to set up a chunk of memory of 2000 bytes.
# Note: this option is invoked in the 'outermost' context
# of C++ source, where global/static objects are created;
# it should contain valid, self-contained, C++ source.
#
cdl_option CYGDAT_UITRON_MEMPOOLVAR_EXTERNS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value \
    # "static char vpool1\[ 2000 \], \\
    #  vpool2\[ 2000 \], \\
    #  vpool3\[ 2000 \];"
    # value_source default
    # Default value: \
    #     "static char vpool1\[ 2000 \], \\
    #      vpool2\[ 2000 \], \\
    #      vpool3\[ 2000 \];"
};

# Static initializers
# Variable block memory pools should be statically
# initialized: enter a list of initializers
# separated by commas, one per line.
# An initializer is
# 'CYG_UIT_MEMPOOLVAR(ADDR,SIZE)'
# where addr is the address of memory to manage, and
# size is the total size of that memory.
# If create and delete operations are supported,
# initializers of the form
# 'CYG_UIT_MEMPOOLVAR_NOEXS(ADDR,SIZE)' should be
# used for pools which are not initially created, to tell
# the system what memory to use for each pool.
# Note: this option is invoked in the context of a
# C++ array initializer, between curly brackets.
# Ensure that the number of initializers here exactly
# matches the total number of variable pools specified.
#
cdl_option CYGDAT_UITRON_MEMPOOLVAR_INITIALIZERS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value \
    # "CYG_UIT_MEMPOOLVAR( vpool1, 2000 ), \\
    #  CYG_UIT_MEMPOOLVAR( vpool2, 2000 ), \\
    #  CYG_UIT_MEMPOOLVAR( vpool3, 2000 ),"
    # value_source default
    # Default value: \
    #     "CYG_UIT_MEMPOOLVAR( vpool1, 2000 ), \\
    #      CYG_UIT_MEMPOOLVAR( vpool2, 2000 ), \\
    #      CYG_UIT_MEMPOOLVAR( vpool3, 2000 ),"
};

# <
# uITRON time unit is mS
# Setting this option enables a conversion feature so that
# time parameters to uITRON APIs are converted from milliSeconds
# to whatever the eCos kernel real-time clock's units are,
# or vice versa.
# If this option is not set, time parameters are expressed in
# kernel clock ticks.
#
cdl_option CYGSEM_UITRON_TIME_IS_MILLISECONDS {
    # 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 0
    # value_source default
    # Default value: 0
};

# Alarm handlers
# uITRON Alarm Handlers are used with functions
# named def_alm() and ref_alm(); they support
# simple timing, with a function callback
# at the end of the timed period.
#
cdl_component CYGPKG_UITRON_ALARMS {
    # 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
};

# >
# Number of alarm handlers
# The number of uITRON alarm
# handlers present in the system.
# Valid alarm handler numbers will range
# from 1 to this value.
#
cdl_option CYGNUM_UITRON_ALARMS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 1 to 65535
};

# <
# Cyclic handlers
# uITRON Cyclic Handlers are used with functions
# named xxx_cyc(); they support timing
# with a periodic function callback that
# can be dynamically turned on or off, and
# resynchronized with external events.
#
cdl_component CYGPKG_UITRON_CYCLICS {
    # 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
};

# >
# Number cyclic handlers
# The number of uITRON cyclics
# handlers present in the system.
# Valid cyclic handler numbers will range
# from 1 to this value.
#
cdl_option CYGNUM_UITRON_CYCLICS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 3
    # value_source default
    # Default value: 3
    # Legal values: 1 to 65535
};

# <
# Interrupt-safe functions
# The uITRON system provides some functions which may
# safely be used within interrupt handlers.  In eCos, this
# means within ISRs, providing that the corresponding DSR is
# associated with that interrupt.  These functions are
# typically named ixxx_yyy(), according to the uITRON
# specification, for example isig_sem() corresponds to normal
# function sig_sem().
#
cdl_component CYGPKG_UITRON_INTERRUPT_FUNCTIONS {
    # There is no associated value.

    # The following properties are affected by this value
};

# >
# Execute in ISR if safe
# These functions of necessity maintain a queue of
# operations requested for deferred execution.  However,
# during an interrupt, it may be safe to perform scheduling
# operations.  If this option is set, the interrupt-safe
# functions will have effect there and then if it is indeed
# safe, rather than queueing a request to perform the
# operation in the DSR.
#
cdl_option CYGSEM_UITRON_ISRFUNCS_TRY_IMMEDIATE_EXECUTION {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Deferred operation queue size
# These functions of necessity maintain a queue of
# operations requested for deferred execution.  This option
# controls the queue size.  It must be a power of two for
# implementation reasons.
#
cdl_option CYGNUM_UITRON_ISR_ACTION_QUEUESIZE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 32
    # value_source default
    # Default value: 32
    # Legal values: 4 8 16 32 64 128 256
};

# <
# Version information
# The get_ver() uITRON system call returns
# several version related values describing
# the vendor, product and CPU in question
# as well as the version of the uITRON
# standard supported.
# These values may be specified here.
#
cdl_component CYGPKG_UITRON_VERSION {
    # There is no associated value.
};

# >
# OS maker
# This value is returned in the 'maker'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_MAKER {
    # 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 0xFFFF
};

# OS identification
# This value is returned in the 'id'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_ID {
    # 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 0xFFFF
};

# ITRON specification
# This value is returned in the 'spver'
# field of the T_VER structure in
# response to a get_ver() system call.
# Do NOT change this value.
#
cdl_option CYGNUM_UITRON_VER_SPVER {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x00005302
    # value_source default
    # Default value: 0x00005302
    # Legal values: 0 to 0xFFFF
};

# OS product version
# This value is returned in the 'prver'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_PRVER {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x00000100
    # value_source default
    # Default value: 0x00000100
    # Legal values: 0 to 0xFFFF
};

# Product info
# The get_ver() uITRON system call returns
# several version related values describing
# the vendor, product and CPU in question
# as well as the version of the uITRON
# standard supported.
# These values may be specified here.
#
cdl_component CYGPKG_UITRON_VERSION_PRNO {
    # There is no associated value.
};

# >
# Field 0
# This value is returned in the 'prno[0]'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_PRNO_0 {
    # 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 0xFFFF
};

# Field 1
# This value is returned in the 'prno[1]'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_PRNO_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 0xFFFF
};

# Field 2
# This value is returned in the 'prno[2]'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_PRNO_2 {
    # 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 0xFFFF
};

# Field 3
# This value is returned in the 'prno[3]'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_PRNO_3 {
    # 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 0xFFFF
};

# <
# CPU information
# This value is returned in the 'cpu'
# field of the T_VER structure in
# response to a get_ver() system call.
#
cdl_option CYGNUM_UITRON_VER_CPU {
    # 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 0xFFFF
};

# System variant
# This value is returned in the 'var'
# field of the T_VER structure in
# response to a get_ver() system call.
# Do NOT change this value.
#
cdl_option CYGNUM_UITRON_VER_VAR {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0x00008000
    # value_source default
    # Default value: 0x00008000
    # Legal values: 0 to 0xFFFF
};

# <
# uITRON 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_UITRON_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the uITRON compatibility layer. These flags are used in addition
# to the set of global flags.
#
cdl_option CYGPKG_UITRON_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 uITRON compatibility layer. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_UITRON_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# uITRON tests
# This option specifies the set of tests for the uITRON compatibility layer.
#
cdl_option CYGPKG_UITRON_TESTS {
    # Calculated value:  "tests/test1 tests/test2 tests/test3 tests/test4 tests/test5 tests/test6 tests/test7 tests/test8 tests/test9 tests/testcxx tests/testcx2 tests/testcx3 tests/testcx4 tests/testcx5 tests/testcx6 tests/testcx7 tests/testcx8 tests/testcx9 tests/testintr" 
    # Flavor: data
    # Current_value: tests/test1 tests/test2 tests/test3 tests/test4 tests/test5 tests/test6 tests/test7 tests/test8 tests/test9 tests/testcxx tests/testcx2 tests/testcx3 tests/testcx4 tests/testcx5 tests/testcx6 tests/testcx7 tests/testcx8 tests/testcx9 tests/testintr
};

# <
# <
# Watchdog IO device
# The watchdog IO device allows applications to make use of a
# timer facility. Depending on the underlying hardware device
# driver, a watchdog timeout will either cause a board reset
# or an action routine to be called. The application must call
# the watchdog reset function at regular intervals, or else the
# device will timeout. The assumption is that the watchdog timer
# should never trigger unless there has been a serious fault in
# either the hardware or the software.
#
cdl_package CYGPKG_IO_WATCHDOG {
    # 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
};

# >
# Number of watchdog hardware implementations
#
cdl_interface CYGINT_WATCHDOG_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_WATCHDOG_EMULATE
    #     DefaultValue:  0 == CYGINT_WATCHDOG_HW_IMPLEMENTATIONS 
};

# Number of watchdog implementations
#
cdl_interface CYGINT_WATCHDOG_IMPLEMENTATIONS {
    # Implemented by CYGPKG_WATCHDOG_EMULATE, active, enabled
    # Implemented by CYGIMP_WATCHDOG_NONE, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_WATCHDOG_IMPLEMENTATIONS
    #     CYGINT_WATCHDOG_IMPLEMENTATIONS == 1
    #   --> 1

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

# Watchdog implementation
# Implementations of the watchdog device.
#
cdl_component CYGPKG_IO_WATCHDOG_IMPLEMENTATION {
    # There is no associated value.
};

# >
# Watchdog emulator
# When this option is enabled, a watchdog device will be
# emulated using the kernel real-time clock.
#
cdl_option CYGPKG_WATCHDOG_EMULATE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 == CYGINT_WATCHDOG_HW_IMPLEMENTATIONS 
    #     CYGINT_WATCHDOG_HW_IMPLEMENTATIONS == 0
    #   --> 1
    # Requires: CYGVAR_KERNEL_COUNTERS_CLOCK
    #     CYGVAR_KERNEL_COUNTERS_CLOCK == 1
    #   --> 1
};

# No wallclock
# Disables the watchdog.
#
cdl_option CYGIMP_WATCHDOG_NONE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# Set if device causes a reset on timeout
#
cdl_interface CYGINT_WATCHDOG_RESETS_ON_TIMEOUT {
    # 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_WATCHDOG_RESETS_ON_TIMEOUT
    #     Calculated:  CYGINT_WATCHDOG_RESETS_ON_TIMEOUT == 1 
};

# Set if device causes a reset on timeout
# Some watchdog devices reset the board on timeout - for these
# implementations it does not make sense to register timeout
# actions so the code gets disabled when this option is set.
# When this option is not set, it is the application's
# responsibility to register an action handler which can force
# a board reset when it gets called.
#
cdl_option CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT {
    # Calculated value:  CYGINT_WATCHDOG_RESETS_ON_TIMEOUT == 1 
    #     CYGINT_WATCHDOG_RESETS_ON_TIMEOUT == 0
    # Flavor: bool
    # Current value: 0

    # The following properties are affected by this value
    # option CYGPKG_IO_WATCHDOG_TESTS
    #     Calculated:  CYGPKG_IO_WATCHDOG_BUILD_INTERACTIVE_TEST ? 
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2 tests/watchdog_reset" : "tests/watchdog tests/watchdog2 tests/watchdog_reset" :
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2" : "tests/watchdog tests/watchdog2" 
    # option CYGPKG_IO_WATCHDOG_TESTS
    #     Calculated:  CYGPKG_IO_WATCHDOG_BUILD_INTERACTIVE_TEST ? 
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2 tests/watchdog_reset" : "tests/watchdog tests/watchdog2 tests/watchdog_reset" :
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2" : "tests/watchdog tests/watchdog2" 
};

# Build interactive watchdog test
# This option enables the building of a watchdog test
# which can be used to test that the board resets on
# watchdog timeout. This test is built separately since
# it only makes sense to use interactively.
#
cdl_option CYGPKG_IO_WATCHDOG_BUILD_INTERACTIVE_TEST {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0

    # The following properties are affected by this value
    # option CYGPKG_IO_WATCHDOG_TESTS
    #     Calculated:  CYGPKG_IO_WATCHDOG_BUILD_INTERACTIVE_TEST ? 
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2 tests/watchdog_reset" : "tests/watchdog tests/watchdog2 tests/watchdog_reset" :
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2" : "tests/watchdog tests/watchdog2" 
};

# Watchdog 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_WATCHDOG_OPTIONS {
    # There is no associated value.
};

# >
# Additional compiler flags
# This option modifies the set of compiler flags for
# building the watchdog IO device. These flags are used
# in addition to the set of global flags.
#
cdl_option CYGPKG_IO_WATCHDOG_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 watchdog IO device. These flags are removed from
# the set of global flags if present.
#
cdl_option CYGPKG_IO_WATCHDOG_CFLAGS_REMOVE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value ""
    # value_source default
    # Default value: ""
};

# Watchdog tests
# This option specifies the set of tests for the
# watchdog IO device.
#
cdl_option CYGPKG_IO_WATCHDOG_TESTS {
    # Calculated value:  CYGPKG_IO_WATCHDOG_BUILD_INTERACTIVE_TEST ? 
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2 tests/watchdog_reset" : "tests/watchdog tests/watchdog2 tests/watchdog_reset" :
    #                              CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT ? "tests/watchdog2" : "tests/watchdog tests/watchdog2" 
    #     CYGPKG_IO_WATCHDOG_BUILD_INTERACTIVE_TEST == 0
    #     CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT == 0
    #     CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT == 0
    # Flavor: data
    # Current_value: tests/watchdog tests/watchdog2
};

# <
# <
# Wallclock device
# The wallclock device provides real time stamps, as opposed
# to the eCos kernel timers which typically just count the
# number of clock ticks since the hardware was powered up.
# Depending on the target platform this device may involve
# interacting with a suitable clock chip, or it may be
# emulated by using the kernel timers.
#
cdl_package CYGPKG_IO_WALLCLOCK {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

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

    # The following properties are affected by this value
    # option CYGSEM_LIBC_TIME_TIME_WORKING
    #     Requires: CYGPKG_IO_WALLCLOCK
    # option CYGSEM_LIBC_TIME_SETTIME_WORKING
    #     Requires: CYGPKG_IO_WALLCLOCK
};

# >
# Number of wallclock hardware implementations
#
cdl_interface CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGPKG_WALLCLOCK_EMULATE
    #     DefaultValue:  0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    # option CYGIMP_WALLCLOCK_NONE
    #     DefaultValue:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
};

# Number of wallclock implementations
#
cdl_interface CYGINT_WALLCLOCK_IMPLEMENTATIONS {
    # Implemented by CYGPKG_WALLCLOCK_EMULATE, active, enabled
    # Implemented by CYGIMP_WALLCLOCK_NONE, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGINT_WALLCLOCK_IMPLEMENTATIONS
    #     CYGINT_WALLCLOCK_IMPLEMENTATIONS == 1
    #   --> 1

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

# Wallclock driver supports set/get mode
#
cdl_interface CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # option CYGSEM_WALLCLOCK_MODE
    #     DefaultValue:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ?  "set_get" : "init_get" 
    # option CYGSEM_WALLCLOCK_MODE
    #     Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
};

# Wallclock mode
# The wallclock driver can be used in one of two
# modes. Set/get mode allows time to be kept during power
# off (assuming there's a battery backed clock). Init/get
# mode is slightly smaller and can be used when there is no
# battery backed clock - in this mode time 0 is the time of
# the board power up.
#
cdl_option CYGSEM_WALLCLOCK_MODE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value init_get
    # value_source default
    # Default value:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ?  "set_get" : "init_get" 
    #     CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED == 0
    #   --> init_get
    # Legal values:  "init_get" "set_get" 
    # Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
    #     CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED == 0
    #     CYGSEM_WALLCLOCK_MODE == init_get
    #   --> 1

    # The following properties are affected by this value
    # option CYGSEM_WALLCLOCK_MODE
    #     Requires:  CYGINT_WALLCLOCK_SET_GET_MODE_SUPPORTED ||  CYGSEM_WALLCLOCK_MODE == "init_get" 
    # option CYGSEM_WALLCLOCK_SET_GET_MODE
    #     Calculated:  CYGSEM_WALLCLOCK_MODE == "set_get" ? 1 : 0 
};

# Wallclock set/get mode
#
cdl_option CYGSEM_WALLCLOCK_SET_GET_MODE {
    # Calculated value:  CYGSEM_WALLCLOCK_MODE == "set_get" ? 1 : 0 
    #     CYGSEM_WALLCLOCK_MODE == init_get
    # Flavor: bool
    # Current value: 0
};

# Wallclock implementation
# Implementations of the wallclock device.
#
cdl_component CYGPKG_IO_WALLCLOCK_IMPLEMENTATION {
    # There is no associated value.
};

# >
# Wallclock emulator
# When this option is enabled, a wallclock device will be
# emulated using the kernel real-time clock.
#
cdl_option CYGPKG_WALLCLOCK_EMULATE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value:  0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    #     CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS == 0
    #   --> 1
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
};

# No wallclock
# Disables the wallclock.
#
cdl_option CYGIMP_WALLCLOCK_NONE {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value:  !CYGPKG_KERNEL && 0 == CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS 
    #     CYGPKG_KERNEL == current
    #     CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS == 0
    #   --> 0
};

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

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

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

# Wallclock tests
# This option specifies the set of tests for the
# wallclock device.
#
cdl_option CYGPKG_IO_WALLCLOCK_TESTS {
    # Calculated value:  CYGPKG_KERNEL ? "tests/wallclock tests/wallclock2" : "" 
    #     CYGPKG_KERNEL == current
    # Flavor: data
    # Current_value: tests/wallclock tests/wallclock2
};

# <
# <
# Common error code support
# This package contains the common list of error and
# status codes. It is held centrally to allow
# packages to interchange error codes and status
# codes in a common way, rather than each package
# having its own conventions for error/status
# reporting. The error codes are modelled on the
# POSIX style naming e.g. EINVAL etc. This package
# also provides the standard strerror() function to
# convert error codes to textual representation, as
# well as an implementation of the errno idiom.
#
cdl_package CYGPKG_ERROR {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires:  CYGBLD_ISO_ERRNO_CODES_HEADER == "<cyg/error/codes.h>" 
    #     CYGBLD_ISO_ERRNO_CODES_HEADER == <cyg/error/codes.h>
    #   --> 1

    # The following properties are affected by this value
    # package CYGPKG_IO_SERIAL_ARM_EDB7XXX
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_SERIAL
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_POSIX
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_IO_FILEIO
    #     Requires: CYGPKG_ERROR
    # package CYGPKG_NET
    #     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: ""
};

# <
# <
# POSIX File IO compatibility layer
# This package enables the POSIX compatibility
# layer that implements IEEE 1003.1 file IO.
#
cdl_package CYGPKG_IO_FILEIO {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_KERNEL
    #     CYGPKG_KERNEL == current
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO
    #     CYGINT_ISO_ERRNO == 1
    #   --> 1
    # Requires: CYGINT_ISO_ERRNO_CODES
    #     CYGINT_ISO_ERRNO_CODES == 1
    #   --> 1
    # Requires: CYGINT_ISO_STRING_STRFUNCS
    #     CYGINT_ISO_STRING_STRFUNCS == 1
    #   --> 1
    # Requires:  CYGBLD_ISO_DIRENT_HEADER == "<cyg/fileio/dirent.h>" 
    #     CYGBLD_ISO_DIRENT_HEADER == <cyg/fileio/dirent.h>
    #   --> 1
    # Requires:  CYGBLD_ISO_OPEN_MAX_HEADER == "<cyg/fileio/limits.h>" 
    #     CYGBLD_ISO_OPEN_MAX_HEADER == <cyg/fileio/limits.h>
    #   --> 1

    # The following properties are affected by this value
    # component CYGPKG_IO_FILE_SUPPORT
    #     ActiveIf: !CYGPKG_IO_FILEIO
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     Requires: CYGPKG_IO_FILEIO
    # component CYGPKG_IO_SERIAL_TERMIOS
    #     DefaultValue:  0 != CYGPKG_ISOINFRA && 0 != CYGPKG_IO_FILEIO &&  0 != CYGINT_ISO_ERRNO_CODES &&  0 != CYGINT_ISO_ERRNO 
    # option CYGPKG_IO_SERIAL_SELECT_SUPPORT
    #     ActiveIf: CYGPKG_IO_FILEIO
    # option CYGPKG_IO_SERIAL_SELECT_SUPPORT
    #     Requires: CYGPKG_IO_FILEIO
    # option CYGPKG_LIBC_STDIO_FILEIO
    #     ActiveIf: CYGPKG_IO_FILEIO
    # option CYGPKG_NET_API_LOCAL
    #     ActiveIf: !CYGPKG_IO_FILEIO
    # option CYGPKG_NET_API_FILEIO
    #     ActiveIf: CYGPKG_IO_FILEIO
};

# >
# Enable socket support
# This option enables support for the socket interface. It is
# only present if the NET package is included.
#
cdl_option CYGPKG_IO_FILEIO_SOCKET_SUPPORT {
    # ActiveIf constraint: CYGPKG_NET
    #     CYGPKG_NET == current
    #   --> 1

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

# Maximum number of open files
# This option controls the number of open files
# that are allowed for all filesystems.
#
cdl_option CYGNUM_FILEIO_NFILE {
    # 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 9999999

    # The following properties are affected by this value
    # option CYGNUM_FILEIO_NFD
    #     LegalValues: CYGNUM_FILEIO_NFILE to 9999999
};

# Maximum number of open file descriptors
# This option controls the number of open file descriptors
# that are allowed for all filesystems.
#
cdl_option CYGNUM_FILEIO_NFD {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 16
    # value_source default
    # Default value: 16
    # Legal values: CYGNUM_FILEIO_NFILE to 9999999
    #     CYGNUM_FILEIO_NFILE == 16
};

# Maximum number of installed filesystems
# This option controls the maximum number of filesystems
# that can be handled by the fileio system.
#
cdl_option CYGNUM_FILEIO_FSTAB_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 4
    # value_source default
    # Default value: 4
    # Legal values: 1 to 9999999
};

# Maximum number of mounted filesystems
# This option controls the maximum number of mounted
# filesystems that can be handled by the fileio system.
#
cdl_option CYGNUM_FILEIO_MTAB_MAX {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: CYGNUM_FILEIO_MTAB_EXTRA to 9999999
    #     CYGNUM_FILEIO_MTAB_EXTRA == 8
};

# Number of dynamically mounted filesystems
# This option controls the number of mounted
# filesystems that can be created dynamically.
#
cdl_option CYGNUM_FILEIO_MTAB_EXTRA {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
    # Legal values: 0 to 9999999

    # The following properties are affected by this value
    # option CYGNUM_FILEIO_MTAB_MAX
    #     LegalValues: CYGNUM_FILEIO_MTAB_EXTRA to 9999999
};

# Maximum number of installed network stacks
# This option controls the maximum number of installed
# network stacks that can be handled by the fileio system.
#
cdl_option CYGNUM_FILEIO_NSTAB_MAX {
    # 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 9999999
};

# Enable current directory tracking
# This option enables tracking of the name of the current
# directory in the FILEIO package, to support the getcwd()
# function. When this option is enabled the FILEIO package
# will attempt to maintain a string that names the current
# directory. It does this textually, dealing with "." and
# ".." entries by textual manipulation. While this should
# always provide a path for the current directory, it may not
# be the best, if symbolic links are present. This tracked CWD
# is only used if a filesystem does not support the
# FS_INFO_GETCWD key. 
#
cdl_option CYGPKG_IO_FILEIO_TRACK_CWD {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# Fileio tests
# This option specifies the set of tests for the FileIO package.
#
cdl_option CYGPKG_IO_FILEIO_TESTS {
    # Calculated value:  "tests/testfs.c tests/fileio1.c tests/socket.c tests/select.c tests/stdio.c" 
    # Flavor: data
    # Current_value: tests/testfs.c tests/fileio1.c tests/socket.c tests/select.c tests/stdio.c
};

# <
# Networking
# doc: doc/index.html
# Basic networking support, including TCP/IP.
#
cdl_package CYGPKG_NET {
    # Packages cannot be added or removed, nor can their version be changed,
    # simply by editing their value. Instead the appropriate configuration
    # should be used to perform these actions.

    # This value cannot be modified here.
    # Flavor: booldata
    # Current value: 1 current
    # Requires: CYGPKG_IO
    #     CYGPKG_IO == current
    #   --> 1
    # Requires: CYGPKG_ISOINFRA
    #     CYGPKG_ISOINFRA == current
    #   --> 1
    # Requires: CYGPKG_LIBC_TIME
    #     CYGPKG_LIBC_TIME == current
    #   --> 1
    # Requires: CYGPKG_ERROR
    #     CYGPKG_ERROR == current
    #   --> 1
    # Requires: CYGPKG_MEMALLOC
    #     CYGPKG_MEMALLOC == current
    #   --> 1
    # Requires:  CYGBLD_ISO_BSDTYPES_HEADER == "<sys/bsdtypes.h>" 
    #     CYGBLD_ISO_BSDTYPES_HEADER == <sys/bsdtypes.h>
    #   --> 1

    # The following properties are affected by this value
    # option CYGPKG_IO_FILEIO_SOCKET_SUPPORT
    #     ActiveIf: CYGPKG_NET
    # component CYGPKG_IO_ETH_DRIVERS_NET
    #     ActiveIf: CYGPKG_NET
    # component CYGPKG_IO_ETH_DRIVERS_STAND_ALONE
    #     ActiveIf: !CYGPKG_NET
};

# >
# Suitable driver framework interface, used by network package
# In order to decouple the network stack from driver specifics, the
# driver framework must be defined in a separate package.
#
cdl_interface CYGPKG_NET_DRIVER_FRAMEWORK {
    # Implemented by CYGPKG_IO_ETH_DRIVERS, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
};

# Implement the socket API locally
# This option controls support for the network-stack supplied
# API.
#
cdl_option CYGPKG_NET_API_LOCAL {
    # This option is not active
    # ActiveIf constraint: !CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO == current
    #   --> 0

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

# Implement the socket API via Fileio package
# This option controls support for the fileio subsystem supplied API.
#
cdl_option CYGPKG_NET_API_FILEIO {
    # ActiveIf constraint: CYGPKG_IO_FILEIO
    #     CYGPKG_IO_FILEIO == current
    #   --> 1

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

# INET support
# This option enables support for INET (IP) network processing.
#
cdl_component CYGPKG_NET_INET {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# IPv6 support
# This option enables support for new IPv6.
#
cdl_option CYGPKG_NET_INET6 {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Routing support
# This option enables support for packet routing.
#
cdl_option CYGPKG_NET_ROUTING {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# <
# TFTP (RFC-1350) support
# This option provides additional library support for
# the TFTP (Trivial File Transfer Protocol).
#
cdl_component CYGPKG_NET_TFTP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Priority level for TFTP daemon thread.
# This option allows the thread priority level used by the
# TFTP server thread to be adjusted by the user.  It should be set
# high enough that sufficient CPU resources are available to
# process network data, but may be adjusted so that application
# threads can have precedence over TFTP server processing.
#
cdl_option CYGPKG_NET_TFTPD_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 10
    # value_source default
    # Default value: 10
};

# File I/O functions for TFTP server
# Minimal in-memory file I/O support for TFTP server.
#
cdl_option CYGPKG_NET_TFTP_FILE_ACCESS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Use full DHCP instead of BOOTP
# Provide DHCP for initializing the IP address
# of network interfaces.  The DHCP client is capable of falling
# back to BOOTP usage if the server does not support DHCP, so it
# should never be necessary to disable this option.  However,
# depending on other configuration the DHCP client may provide or
# require a kernel thread of its own; this consumes quite a lot
# of resource which a BOOTP solution does not require.
#
cdl_component CYGPKG_NET_DHCP {
    # ActiveIf constraint: (CYGHWR_NET_DRIVERS > 0)
    #     CYGHWR_NET_DRIVERS == 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 CYGHWR_NET_DRIVER_ETH0_DHCP
    #     ActiveIf: CYGPKG_NET_DHCP
    # option CYGHWR_NET_DRIVER_ETH1_DHCP
    #     ActiveIf: CYGPKG_NET_DHCP
};

# >
# DHCP management thread
# Provide a separate thread to renew DHCP leases; otherwise
# the application MUST periodically examine the semaphore
# dhcp_needs_attention and call dhcp_bind() if it is
# signalled.  If enabled, this thread does all that for you.
# Independent of this option, initialization of the
# interfaces still occurs in init_all_network_interfaces()
# and your startup code must call that.  It will start the
# DHCP management thread if necessary.  If a lease fails to
# be renewed, the management thread will shut down all
# interfaces and attempt to initialize all the interfaces
# again from scratch.  This may cause application problems,
# in which case managing the DHCP state in an application
# aware thread is recommended.  See comments in dhcp.h
#
cdl_option CYGOPT_NET_DHCP_DHCP_THREAD {
    # 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 CYGOPT_NET_DHCP_DHCP_THREAD_PARAM
    #     ActiveIf: CYGOPT_NET_DHCP_DHCP_THREAD
    # option CYGPKG_NET_DHCP_THREAD_PRIORITY
    #     ActiveIf: CYGOPT_NET_DHCP_DHCP_THREAD
};

# DHCP management thread loops forever
# If the parameter is nonzero, it loops forever; if zero,
# the thread exits if a lease expires, and the application
# must detect this and tidy up or reboot the whole machine.
#
cdl_option CYGOPT_NET_DHCP_DHCP_THREAD_PARAM {
    # ActiveIf constraint: CYGOPT_NET_DHCP_DHCP_THREAD
    #     CYGOPT_NET_DHCP_DHCP_THREAD == 1
    #   --> 1

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

# DHCP management thread priority
# This option sets the thread priority level used by the DHCP
# management thread.  It should be high enough that it can run
# when necessary, but it does not need to be as high as the
# network thread itself.
#
cdl_option CYGPKG_NET_DHCP_THREAD_PRIORITY {
    # ActiveIf constraint: CYGOPT_NET_DHCP_DHCP_THREAD
    #     CYGOPT_NET_DHCP_DHCP_THREAD == 1
    #   --> 1

    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: CYGPKG_NET_THREAD_PRIORITY + 1
    #     CYGPKG_NET_THREAD_PRIORITY == 7
    #   --> 8
};

# <
# Support BSD 'sysctl()' function
# This option includes support for the 'sysctl()' functions.
#
cdl_option CYGPKG_NET_SYSCTL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Priority level for backgound network processing.
# This option allows the thread priority level used by the
# networking stack to be adjusted by the user.  It should be set
# high enough that sufficient CPU resources are available to
# process network data, but may be adjusted so that application
# threads can have precedence over network processing.
#
cdl_option CYGPKG_NET_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 7
    # value_source default
    # Default value: 7

    # The following properties are affected by this value
    # option CYGPKG_NET_DHCP_THREAD_PRIORITY
    #     DefaultValue: CYGPKG_NET_THREAD_PRIORITY + 1
    # option CYGPKG_NET_FAST_THREAD_PRIORITY
    #     DefaultValue: CYGPKG_NET_THREAD_PRIORITY - 1
};

# Priority level for fast network processing.
# This option sets the thread priority level used by the fast
# network thread.  The fast network thread runs often but briefly, to
# service network device interrupts and network timeout events.  This
# thread should have higher priority than the background network
# thread.  It is reasonable to set this thread's priority higher than
# application threads for best network throughput, or to set it lower
# than application threads for best latency for those application
# threads themselves, potentially at a cost to network throughput.
#
cdl_option CYGPKG_NET_FAST_THREAD_PRIORITY {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 6
    # value_source default
    # Default value: CYGPKG_NET_THREAD_PRIORITY - 1
    #     CYGPKG_NET_THREAD_PRIORITY == 7
    #   --> 6
};

# Number of BPF filters
# This option controls the number of active BPF filters.
#
cdl_option CYGPKG_NET_NBPF {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of bridge buffers?
# This option controls the number of bridge buffers and indeed
# whether bridging code is enabled at all via 'standard'
# symbol NBRIDGE.
#
cdl_option CYGPKG_NET_NBRIDGE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of GIF things
# This option controls the number of active GIF things.
#
cdl_option CYGPKG_NET_NGIF {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Number of loopback interfaces
# This option controls the number of loopback, i.e. local, interfaces.
# There is seldom need for this value to be anything other than one.
# If a different value is required, then the C library STDIO package
# is required for sprintf().
#
cdl_option CYGPKG_NET_NLOOP {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
    # Requires:  (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1  
    #     CYGPKG_NET_NLOOP == 1
    #     CYGPKG_LIBC_STDIO == current
    #   --> 1

    # The following properties are affected by this value
    # option CYGPKG_NET_NLOOP
    #     Requires:  (CYGPKG_NET_NLOOP > 1) ? CYGPKG_LIBC_STDIO : 1  
};

# Memory designated for networking buffers.
# This option controls the amount of memory pre-allocated
# for buffers used by the networking code.
#
cdl_option CYGPKG_NET_MEM_USAGE {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 262144
    # value_source default
    # Default value: 262144
};

# Number of supported pending network events
# This option controls the number of pending network events
# used by the networking code.
#
cdl_option CYGPKG_NET_NUM_WAKEUP_EVENTS {
    # Flavor: data
    # No user value, uncomment the following line to provide one.
    # user_value 8
    # value_source default
    # Default value: 8
};

# Networking support build options
#
cdl_component CYGPKG_NET_OPTIONS {
    # There is no associated value.
};

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

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

# <
# Build networking tests (demo programs)
# This option enables the building of additional network tests
# which at this time are just demos; otherwise only loopback
# interface tests will be built.
#
cdl_component CYGPKG_NET_BUILD_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
    # option CYGPKG_NET_TESTS
    #     Calculated:  CYGPKG_NET_BUILD_TESTS ?  "tests/mbuf_test  tests/socket_test  tests/ftp_test  tests/server_test  tests/nc_test_master  tests/nc_test_slave  tests/tftp_client_test  tests/tftp_server_test  tests/tcp_echo  tests/set_mac_address  tests/bridge  tests/flood  tests/ping_test  tests/dhcp_test  tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	    :
    #     	            "tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	
};

# >
# Networking tests
# This option specifies the set of tests
# for the networking package.
#
cdl_option CYGPKG_NET_TESTS {
    # This option is not active
    # The parent CYGPKG_NET_BUILD_TESTS is disabled

    # Calculated value:  CYGPKG_NET_BUILD_TESTS ?  "tests/mbuf_test  tests/socket_test  tests/ftp_test  tests/server_test  tests/nc_test_master  tests/nc_test_slave  tests/tftp_client_test  tests/tftp_server_test  tests/tcp_echo  tests/set_mac_address  tests/bridge  tests/flood  tests/ping_test  tests/dhcp_test  tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	    :
    #     	            "tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select"
    #     	
    #     CYGPKG_NET_BUILD_TESTS == 0
    # Flavor: data
    # Current_value: tests/ping_lo_test  tests/tcp_lo_test  tests/udp_lo_test  tests/multi_lo_select  tests/tcp_lo_select
};

# Use real-time response test harness (if available)
# Platform and/or ethernet device driver packages may
# provide a test harness to verify that interrupts are
# not disabled or flooded for too long during a test.  If
# such is provided, CYGTST_DEVS_ETH_TEST_NET_REALTIME is
# defined and can be #include'd to acquire the support.
# Some tests in the TCP/IP stack can use this harness;
# this option controls whether they do.  The StrongARM
# EBSA285 Ethernet device driver is one package that
# provides such a harness.  See the file
# tests/test_net_realtime.h in there for details.
#
cdl_option CYGPKG_NET_TESTS_USE_RT_TEST_HARNESS {
    # This option is not active
    # The parent CYGPKG_NET_BUILD_TESTS is disabled

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

# <
# Network drivers
#
cdl_interface CYGHWR_NET_DRIVERS {
    # Implemented by CYGPKG_DEVS_ETH_ARM_EDB7XXX, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGPKG_NET_DHCP
    #     ActiveIf: (CYGHWR_NET_DRIVERS > 0)
};

# Does the hardware provide an 'eth0' device?
#
cdl_interface CYGHWR_NET_DRIVER_ETH0 {
    # Implemented by CYGPKG_DEVS_ETH_ARM_EDB7XXX, active, enabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1

    # The following properties are affected by this value
    # component CYGHWR_NET_DRIVER_ETH0_SETUP_OPTIONS
    #     ActiveIf: (CYGHWR_NET_DRIVER_ETH0 == 1)
};

# Initialization options for 'eth0'
#
cdl_component CYGHWR_NET_DRIVER_ETH0_SETUP_OPTIONS {
    # ActiveIf constraint: (CYGHWR_NET_DRIVER_ETH0 == 1)
    #     CYGHWR_NET_DRIVER_ETH0 == 1
    #   --> 1

    # There is no associated value.
};

# >
# Initialization options for 'eth0'
#
cdl_interface CYGHWR_NET_DRIVER_ETH0_SETUP {
    # Implemented by CYGHWR_NET_DRIVER_ETH0_MANUAL, active, disabled
    # Implemented by CYGHWR_NET_DRIVER_ETH0_BOOTP, active, enabled
    # Implemented by CYGHWR_NET_DRIVER_ETH0_ADDRS, active, disabled
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 1
    # Requires: 1 == CYGHWR_NET_DRIVER_ETH0_SETUP
    #     CYGHWR_NET_DRIVER_ETH0_SETUP == 1
    #   --> 1

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

# Initialize 'eth0' manually?
# If this option is selected, the eCos library provides no
# initialization code for this interface; you must perform
# all the initialization in the application, by means of
# appropriate ioctl() calls, or by calling init_net() with an
# appropriate bootp record you have constructed yourself.
#
cdl_component CYGHWR_NET_DRIVER_ETH0_MANUAL {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# Use BOOTP/DHCP to initialize 'eth0'?
# If this option is selected, init_all_network_interfaces()
# will use DHCP or BOOTP to acquire initialization data for
# this interface, and then set it up accordingly.
#
cdl_component CYGHWR_NET_DRIVER_ETH0_BOOTP {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# >
# Use DHCP rather than BOOTP for 'eth0'?
#
cdl_option CYGHWR_NET_DRIVER_ETH0_DHCP {
    # ActiveIf constraint: CYGPKG_NET_DHCP
    #     CYGPKG_NET_DHCP == 1
    #   --> 1

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

# Show BOOTP/DHCP initialization values?
#
cdl_option CYGHWR_NET_DRIVER_ETH0_BOOTP_SHOW {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 1
    # value_source default
    # Default value: 1
};

# <
# Address setups for 'eth0'
# These options let you configure all the initialization data
# that init_all_network_interfaces() will use
# for 'eth0' statically.  Be careful when doing this, because
# if you run the same application image on multiple boards,
# they will have identical IP addresses and so on; this is a
# Bad Thing.
# The values you set are inserted in a bootp-style record
# that is fed into a common setup routine to configure the
# interface.  That routine does not in fact use the 'Server
# IP address' field.
# The bootp record is also available to application code, and
# some eCos networking test programs use the 'Server IP
# address' field to mean 'a machine we can interact with' for
# example to ping or perform ftp with.  That is the rationale
# for its inclusion here.
# The gateway address is used to set up a default route if
# nonzero.  If you have more than one interface, setting up
# more than one default route is will cause malfunctions.  A
# gateway address of 0.0.0.0 can be set to prevent that route
# setup.  Of course, your application can add real routes
# once the interface(s) initialization is complete.
#
cdl_component CYGHWR_NET_DRIVER_ETH0_ADDRS {
    # Flavor: bool
    # No user value, uncomment the following line to provide one.
    # user_value 0
    # value_source default
    # Default value: 0
};

# >
# IP address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_IP {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

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

# Network mask address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_NETMASK {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

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

# Broadcast address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_BROADCAST {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

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

# Gateway/router IP address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_GATEWAY {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

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

# Server IP address for 'eth0'
#
cdl_option CYGHWR_NET_DRIVER_ETH0_ADDRS_SERVER {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH0_ADDRS is disabled

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

# <
# <
# Does the hardware provide an 'eth1' device?
#
cdl_interface CYGHWR_NET_DRIVER_ETH1 {
    # No options implement this inferface
    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0

    # The following properties are affected by this value
    # component CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS
    #     ActiveIf: (CYGHWR_NET_DRIVER_ETH1 == 1)
};

# Initialization options for 'eth1'
#
cdl_component CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS {
    # This option is not active
    # ActiveIf constraint: (CYGHWR_NET_DRIVER_ETH1 == 1)
    #     CYGHWR_NET_DRIVER_ETH1 == 0
    #   --> 0

    # There is no associated value.
};

# >
# Initialization options for 'eth1'
#
cdl_interface CYGHWR_NET_DRIVER_ETH1_SETUP {
    # Implemented by CYGHWR_NET_DRIVER_ETH1_MANUAL, inactive, disabled
    # Implemented by CYGHWR_NET_DRIVER_ETH1_BOOTP, inactive, enabled
    # Implemented by CYGHWR_NET_DRIVER_ETH1_ADDRS, inactive, disabled
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS is not active

    # This value cannot be modified here.
    # Flavor: data
    # Current_value: 0
    # Requires: 1 == CYGHWR_NET_DRIVER_ETH1_SETUP
    #     CYGHWR_NET_DRIVER_ETH1_SETUP == 0
    #   --> 0

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

# Initialize 'eth1' manually?
# If this option is selected, the eCos library provides no
# initialization code for this interface; you must perform
# all the initialization in the application, by means of
# appropriate ioctl() calls, or by calling init_net() with an
# appropriate bootp record you have constructed yourself.
#
cdl_component CYGHWR_NET_DRIVER_ETH1_MANUAL {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS is not active

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

# Use BOOTP/DHCP to initialize 'eth1'?
# If this option is selected, init_all_network_interfaces()
# will use DHCP or BOOTP to acquire initialization data for
# this interface, and then set it up accordingly.
#
cdl_component CYGHWR_NET_DRIVER_ETH1_BOOTP {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS 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 DHCP rather than BOOTP for 'eth1'?
#
cdl_option CYGHWR_NET_DRIVER_ETH1_DHCP {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_BOOTP is not active
    # ActiveIf constraint: CYGPKG_NET_DHCP
    #     CYGPKG_NET_DHCP == 1
    #   --> 1

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

# Show BOOTP/DHCP initialization values?
#
cdl_option CYGHWR_NET_DRIVER_ETH1_BOOTP_SHOW {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_BOOTP is not active

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

# <
# Address setups for 'eth1'
# These options let you configure all the initialization data
# that init_all_network_interfaces() will use
# for 'eth1' statically.  Be careful when doing this, because
# if you run the same application image on multiple boards,
# they will have identical IP addresses and so on; this is a
# Bad Thing.
# The values you set are inserted in a bootp-style record
# that is fed into a common setup routine to configure the
# interface.  That routine does not in fact use the 'Server
# IP address' field.
# The bootp record is also available to application code, and
# some eCos networking test programs use the 'Server IP
# address' field to mean 'a machine we can interact with' for
# example to ping or perform ftp with.  That is the rationale
# for its inclusion here.
# The gateway address is used to set up a default route if
# nonzero.  If you have more than one interface, setting up
# more than one default route is will cause malfunctions.  A
# gateway address of 0.0.0.0 can be set to prevent that route
# setup.  Of course, your application can add real routes
# once the interface(s) initialization is complete.
# This interface 'eth1' has no route set up in the default
# configuration.
#
cdl_component CYGHWR_NET_DRIVER_ETH1_ADDRS {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_SETUP_OPTIONS is not active

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

# >
# IP address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_IP {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

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

# Network mask address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_NETMASK {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

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

# Broadcast address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_BROADCAST {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

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

# Gateway/router IP address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_GATEWAY {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

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

# Server IP address for 'eth1'
#
cdl_option CYGHWR_NET_DRIVER_ETH1_ADDRS_SERVER {
    # This option is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is not active
    # The parent CYGHWR_NET_DRIVER_ETH1_ADDRS is disabled

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

# <
# <
# <
# <

# eCos makefile

# This is a generated file - do not edit

export REPOSITORY := /opt/ecos/packages
export PREFIX := /home/larwe/x/install
export COMMAND_PREFIX := arm-elf-
export CC := $(COMMAND_PREFIX)gcc
export OBJCOPY := $(COMMAND_PREFIX)objcopy
export AR := $(COMMAND_PREFIX)ar

.PHONY: default build clean tests headers

build: headers $(PREFIX)/include/pkgconf/ecos.mak
	$(MAKE) -r -C hal/arm/arch/current arm.inc
	$(MAKE) -r -C services/memalloc/common/current heapgeninc.tcl
	$(MAKE) -r -C services/memalloc/common/current heaps.cxx
	$(MAKE) -r -C hal/arm/arch/current $@
	$(MAKE) -r -C hal/arm/edb7xxx/current $@
	$(MAKE) -r -C devs/eth/arm/edb7xxx/current $@
	$(MAKE) -r -C hal/common/current $@
	$(MAKE) -r -C io/common/current $@
	$(MAKE) -r -C io/serial/current $@
	$(MAKE) -r -C infra/current $@
	$(MAKE) -r -C isoinfra/current $@
	$(MAKE) -r -C kernel/current $@
	$(MAKE) -r -C services/memalloc/common/current $@
	$(MAKE) -r -C language/c/libc/common/current $@
	$(MAKE) -r -C language/c/libc/time/current $@
	$(MAKE) -r -C language/c/libc/stdlib/current $@
	$(MAKE) -r -C language/c/libc/string/current $@
	$(MAKE) -r -C language/c/libc/i18n/current $@
	$(MAKE) -r -C language/c/libc/setjmp/current $@
	$(MAKE) -r -C language/c/libc/startup/current $@
	$(MAKE) -r -C language/c/libc/stdio/current $@
	$(MAKE) -r -C language/c/libm/current $@
	$(MAKE) -r -C compat/posix/current $@
	$(MAKE) -r -C compat/uitron/current $@
	$(MAKE) -r -C io/watchdog/current $@
	$(MAKE) -r -C io/wallclock/current $@
	$(MAKE) -r -C error/current $@
	$(MAKE) -r -C io/fileio/current $@
	$(MAKE) -r -C net/tcpip/current $@
	$(MAKE) -r -C io/eth/current $@
	$(MAKE) -r -C hal/common/current $(PREFIX)/lib/extras.o
	$(MAKE) -r -C hal/arm/arch/current $(PREFIX)/lib/vectors.o
	$(MAKE) -r -C hal/arm/arch/current $(PREFIX)/lib/target.ld
	@echo $@ finished

clean:
	$(MAKE) -r -C hal/arm/arch/current $@
	$(MAKE) -r -C hal/arm/edb7xxx/current $@
	$(MAKE) -r -C devs/eth/arm/edb7xxx/current $@
	$(MAKE) -r -C hal/common/current $@
	$(MAKE) -r -C io/common/current $@
	$(MAKE) -r -C io/serial/current $@
	$(MAKE) -r -C infra/current $@
	$(MAKE) -r -C isoinfra/current $@
	$(MAKE) -r -C kernel/current $@
	$(MAKE) -r -C services/memalloc/common/current $@
	$(MAKE) -r -C language/c/libc/common/current $@
	$(MAKE) -r -C language/c/libc/time/current $@
	$(MAKE) -r -C language/c/libc/stdlib/current $@
	$(MAKE) -r -C language/c/libc/string/current $@
	$(MAKE) -r -C language/c/libc/i18n/current $@
	$(MAKE) -r -C language/c/libc/setjmp/current $@
	$(MAKE) -r -C language/c/libc/startup/current $@
	$(MAKE) -r -C language/c/libc/stdio/current $@
	$(MAKE) -r -C language/c/libm/current $@
	$(MAKE) -r -C compat/posix/current $@
	$(MAKE) -r -C compat/uitron/current $@
	$(MAKE) -r -C io/watchdog/current $@
	$(MAKE) -r -C io/wallclock/current $@
	$(MAKE) -r -C error/current $@
	$(MAKE) -r -C io/fileio/current $@
	$(MAKE) -r -C net/tcpip/current $@
	$(MAKE) -r -C io/eth/current $@
	@echo $@ finished

tests: build
	$(MAKE) -r -C hal/arm/arch/current $@
	$(MAKE) -r -C hal/arm/edb7xxx/current $@
	$(MAKE) -r -C devs/eth/arm/edb7xxx/current $@
	$(MAKE) -r -C hal/common/current $@
	$(MAKE) -r -C io/common/current $@
	$(MAKE) -r -C io/serial/current $@
	$(MAKE) -r -C infra/current $@
	$(MAKE) -r -C isoinfra/current $@
	$(MAKE) -r -C kernel/current $@
	$(MAKE) -r -C services/memalloc/common/current $@
	$(MAKE) -r -C language/c/libc/common/current $@
	$(MAKE) -r -C language/c/libc/time/current $@
	$(MAKE) -r -C language/c/libc/stdlib/current $@
	$(MAKE) -r -C language/c/libc/string/current $@
	$(MAKE) -r -C language/c/libc/i18n/current $@
	$(MAKE) -r -C language/c/libc/setjmp/current $@
	$(MAKE) -r -C language/c/libc/startup/current $@
	$(MAKE) -r -C language/c/libc/stdio/current $@
	$(MAKE) -r -C language/c/libm/current $@
	$(MAKE) -r -C compat/posix/current $@
	$(MAKE) -r -C compat/uitron/current $@
	$(MAKE) -r -C io/watchdog/current $@
	$(MAKE) -r -C io/wallclock/current $@
	$(MAKE) -r -C error/current $@
	$(MAKE) -r -C io/fileio/current $@
	$(MAKE) -r -C net/tcpip/current $@
	$(MAKE) -r -C io/eth/current $@
	@echo $@ finished

headers:
	$(MAKE) -r -C hal/arm/arch/current $@
	$(MAKE) -r -C hal/arm/edb7xxx/current $@
	$(MAKE) -r -C devs/eth/arm/edb7xxx/current $@
	$(MAKE) -r -C hal/common/current $@
	$(MAKE) -r -C io/common/current $@
	$(MAKE) -r -C io/serial/current $@
	$(MAKE) -r -C infra/current $@
	$(MAKE) -r -C isoinfra/current $@
	$(MAKE) -r -C kernel/current $@
	$(MAKE) -r -C services/memalloc/common/current $@
	$(MAKE) -r -C language/c/libc/common/current $@
	$(MAKE) -r -C language/c/libc/time/current $@
	$(MAKE) -r -C language/c/libc/stdlib/current $@
	$(MAKE) -r -C language/c/libc/string/current $@
	$(MAKE) -r -C language/c/libc/i18n/current $@
	$(MAKE) -r -C language/c/libc/setjmp/current $@
	$(MAKE) -r -C language/c/libc/startup/current $@
	$(MAKE) -r -C language/c/libc/stdio/current $@
	$(MAKE) -r -C language/c/libm/current $@
	$(MAKE) -r -C compat/posix/current $@
	$(MAKE) -r -C compat/uitron/current $@
	$(MAKE) -r -C io/watchdog/current $@
	$(MAKE) -r -C io/wallclock/current $@
	$(MAKE) -r -C error/current $@
	$(MAKE) -r -C io/fileio/current $@
	$(MAKE) -r -C net/tcpip/current $@
	$(MAKE) -r -C io/eth/current $@
	@echo $@ finished

$(PREFIX)/include/pkgconf/ecos.mak: makefile
	@echo 'ECOS_GLOBAL_CFLAGS = -mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority' > $@
	@echo 'ECOS_GLOBAL_LDFLAGS = -mcpu=arm7tdmi -Wl,--gc-sections -Wl,-static -g -nostdlib' >> $@
	@echo 'ECOS_COMMAND_PREFIX = $(COMMAND_PREFIX)' >> $@


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]