1 /// (Essentially identical to ps4-sdk-root.c except for the target.) 2 3 /// PS5 clang emits warnings when SDK headers (<SDKROOT>/target/include/) or 4 /// libraries (<SDKROOT>/target/lib/) are missing. If the the user takes control 5 /// of header search paths, the existence check for <SDKROOT>/target/include is 6 /// skipped. 7 /// 8 /// User control of header search is assumed if `--sysroot`, `-isysroot`, 9 /// `-nostdinc` or `-nostdlibinc` is supplied. 10 /// 11 /// Warnings are emitted if a specified `-isysroot` or `--sysroot` does not 12 /// exist. 13 /// 14 /// The default <SDKROOT> for both headers and libraries is taken from the 15 /// SCE_PROSPERO_SDK_DIR environment variable. 16 17 // RUN: echo "-### -Winvalid-or-nonexistent-directory -target x86_64-sie-ps5" > %t.rsp 18 19 /// If SDK headers and/or libraries are found, associated warnings are absent. 20 // RUN: rm -rf %t.inconly && mkdir -p %t.inconly/target/include 21 // RUN: env SCE_PROSPERO_SDK_DIR=%t.inconly %clang @%t.rsp %s 2>&1 | FileCheck -check-prefixes=WARN-SYS-LIBS,NO-WARN %s 22 23 // RUN: rm -rf %t.libonly && mkdir -p %t.libonly/target/lib 24 // RUN: env SCE_PROSPERO_SDK_DIR=%t.libonly %clang @%t.rsp %s 2>&1 | FileCheck -check-prefixes=WARN-SYS-HEADERS,NO-WARN %s 25 26 // RUN: rm -rf %t.both && mkdir -p %t.both/target/lib && mkdir %t.both/target/include 27 // RUN: env SCE_PROSPERO_SDK_DIR=%t.both %clang @%t.rsp %s 2>&1 | FileCheck -check-prefix=NO-WARN %s 28 29 /// In the following invocations, SCE_PROSPERO_SDK_DIR is set to an existing 30 /// location where SDK headers and libraries are absent. 31 32 /// When compiling and linking, we should see a warnings about both missing 33 /// headers and libraries. 34 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s 2>&1 | FileCheck -check-prefixes=WARN-SYS-HEADERS,WARN-SYS-LIBS,NO-WARN %s 35 36 /// If `-c`, `-S`, `-E` or `-emit-ast` is supplied, the existence check for SDK 37 /// libraries is skipped because no linking will be performed. We only expect 38 /// warnings about missing headers. 39 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -c 2>&1 | FileCheck -check-prefixes=WARN-SYS-HEADERS,NO-WARN %s 40 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -S 2>&1 | FileCheck -check-prefixes=WARN-SYS-HEADERS,NO-WARN %s 41 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -E 2>&1 | FileCheck -check-prefixes=WARN-SYS-HEADERS,NO-WARN %s 42 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -emit-ast 2>&1 | FileCheck -check-prefixes=WARN-SYS-HEADERS,NO-WARN %s 43 44 /// If the user takes control of include paths, the existence check for headers 45 /// is not performed. 46 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -c -nostdinc 2>&1 | FileCheck -check-prefix=NO-WARN %s 47 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -c -nostdlibinc 2>&1 | FileCheck -check-prefix=NO-WARN %s 48 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -c -isysroot . 2>&1 | FileCheck -check-prefixes=NO-WARN %s 49 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -c --sysroot=. 2>&1 | FileCheck -check-prefixes=NO-WARN %s 50 51 /// --sysroot disables the existence check for headers. The check for libraries 52 /// remains. 53 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s --sysroot=. 2>&1 | FileCheck -check-prefixes=WARN-SYS-LIBS,NO-WARN %s 54 55 /// -isysroot overrides --sysroot for header search, but not library search. 56 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -isysroot . --sysroot=%t.inconly 2>&1 | FileCheck -check-prefixes=ISYSTEM,WARN-SYS-LIBS,NO-WARN %s 57 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s --sysroot=%t.inconly -isysroot . 2>&1 | FileCheck -check-prefixes=ISYSTEM,WARN-SYS-LIBS,NO-WARN %s 58 59 /// Warnings are emitted if non-existent --sysroot/-isysroot are supplied. 60 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s --sysroot=foo -isysroot %t.both 2>&1 | FileCheck -check-prefixes=WARN-SYSROOT,WARN-SYS-LIBS,NO-WARN %s 61 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s -isysroot foo --sysroot=%t.both 2>&1 | FileCheck -check-prefixes=WARN-SYSROOT,NO-WARN %s 62 // RUN: env SCE_PROSPERO_SDK_DIR=.. %clang @%t.rsp %s --sysroot=foo -isysroot bar 2>&1 | FileCheck -check-prefixes=WARN-SYSROOT,WARN-SYSROOT2,WARN-SYS-LIBS,NO-WARN %s 63 64 // NO-WARN-NOT: {{warning:|error:}} 65 // WARN-SYSROOT: warning: no such sysroot directory: 'foo' 66 // WARN-SYSROOT2: warning: no such sysroot directory: 'bar' 67 // WARN-SYS-LIBS: warning: unable to find PS5 system libraries directory 68 // WARN-SYS-HEADERS: warning: unable to find PS5 system headers directory 69 // NO-WARN-NOT: {{warning:|error:}} 70 // ISYSTEM: "-cc1"{{.*}}"-internal-externc-isystem" "./target/include" 71