]> granicus.if.org Git - clang/commitdiff
check-clang: Introduce get_llvm_config_props in clang/test/lit.cfg.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 4 Dec 2013 03:40:56 +0000 (03:40 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 4 Dec 2013 03:40:56 +0000 (03:40 +0000)
In trunk, we can use features as below:

  aarch64-registered-target
  hexagon-registered-target
  msp430-registered-target
  r600-registered-target
  systemz-registered-target
  xcore-registered-target

Each of them, as below, implies corresponding subtargets:

  arm-registered-target   -- arm, thumb
  mips-registered-target  -- mips, mips64, mips64el, mipsel
  nvptx-registered-target -- nvptx, nvptx64
  sparc-registered-target -- sparc, sparcv9
  x86-registered-target   -- x86, x86-64

They will be renamed:

  cppbackend-registered-target -- was "cpp". Unused in trunk.
  powerpc-registered-target -- was "ppc32", "ppc64" and "ppc64le".

The feature "asserts" is also taken from llvm-config.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196347 91177308-0d34-0410-b5e6-96231b3b80d8

test/CMakeLists.txt
test/lit.cfg

index a11b83a854cb0d1bfed4b633a90b823974a43234..e7731189a2caa1e320e30a2df8041f6cfcff1601 100644 (file)
@@ -44,6 +44,7 @@ endif()
 
 if( NOT CLANG_BUILT_STANDALONE )
   list(APPEND CLANG_TEST_DEPS
+    llvm-config
     llc opt FileCheck count not llvm-symbolizer
     )
 
index 19daa61a64ffe69486b6e551abcb2412eb5cad40..807b231358ac146b3bcbb86bfd17a79300cd4c7e 100644 (file)
@@ -324,8 +324,31 @@ if len(llc_props['set_of_targets']) > 0:
 else:
     lit_config.fatal('No Targets Registered with the LLVM Tools!')
 
-if llc_props['enable_assertions']:
-    config.available_features.add('asserts')
+# Returns set of available features, registered-target(s) and asserts.
+def get_llvm_config_props():
+    set_of_features = set()
+
+    cmd = subprocess.Popen(
+        [
+            os.path.join(llvm_tools_dir, 'llvm-config'),
+            '--assertion-mode',
+            '--targets-built',
+            ],
+        stdout=subprocess.PIPE
+        )
+    # 1st line corresponds to --assertion-mode, "ON" or "OFF".
+    line = cmd.stdout.readline().strip().decode('ascii')
+    if line == "ON":
+        set_of_features.add('asserts')
+
+    # 2nd line corresponds to --targets-built, like;
+    # AArch64 ARM CppBackend X86
+    for arch in cmd.stdout.readline().decode('ascii').split():
+        set_of_features.add(arch.lower() + '-registered-target')
+
+    return set_of_features
+
+config.available_features.update(get_llvm_config_props())
 
 if lit.util.which('xmllint'):
     config.available_features.add('xmllint')