On 21 Nov 2023, at 23:13, Iain Sandoe <i...@sandoe.co.uk> wrote: >> #if defined (__APPLE__) >> -#include <unistd.h> > > If removing unistd.h is intentional (i.e. you determined that it’s no longer > needed for Darwin), then we should make that a separate patch.
I thought that I’d had to include unistd.h for the first patch in this thread; clearly not! What I hope will be the final version: ——— 8< .——— In gcc/ada/adaint.c(__gnat_get_file_names_case_sensitive), the current assumption for __APPLE__ is that file names are case-insensitive unless __arm__ or __arm64__ are defined, in which case file names are declared case-sensitive. The associated comment is "By default, we suppose filesystems aren't case sensitive on Windows and Darwin (but they are on arm-darwin)." This means that on aarch64-apple-darwin, file names are treated as case-sensitive, which is not the default case. The true default position is that macOS file systems are case-insensitive, iOS file systems are case-sensitive. Apple provide a header file <TargetConditionals.h> which permits a compile-time check for the compiler target (e.g. OSX vs IOS); if TARGET_OS_IOS is defined as 1, this is a build for iOS. * gcc/ada/adaint.c (__gnat_get_file_names_case_sensitive): Split out the __APPLE__ check and remove the checks for __arm__, __arm64__. For Apple, file names are by default case-insensitive unless TARGET_OS_IOS is set. Signed-off-by: Simon Wright <si...@pushface.org> --- gcc/ada/adaint.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index bb4ed2607e5..2e9c59ae958 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -85,6 +85,7 @@ #if defined (__APPLE__) #include <unistd.h> +#include <TargetConditionals.h> #endif #if defined (__hpux__) @@ -613,11 +614,18 @@ __gnat_get_file_names_case_sensitive (void) else { /* By default, we suppose filesystems aren't case sensitive on - Windows and Darwin (but they are on arm-darwin). */ -#if defined (WINNT) || defined (__DJGPP__) \ - || (defined (__APPLE__) && !(defined (__arm__) || defined (__arm64__))) + Windows or DOS. */ +#if defined (WINNT) || defined (__DJGPP__) file_names_case_sensitive_cache = 0; +#elif defined (__APPLE__) + /* By default, macOS volumes are case-insensitive, iOS + volumes are case-sensitive. */ +#if TARGET_OS_IOS + file_names_case_sensitive_cache = 1; #else + file_names_case_sensitive_cache = 0; +#endif +#else /* Neither Windows nor Apple. */ file_names_case_sensitive_cache = 1; #endif } -- 2.37.1 (Apple Git-137.1)