diff options
Diffstat (limited to 'test/lit.common.cfg')
-rw-r--r-- | test/lit.common.cfg | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/test/lit.common.cfg b/test/lit.common.cfg index 5274b49c6..659122712 100644 --- a/test/lit.common.cfg +++ b/test/lit.common.cfg @@ -106,6 +106,10 @@ config.substitutions.append( if config.emulator: config.substitutions.append( ('%run', config.emulator) ) config.substitutions.append( ('%env ', "env ") ) + # TODO: Implement `%device_rm` to perform removal of files in the emulator. + # For now just make it a no-op. + lit_config.warning('%device_rm is not implemented') + config.substitutions.append( ('%device_rm', 'echo ') ) config.compile_wrapper = "" elif config.host_os == 'Darwin' and config.apple_platform != "osx": # Darwin tests can be targetting macOS, a device or a simulator. All devices @@ -127,14 +131,18 @@ elif config.host_os == 'Darwin' and config.apple_platform != "osx": ios_or_iossim = "iossim" if config.apple_platform.endswith("sim") else "ios" config.available_features.add('ios') + device_id_env = "SANITIZER_" + ios_or_iossim.upper() + "_TEST_DEVICE_IDENTIFIER" if ios_or_iossim == "iossim": config.available_features.add('iossim') + if device_id_env not in os.environ: + lit_config.fatal( + '{} must be set in the environment when running iossim tests'.format( + device_id_env)) if config.apple_platform != "ios" and config.apple_platform != "iossim": config.available_features.add(config.apple_platform) ios_commands_dir = os.path.join(config.compiler_rt_src_root, "test", "sanitizer_common", "ios_commands") - device_id_env = "SANITIZER_" + ios_or_iossim.upper() + "_TEST_DEVICE_IDENTIFIER" run_wrapper = os.path.join(ios_commands_dir, ios_or_iossim + "_run.py") env_wrapper = os.path.join(ios_commands_dir, ios_or_iossim + "_env.py") compile_wrapper = os.path.join(ios_commands_dir, ios_or_iossim + "_compile.py") @@ -144,9 +152,17 @@ elif config.host_os == 'Darwin' and config.apple_platform != "osx": config.environment[device_id_env] = os.environ[device_id_env] config.substitutions.append(('%run', run_wrapper)) config.substitutions.append(('%env ', env_wrapper + " ")) + # Current implementation of %device_rm uses the run_wrapper to do + # the work. + config.substitutions.append(('%device_rm', '{} rm '.format(run_wrapper))) config.compile_wrapper = compile_wrapper - prepare_output = subprocess.check_output([prepare_script, config.apple_platform, config.clang]).strip() + try: + prepare_output = subprocess.check_output([prepare_script, config.apple_platform, config.clang]).strip() + except subprocess.CalledProcessError as e: + print("Command failed:") + print(e.output) + raise e if len(prepare_output) > 0: print(prepare_output) prepare_output_json = prepare_output.split("\n")[-1] prepare_output = json.loads(prepare_output_json) @@ -157,9 +173,15 @@ elif config.android: config.compile_wrapper = compile_wrapper config.substitutions.append( ('%run', "") ) config.substitutions.append( ('%env ', "env ") ) + # TODO: Implement `%device_rm` to perform removal of files on a device. For + # now just make it a no-op. + lit_config.warning('%device_rm is not implemented') + config.substitutions.append( ('%device_rm', 'echo ') ) else: config.substitutions.append( ('%run', "") ) config.substitutions.append( ('%env ', "env ") ) + # When running locally %device_rm is a no-op. + config.substitutions.append( ('%device_rm', 'echo ') ) config.compile_wrapper = "" # Define CHECK-%os to check for OS-dependent output. @@ -295,7 +317,7 @@ if config.host_os == 'Darwin' and is_darwin_lto_supported(): config.lto_supported = True config.lto_launch = ["env", "DYLD_LIBRARY_PATH=" + config.llvm_shlib_dir] config.lto_flags = [] -elif config.host_os == 'Linux' and is_linux_lto_supported(): +elif config.host_os in ['Linux', 'FreeBSD', 'NetBSD'] and is_linux_lto_supported(): config.lto_supported = True config.lto_launch = [] if config.use_lld: |