diff options
-rw-r--r-- | include/features.h | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/include/features.h b/include/features.h index 580ed3ee6..9e08de607 100644 --- a/include/features.h +++ b/include/features.h @@ -85,12 +85,6 @@ but are implied by the other feature-test macros defined (or by the lack of any definitions) are defined by the file. */ -/* First, record if user requested some form of large file support. */ -#if defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE) \ - || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) -# define __USER_REQUESTED_LFS_OPTION 1 -#endif - /* Undefine everything, so we get a clean slate. */ #undef __USE_ISOC99 #undef __USE_POSIX @@ -338,31 +332,35 @@ /* Make sure users large file options agree with uClibc's configuration. */ #ifndef __UCLIBC_HAVE_LFS__ + /* If uClibc was built without large file support, output an error if - * large file functions are requested. */ -#ifdef __USER_REQUESTED_LFS_OPTION -#error uClibc was configured without large file support... -/* Since _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE can be turned by - * other options, disable them with a warning if they were enabled. */ -#elif defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE) -#warning uClibc was configured without large file support... + * and 64-bit file offsets were requested, output an error. + * NOTE: This is probably incorrect on a 64-bit arch... */ +#ifdef __USE_FILE_OFFSET64 +#error It appears you have defined _FILE_OFFSET_BITS=64. Unfortunately, \ +uClibc was built without large file support enabled. #endif -#undef _LARGEFILE_SOURCE -#undef _LARGEFILE64_SOURCE -#undef _FILE_OFFSET_BITS -#undef __USE_LARGEFILE -#undef __USE_LARGEFILE64 -#undef __USE_FILE_OFFSET64 + +/* If uClibc was built without large file support and _LARGEFILE64_SOURCE + * is defined, undefine it. */ +#if defined(_LARGEFILE64_SOURCE) +#undef _LARGEFILE64_SOURCE +#undef __USE_LARGEFILE64 +#endif + /* If we're actually building uClibc with large file support, - * define __USE_LARGEFILE64 only. */ + * define __USE_LARGEFILE64 and __USE_LARGEFILE. */ #elif defined(_LIBC) -#undef _LARGEFILE_SOURCE -#undef _LARGEFILE64_SOURCE -#undef _FILE_OFFSET_BITS -#undef __USE_LARGEFILE -#undef __USE_LARGEFILE64 -#undef __USE_FILE_OFFSET64 -#define __USE_LARGEFILE64 1 +#undef _LARGEFILE_SOURCE +#undef _LARGEFILE64_SOURCE +#undef _FILE_OFFSET_BITS +#undef __USE_LARGEFILE +#undef __USE_LARGEFILE64 +#undef __USE_FILE_OFFSET64 +#define _LARGEFILE_SOURCE 1 +#define _LARGEFILE64_SOURCE 1 +#define __USE_LARGEFILE 1 +#define __USE_LARGEFILE64 1 #endif /* Some nice features only work properly with ELF */ |