mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 11:35:51 -04:00

Clang is inherently a cross compiler and can generate code for any target enabled during build. It however requires to specify many parameters in the invocation, which could be hardcoded during configuration process in the case of single-target compiler. The purpose of configuration files is to make specifying clang arguments easier. A configuration file is a collection of driver options, which are inserted into command line before other options specified in the clang invocation. It groups related options together and allows specifying them in simpler, more flexible and less error prone way than just listing the options somewhere in build scripts. Configuration file may be thought as a "macro" that names an option set and is expanded when the driver is called. Use of configuration files is described in `UserManual.rst`. Differential Revision: https://reviews.llvm.org/D24933 llvm-svn: 321621
55 lines
3.0 KiB
C
55 lines
3.0 KiB
C
//--- No more than one '--config' may be specified.
|
|
//
|
|
// RUN: not %clang --config 1.cfg --config 2.cfg 2>&1 | FileCheck %s -check-prefix CHECK-DUPLICATE
|
|
// CHECK-DUPLICATE: no more than one option '--config' is allowed
|
|
|
|
|
|
//--- '--config' must be followed by config file name.
|
|
//
|
|
// RUN: not %clang --config 2>&1 | FileCheck %s -check-prefix CHECK-MISSING-FILE
|
|
// CHECK-MISSING-FILE: argument to '--config' is missing (expected 1 value)
|
|
|
|
|
|
//--- '--config' must not be found in config files.
|
|
//
|
|
// RUN: not %clang --config %S/Inputs/config-6.cfg 2>&1 | FileCheck %s -check-prefix CHECK-NESTED
|
|
// CHECK-NESTED: option '--config' is not allowed inside configuration file
|
|
|
|
|
|
//--- Argument of '--config' must be existing file, if it is specified by path.
|
|
//
|
|
// RUN: not %clang --config somewhere/nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NONEXISTENT
|
|
// CHECK-NONEXISTENT: configuration file '{{.*}}somewhere/nonexistent-config-file' does not exist
|
|
|
|
|
|
//--- Argument of '--config' must exist somewhere in well-known directories, if it is specified by bare name.
|
|
//
|
|
// RUN: not %clang --config-system-dir= --config-user-dir= --config nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NOTFOUND0
|
|
// CHECK-NOTFOUND0: configuration file 'nonexistent-config-file.cfg' cannot be found
|
|
// CHECK-NOTFOUND0-NEXT: was searched for in the directory:
|
|
// CHECK-NOTFOUND0-NOT: was searched for in the directory:
|
|
//
|
|
// RUN: not %clang --config-system-dir= --config-user-dir=%S/Inputs/config2 --config nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NOTFOUND1
|
|
// CHECK-NOTFOUND1: configuration file 'nonexistent-config-file.cfg' cannot be found
|
|
// CHECK-NOTFOUND1-NEXT: was searched for in the directory: {{.*}}/Inputs/config2
|
|
// CHECK-NOTFOUND1-NEXT: was searched for in the directory:
|
|
// CHECK-NOTFOUND1-NOT: was searched for in the directory:
|
|
//
|
|
// RUN: not %clang --config-system-dir=%S/Inputs/config --config-user-dir= --config nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NOTFOUND2
|
|
// CHECK-NOTFOUND2: configuration file 'nonexistent-config-file.cfg' cannot be found
|
|
// CHECK-NOTFOUND2-NEXT: was searched for in the directory: {{.*}}/Inputs/config
|
|
// CHECK-NOTFOUND2-NEXT: was searched for in the directory:
|
|
// CHECK-NOTFOUND2-NOT: was searched for in the directory:
|
|
//
|
|
// RUN: not %clang --config-system-dir=%S/Inputs/config --config-user-dir=%S/Inputs/config2 --config nonexistent-config-file 2>&1 | FileCheck %s -check-prefix CHECK-NOTFOUND3
|
|
// CHECK-NOTFOUND3: configuration file 'nonexistent-config-file.cfg' cannot be found
|
|
// CHECK-NOTFOUND3-NEXT: was searched for in the directory: {{.*}}/Inputs/config2
|
|
// CHECK-NOTFOUND3-NEXT: was searched for in the directory: {{.*}}/Inputs/config
|
|
// CHECK-NOTFOUND3-NEXT: was searched for in the directory:
|
|
|
|
|
|
//--- Argument in config file cannot cross the file boundary
|
|
//
|
|
// RUN: not %clang --config %S/Inputs/config-5.cfg x86_64-unknown-linux-gnu -c %s 2>&1 | FileCheck %s -check-prefix CHECK-CROSS
|
|
// CHECK-CROSS: error: argument to '-target' is missing
|