cling/test/Interfaces/invocationFlags.C
Axel Naumann b118f4dee3 Get rid of extra-complex built_cling:
that is anyway what we want to test, always.
And nothing seems to set the env var.
2021-02-25 20:44:18 +01:00

102 lines
2.8 KiB
C

//------------------------------------------------------------------------------
// CLING - the C++ LLVM-based InterpreterG :)
//
// This file is dual-licensed: you can choose to license it under the University
// of Illinois Open Source License or the GNU Lesser General Public License. See
// LICENSE.TXT for details.
//------------------------------------------------------------------------------
// RUN: cat %s | %cling -Xclang -verify 2>&1 | FileCheck %s
// Make sure we are correctly parsing the arguments for CIFactory::createCI
#include "cling/Interpreter/InvocationOptions.h"
const char* argv[] = {
"progname",
"-",
"-xobjective-c",
"FileToExecuteA",
"-isysroot",
"APAth",
"-nobuiltininc",
"-v",
"FileToExecuteB",
"-L/Path/To/Libs",
"-lTest"
};
const int argc = sizeof(argv)/sizeof(argv[0]);
cling::CompilerOptions COpts(argc, argv);
COpts.Language
// CHECK: (unsigned int) 1
COpts.SysRoot
// CHECK-NEXT: (unsigned int) 1
COpts.NoBuiltinInc
// CHECK-NEXT: (unsigned int) 1
COpts.NoCXXInc
// CHECK-NEXT: (unsigned int) 0
COpts.CUDAHost
// CHECK-NEXT: (unsigned int) 0
COpts.CUDADevice
// CHECK-NEXT: (unsigned int) 0
COpts.DefaultLanguage()
// CHECK-NEXT: false
// library caller options: arguments passed as is
COpts.Remaining
// CHECK-NEXT: {{.*}} { "progname", "-", "-xobjective-c", "FileToExecuteA", "-isysroot", "APAth", "-nobuiltininc", "-v", "FileToExecuteB", "-L/Path/To/Libs", "-lTest" }
argv[2] = "-xcuda";
argv[6] = "-nostdinc++";
cling::InvocationOptions IOpts(argc, argv);
IOpts.Inputs
// CHECK-NEXT: {{.*}} { "-", "FileToExecuteA", "FileToExecuteB" }
IOpts.LibSearchPath
// CHECK-NEXT: {{.*}} { "/Path/To/Libs" }
IOpts.LibsToLoad
// CHECK-NEXT: {{.*}} { "Test" }
IOpts.CompilerOpts.Language
// CHECK-NEXT: (unsigned int) 1
IOpts.CompilerOpts.SysRoot
// CHECK-NEXT: (unsigned int) 1
IOpts.CompilerOpts.NoBuiltinInc
// CHECK-NEXT: (unsigned int) 0
IOpts.CompilerOpts.NoCXXInc
// CHECK-NEXT: (unsigned int) 1
IOpts.CompilerOpts.CUDAHost
// CHECK-NEXT: (unsigned int) 1
IOpts.CompilerOpts.CUDADevice
// CHECK-NEXT: (unsigned int) 0
// if the language is cuda, it should set automatically the c++ standard
IOpts.CompilerOpts.DefaultLanguage()
// CHECK-NEXT: true
// user options from main: filtered by cling (no '-')
IOpts.CompilerOpts.Remaining
// Windows translates -nostdinc++ to -nostdinc++. Ignore that fact for the test.
// CHECK-NEXT: {{.*}} { "progname", "-xcuda", "FileToExecuteA", "-isysroot", "APAth", {{.*}}, "-v", "FileToExecuteB" }
// this flag allows to compile ptx code with the interpreter instance
// CUDAHost and CUDADevice must not be true at the same time
// --cuda-device-only implies -xcuda
argv[10] = "--cuda-device-only";
cling::InvocationOptions IOpts2(argc, argv);
IOpts2.CompilerOpts.CUDAHost
// CHECK-NEXT: (unsigned int) 0
IOpts2.CompilerOpts.CUDADevice
// CHECK-NEXT: (unsigned int) 1
// expected-no-diagnostics
.q