CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
114 lines
5.2 KiB
C++
114 lines
5.2 KiB
C++
/// Windows SYCL runtime library linking tests
|
|
//
|
|
// NOTE: SYCL runtime library dependency is added at compiler stage via
|
|
// --dependent-lib (embedded in object file), similar to CRT libraries.
|
|
// Tests check for --dependent-lib in compiler (-cc1) output and
|
|
// -libpath: in linker output.
|
|
|
|
/// Test 1: /MD (explicit) and release library dependency
|
|
// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-MD %s
|
|
// CHECK-MD: "-cc1"
|
|
// CHECK-MD: "--dependent-lib=LLVMSYCL"
|
|
// CHECK-MD: clang-linker-wrapper"
|
|
// CHECK-MD-SAME: "-libpath:{{.*}}{{[/\\]+}}lib"
|
|
|
|
/// Test 2: /MT is rejected with clear error
|
|
// RUN: not %clang_cl -fsycl /MT --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-MT-ERROR %s
|
|
// CHECK-MT-ERROR: error: SYCL requires dynamic C++ runtime
|
|
|
|
/// Test 3: /MTd is also rejected
|
|
// RUN: not %clang_cl -fsycl /MTd --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-MTD-ERROR %s
|
|
// CHECK-MTD-ERROR: error: SYCL requires dynamic C++ runtime
|
|
|
|
/// Test 4: /MD uses release library
|
|
// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-RELEASE %s
|
|
// CHECK-RELEASE: "-cc1"
|
|
// CHECK-RELEASE: "--dependent-lib=LLVMSYCL"
|
|
// CHECK-RELEASE-NOT: LLVMSYCLd
|
|
|
|
/// Test 5: /MDd uses debug library
|
|
// RUN: %clang_cl -### -fsycl /MDd --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-DEBUG %s
|
|
// CHECK-DEBUG: "-cc1"
|
|
// CHECK-DEBUG: "--dependent-lib=LLVMSYCLd"
|
|
// CHECK-DEBUG-NOT: "--dependent-lib=LLVMSYCL"
|
|
|
|
/// Test 6: -fms-runtime-lib=static is rejected
|
|
// RUN: not %clang_cl -fsycl -fms-runtime-lib=static \
|
|
// RUN: --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-STATIC-ERROR %s
|
|
// CHECK-STATIC-ERROR: error: SYCL requires dynamic C++ runtime
|
|
|
|
/// Test 7: -fms-runtime-lib=dll_dbg uses debug library
|
|
// RUN: %clang_cl -### -fsycl -fms-runtime-lib=dll_dbg \
|
|
// RUN: --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-FLAG-DEBUG %s
|
|
// CHECK-FLAG-DEBUG: "-cc1"
|
|
// CHECK-FLAG-DEBUG: "--dependent-lib=LLVMSYCLd"
|
|
|
|
/// Test 8: LNK4078 warning is suppressed
|
|
// RUN: %clang_cl -### -fsycl --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-IGNORE %s
|
|
// CHECK-IGNORE: clang-linker-wrapper"
|
|
// CHECK-IGNORE: "/IGNORE:4078"
|
|
|
|
/// Test 9: -nolibsycl skips library dependency and CRT check
|
|
// RUN: %clang_cl -### -fsycl -nolibsycl /MT \
|
|
// RUN: --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-NOLIBSYCL %s
|
|
// CHECK-NOLIBSYCL-NOT: error:
|
|
// CHECK-NOLIBSYCL-NOT: "--dependent-lib=LLVMSYCL"
|
|
|
|
/// Test 10: Explicit /MD results in correct library
|
|
// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-EXPLICIT-MD %s
|
|
// CHECK-EXPLICIT-MD: "-cc1"
|
|
// CHECK-EXPLICIT-MD: "--dependent-lib=LLVMSYCL"
|
|
|
|
/// Test 11: Library search path is added at linker stage
|
|
// RUN: %clang_cl -### -fsycl /MD --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-LIBPATH %s
|
|
// CHECK-LIBPATH: clang-linker-wrapper"
|
|
// CHECK-LIBPATH: "-libpath:{{.*}}{{[/\\]+}}lib"
|
|
|
|
/// Test 12: clang (non-clang-cl) with MSVC target uses -defaultlib:
|
|
// RUN: %clang -### -fsycl -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-CLANG-DEFAULTLIB %s
|
|
// CHECK-CLANG-DEFAULTLIB: clang-linker-wrapper"
|
|
// CHECK-CLANG-DEFAULTLIB: "-libpath:{{.*}}{{[/\\]+}}lib"
|
|
// CHECK-CLANG-DEFAULTLIB: "-defaultlib:LLVMSYCL"
|
|
|
|
/// Test 13: clang with -fms-runtime-lib=dll_dbg uses debug library via -defaultlib:
|
|
// RUN: %clang -### -fsycl -fms-runtime-lib=dll_dbg --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-CLANG-DEBUG %s
|
|
// CHECK-CLANG-DEBUG: clang-linker-wrapper"
|
|
// CHECK-CLANG-DEBUG: "-defaultlib:LLVMSYCLd"
|
|
|
|
/// Test 14: Default CRT behavior - release library when no CRT flag specified
|
|
// RUN: %clang -### -fsycl -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-DEFAULT-CRT %s
|
|
// CHECK-DEFAULT-CRT: "-cc1"
|
|
// CHECK-DEFAULT-CRT: "--dependent-lib=LLVMSYCL"
|
|
// CHECK-DEFAULT-CRT-NOT: LLVMSYCLd
|
|
|
|
/// Test 15: Separate compilation - compile step embeds --dependent-lib in object
|
|
// RUN: %clang -### -fsycl -c -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-SEP-COMPILE %s
|
|
// CHECK-SEP-COMPILE: "--dependent-lib=LLVMSYCL"
|
|
|
|
/// Test 16: Separate compilation - link step adds -libpath: and -defaultlib: for pre-compiled object
|
|
// RUN: touch %t.obj
|
|
// RUN: %clang -### -fsycl -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %t.obj 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-SEP-LINK %s
|
|
// CHECK-SEP-LINK: "-libpath:{{.*}}{{[/\\]+}}lib"
|
|
// CHECK-SEP-LINK: "-defaultlib:LLVMSYCL"
|
|
|
|
/// Test 17: clang (non-clang-cl) with -nolibsycl suppresses -defaultlib:LLVMSYCL
|
|
// RUN: %clang -### -fsycl -nolibsycl -fms-runtime-lib=dll --target=x86_64-pc-windows-msvc -- %s 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=CHECK-CLANG-NOLIBSYCL %s
|
|
// CHECK-CLANG-NOLIBSYCL-NOT: "-defaultlib:LLVMSYCL"
|