-
Notifications
You must be signed in to change notification settings - Fork 12.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)
Summary: Original r297566 (https://reviews.llvm.org/D30802) is splitted into two parts. This part adds CMakefile/lit.cfg support. Reviewers: rengolin, compnerd, jroelofs, erik.pilkington Subscribers: srhines, dberris, mgorny Differential Revision: https://reviews.llvm.org/D31259 llvm-svn: 298714
- Loading branch information
Weiming Zhao
committed
Mar 24, 2017
1 parent
19bf8bf
commit 2dff984
Showing
3 changed files
with
109 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| # -*- Python -*- | ||
|
|
||
| import os | ||
| import platform | ||
|
|
||
| import lit.formats | ||
|
|
||
| def get_required_attr(config, attr_name): | ||
| attr_value = getattr(config, attr_name, None) | ||
| if attr_value == None: | ||
| lit_config.fatal( | ||
| "No attribute %r in test configuration! You may need to run " | ||
| "tests from your build directory or add this attribute " | ||
| "to lit.site.cfg " % attr_name) | ||
| return attr_value | ||
|
|
||
| # Setup config name. | ||
| config.name = 'Builtins' + config.name_suffix | ||
|
|
||
| # Platform-specific default Builtins_OPTIONS for lit tests. | ||
| default_builtins_opts = '' | ||
|
|
||
| # Setup source root. | ||
| config.test_source_root = os.path.dirname(__file__) | ||
|
|
||
| # Path to the static library | ||
| base_lib = os.path.join(config.compiler_rt_libdir, "libclang_rt.builtins-%s.a " | ||
| % config.target_arch) | ||
|
|
||
| builtins_source_dir = os.path.join( | ||
| get_required_attr(config, "compiler_rt_src_root"), "lib", "builtins") | ||
| builtins_lit_source_dir = get_required_attr(config, "builtins_lit_source_dir") | ||
|
|
||
| extra_link_flags = ["-nodefaultlibs"] | ||
| config.substitutions.append( ("%librt ", base_lib + ' -lc -lm ') ) | ||
|
|
||
| target_cflags = [get_required_attr(config, "target_cflags")] | ||
| target_cflags += ['-fno-builtin', '-I', builtins_source_dir] | ||
| target_cflags += extra_link_flags | ||
| target_cxxflags = config.cxx_mode_flags + target_cflags | ||
| clang_builtins_static_cflags = ([""] + | ||
| config.debug_info_flags + target_cflags) | ||
| clang_builtins_static_cxxflags = config.cxx_mode_flags + \ | ||
| clang_builtins_static_cflags | ||
|
|
||
| clang_builtins_cflags = clang_builtins_static_cflags | ||
| clang_builtins_cxxflags = clang_builtins_static_cxxflags | ||
|
|
||
|
|
||
| config.available_features.add('not-android') | ||
| clang_wrapper = "" | ||
|
|
||
| def build_invocation(compile_flags): | ||
| return " " + " ".join([clang_wrapper, config.clang] + compile_flags) + " " | ||
|
|
||
|
|
||
| target_arch = config.target_arch | ||
| if (target_arch == "arm"): | ||
| target_arch = "armv7" | ||
|
|
||
| config.substitutions.append( ("%clang ", build_invocation(target_cflags)) ) | ||
| config.substitutions.append( ("%clangxx ", build_invocation(target_cxxflags)) ) | ||
| config.substitutions.append( ("%clang_builtins ", \ | ||
| build_invocation(clang_builtins_cflags))) | ||
| config.substitutions.append( ("%clangxx_builtins ", \ | ||
| build_invocation(clang_builtins_cxxflags))) | ||
|
|
||
| # FIXME: move the call_apsr.s into call_apsr.h as inline-asm. | ||
| # some ARM tests needs call_apsr.s | ||
| call_apsr_source = os.path.join(builtins_lit_source_dir, 'arm', 'call_apsr.S') | ||
| march_flag = '-march=' + target_arch | ||
| call_apsr_flags = ['-c', march_flag, call_apsr_source] | ||
| config.substitutions.append( ("%arm_call_apsr ", \ | ||
| build_invocation(call_apsr_flags)) ) | ||
|
|
||
| # Default test suffixes. | ||
| config.suffixes = ['.c', '.cc', '.cpp'] | ||
|
|
||
| if not config.emulator: | ||
| config.available_features.add('native-run') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| @LIT_SITE_CFG_IN_HEADER@ | ||
|
|
||
| config.name_suffix = "@BUILTINS_TEST_CONFIG_SUFFIX@" | ||
| config.builtins_lit_source_dir = "@BUILTINS_LIT_SOURCE_DIR@/Unit" | ||
| config.target_cflags = "@BUILTINS_TEST_TARGET_CFLAGS@" | ||
| config.target_arch = "@BUILTINS_TEST_TARGET_ARCH@" | ||
|
|
||
| # Load common config for all compiler-rt lit tests. | ||
| lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured") | ||
|
|
||
| # Load tool-specific config that would do the real work. | ||
| lit_config.load_config(config, "@BUILTINS_LIT_SOURCE_DIR@/Unit/lit.cfg") |