From ced28f2cfcee6d32ad7bb72e16b235212eb2eaaf Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 16 Apr 2020 12:13:31 +0200 Subject: config: Provide file descriptors only if necessary Only provide the file descriptor array if CONFIGURE_MAXIMUM_FILE_DESCRIPTORS > 0. If someone configured CONFIGURE_MAXIMUM_FILE_DESCRIPTORS == 0 and the appplication uses something which requires a file descriptor, then a linker error will show up. An alternative would be to add a zero-length array rtems_libio_iops[ 0 ] to librtemscpu.a which would be used in this case. Conditionally include some header files. --- cpukit/include/rtems/confdefs/libio.h | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/cpukit/include/rtems/confdefs/libio.h b/cpukit/include/rtems/confdefs/libio.h index e986262e3e..8f43c490b1 100644 --- a/cpukit/include/rtems/confdefs/libio.h +++ b/cpukit/include/rtems/confdefs/libio.h @@ -43,7 +43,6 @@ #ifdef CONFIGURE_INIT #include -#include #include #ifdef CONFIGURE_FILESYSTEM_ALL @@ -86,6 +85,15 @@ #define CONFIGURE_IMFS_DISABLE_UTIME #endif +#ifndef CONFIGURE_MAXIMUM_FILE_DESCRIPTORS + #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 3 +#endif + +#if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) || \ + CONFIGURE_MAXIMUM_FILE_DESCRIPTORS > 0 + #include +#endif + #ifdef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM #ifdef CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM #error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM" @@ -122,10 +130,10 @@ #ifdef CONFIGURE_FILESYSTEM_TFTPFS #error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_TFTPFS" #endif +#else + #include #endif -#include - #ifdef CONFIGURE_FILESYSTEM_DOSFS #include #endif @@ -316,13 +324,11 @@ RTEMS_SYSINIT_ITEM( #endif /* !CONFIGURE_APPLICATION_DISABLE_FILESYSTEM */ -#ifndef CONFIGURE_MAXIMUM_FILE_DESCRIPTORS - #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 3 -#endif - -rtems_libio_t rtems_libio_iops[ CONFIGURE_MAXIMUM_FILE_DESCRIPTORS ]; +#if CONFIGURE_MAXIMUM_FILE_DESCRIPTORS > 0 + rtems_libio_t rtems_libio_iops[ CONFIGURE_MAXIMUM_FILE_DESCRIPTORS ]; -const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE( rtems_libio_iops ); + const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE( rtems_libio_iops ); +#endif #ifdef __cplusplus } -- cgit v1.2.3