diff --git a/emranlib.py b/emranlib.py index fc1367886a52a..478d578e58b63 100755 --- a/emranlib.py +++ b/emranlib.py @@ -14,4 +14,6 @@ from tools import shared -shared.exec_process([shared.LLVM_RANLIB, *sys.argv[1:]]) +LLVM_RANLIB = shared.llvm_tool_path('llvm-ranlib') + +shared.exec_process([LLVM_RANLIB, *sys.argv[1:]]) diff --git a/emscan-deps.py b/emscan-deps.py index 8c49771dbbad8..931b98548773c 100755 --- a/emscan-deps.py +++ b/emscan-deps.py @@ -21,4 +21,6 @@ # Add any clang flags that emcc would add. newargs += compile.get_cflags(tuple(argv)) -shared.exec_process([shared.CLANG_SCAN_DEPS, *newargs]) +CLANG_SCAN_DEPS = shared.llvm_tool_path('clang-scan-deps') + +shared.exec_process([CLANG_SCAN_DEPS, *newargs]) diff --git a/test/benchmark/benchmark_sse.py b/test/benchmark/benchmark_sse.py index aebca3b827d2a..5dc83309f1481 100644 --- a/test/benchmark/benchmark_sse.py +++ b/test/benchmark/benchmark_sse.py @@ -18,10 +18,9 @@ sys.path.insert(0, __testdir__) import clang_native -from common import EMCC, EMRUN, test_file +from common import CLANG_CXX, EMCC, EMRUN, test_file from tools import config -from tools.shared import CLANG_CXX from tools.utils import WINDOWS, run_process, write_file # System info diff --git a/test/clang_native.py b/test/clang_native.py index 25a8992b6c150..7dd0fd509c932 100644 --- a/test/clang_native.py +++ b/test/clang_native.py @@ -7,8 +7,10 @@ import os import platform import sys +from subprocess import PIPE + +import common -from tools.shared import CLANG_CC, CLANG_CXX, PIPE from tools.utils import MACOS, WINDOWS, path_from_root, run_process logger = logging.getLogger('clang_native') @@ -63,9 +65,9 @@ def get_clang_native_env(): return CACHED_CLANG_NATIVE_ENV env = os.environ.copy() - env['CC'] = CLANG_CC - env['CXX'] = CLANG_CXX - env['LD'] = CLANG_CXX + env['CC'] = common.CLANG_CC + env['CXX'] = common.CLANG_CXX + env['LD'] = common.CLANG_CXX if MACOS: path = run_process(['xcrun', '--show-sdk-path'], stdout=PIPE).stdout.strip() diff --git a/test/common.py b/test/common.py index c5c7e1532caa9..583a9bf52bfaa 100644 --- a/test/common.py +++ b/test/common.py @@ -31,7 +31,6 @@ from tools import building, config, shared, utils from tools.feature_matrix import Feature from tools.settings import COMPILE_TIME_SETTINGS -from tools.shared import get_canonical_temp_dir from tools.utils import ( WINDOWS, exe_path_from_root, @@ -68,8 +67,7 @@ LAST_TEST = path_from_root('out/last_test.txt') PREVIOUS_TEST_RUN_RESULTS_FILE = path_from_root('out/previous_test_run_results.json') -WEBIDL_BINDER = exe_path_from_root('tools/webidl_binder') - +# emscripten tools EMBUILDER = exe_path_from_root('embuilder') EMMAKE = exe_path_from_root('emmake') EMCMAKE = exe_path_from_root('emcmake') @@ -81,11 +79,23 @@ EMAR = exe_path_from_root('emar') EMRANLIB = exe_path_from_root('emranlib') FILE_PACKAGER = exe_path_from_root('tools/file_packager') +WEBIDL_BINDER = exe_path_from_root('tools/webidl_binder') + +# binaryen tools WASM_DIS = os.path.join(building.get_binaryen_bin(), 'wasm-dis') + +# llvm tools WASM_LD = shared.llvm_tool_path('wasm-ld') +LLVM_DWARFDUMP = shared.llvm_tool_path('llvm-dwarfdump') +LLVM_AR = shared.llvm_tool_path('llvm-ar') +LLVM_NM = shared.llvm_tool_path('llvm-nm') +LLVM_DWP = shared.llvm_tool_path('llvm-dwp') LLVM_COV = shared.llvm_tool_path('llvm-cov') +CLANG_CC = shared.clang_tool_path('clang') +CLANG_CXX = shared.clang_tool_path('clang++') LLVM_OBJDUMP = shared.llvm_tool_path('llvm-objdump') LLVM_PROFDATA = shared.llvm_tool_path('llvm-profdata') + PYTHON = sys.executable @@ -446,7 +456,7 @@ class RunnerCore(RetryableTestCase, metaclass=RunnerMeta): # default temporary directory settings. set_temp_dir may be called later to # override these temp_dir = shared.TEMP_DIR - canonical_temp_dir = get_canonical_temp_dir(shared.TEMP_DIR) + canonical_temp_dir = shared.get_canonical_temp_dir(shared.TEMP_DIR) library_cache: dict[str, tuple[str, object]] = {} @@ -697,7 +707,7 @@ def setup_wasmfs_test(self): def set_temp_dir(self, temp_dir): self.temp_dir = temp_dir - self.canonical_temp_dir = get_canonical_temp_dir(self.temp_dir) + self.canonical_temp_dir = shared.get_canonical_temp_dir(self.temp_dir) # Explicitly set dedicated temporary directory for parallel tests os.environ['EMCC_TEMP_DIR'] = self.temp_dir diff --git a/test/runner.py b/test/runner.py index 915fde0f4afd6..23701198333ce 100755 --- a/test/runner.py +++ b/test/runner.py @@ -48,7 +48,7 @@ import jsrun import parallel_testsuite from color_runner import ColorTextRunner -from common import errlog +from common import CLANG_CC, errlog from single_line_runner import SingleLineTestRunner from tools import building, colored_logger, config, shared, utils @@ -652,8 +652,8 @@ def find_llvm_git_root(dir): print(f'LLVM git directory: "{llvm_git_root}"') print_repository_info(llvm_git_root, 'LLVM') - clang_version = utils.run_process([shared.CLANG_CC, '--version'], stdout=subprocess.PIPE).stdout.strip() - print(f'Clang: "{shared.CLANG_CC}"\n{clang_version}\n') + clang_version = utils.run_process([CLANG_CC, '--version'], stdout=subprocess.PIPE).stdout.strip() + print(f'Clang: "{CLANG_CC}"\n{clang_version}\n') print(f'EMTEST_BROWSER: {browser_common.EMTEST_BROWSER}') if browser_common.is_firefox(): diff --git a/test/sockets_common.py b/test/sockets_common.py index 02e42440540e0..e20041e005e43 100644 --- a/test/sockets_common.py +++ b/test/sockets_common.py @@ -18,11 +18,10 @@ import clang_native import common -from common import EMCC, PYTHON +from common import CLANG_CC, EMCC, PYTHON from decorators import test_file from tools import config -from tools.shared import CLANG_CC from tools.utils import run_process npm_checked = False diff --git a/test/test_benchmark.py b/test/test_benchmark.py index 890901273cbcc..fc3e1db2c99b7 100644 --- a/test/test_benchmark.py +++ b/test/test_benchmark.py @@ -25,11 +25,19 @@ import clang_native import common import jsrun -from common import EMCC, compiler_for, copy_asset, read_binary, read_file, test_file +from common import ( + CLANG_CC, + CLANG_CXX, + EMCC, + compiler_for, + copy_asset, + read_binary, + read_file, + test_file, +) from decorators import needs_make, parameterized -from tools import utils -from tools.shared import CLANG_CC, CLANG_CXX, config +from tools import config, utils from tools.utils import run_process # standard arguments for timing: diff --git a/test/test_core.py b/test/test_core.py index ff54c14942cec..f1b44868a856f 100644 --- a/test/test_core.py +++ b/test/test_core.py @@ -21,12 +21,14 @@ import clang_native import common from common import ( + CLANG_CXX, EMAR, EMBUILDER, EMCC, EMXX, FILE_PACKAGER, LLVM_COV, + LLVM_DWARFDUMP, LLVM_PROFDATA, NON_ZERO, PYTHON, @@ -6710,7 +6712,7 @@ def test_neon_wasm_simd(self): @no_big_endian('SIMD support is currently not compatible with big endian') def test_sse1(self, args): src = test_file('sse/test_sse1.cpp') - self.run_process([shared.CLANG_CXX, src, '-msse', '-o', 'test_sse1', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-msse', '-o', 'test_sse1', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_sse1', stdout=PIPE).stdout self.maybe_closure() @@ -6731,7 +6733,7 @@ def test_sse1(self, args): @no_big_endian('SIMD support is currently not compatible with big endian') def test_sse2(self, args): src = test_file('sse/test_sse2.cpp') - self.run_process([shared.CLANG_CXX, src, '-msse2', '-Wno-argument-outside-range', '-o', 'test_sse2', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-msse2', '-Wno-argument-outside-range', '-o', 'test_sse2', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_sse2', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), '-msse2', '-fno-inline-functions', '-Wno-argument-outside-range', '-sSTACK_SIZE=1MB'] + args @@ -6745,7 +6747,7 @@ def test_sse2(self, args): @no_big_endian('SIMD support is currently not compatible with big endian') def test_sse3(self): src = test_file('sse/test_sse3.cpp') - self.run_process([shared.CLANG_CXX, src, '-msse3', '-Wno-argument-outside-range', '-o', 'test_sse3', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-msse3', '-Wno-argument-outside-range', '-o', 'test_sse3', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_sse3', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), '-msse3', '-Wno-argument-outside-range'] @@ -6759,7 +6761,7 @@ def test_sse3(self): @no_big_endian('SIMD support is currently not compatible with big endian') def test_ssse3(self): src = test_file('sse/test_ssse3.cpp') - self.run_process([shared.CLANG_CXX, src, '-mssse3', '-Wno-argument-outside-range', '-o', 'test_ssse3', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-mssse3', '-Wno-argument-outside-range', '-o', 'test_ssse3', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_ssse3', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), '-mssse3', '-Wno-argument-outside-range'] @@ -6776,7 +6778,7 @@ def test_ssse3(self): def test_sse4_1(self): src = test_file('sse/test_sse4_1.cpp') # Run with inlining disabled to avoid slow LLVM behavior with lots of macro expanded loops inside a function body. - self.run_process([shared.CLANG_CXX, src, '-msse4.1', '-fno-inline-functions', '-Wno-argument-outside-range', '-o', 'test_sse4_1', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-msse4.1', '-fno-inline-functions', '-Wno-argument-outside-range', '-o', 'test_sse4_1', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_sse4_1', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), '-msse4.1', '-fno-inline-functions', '-Wno-argument-outside-range', '-sSTACK_SIZE=1MB'] @@ -6795,7 +6797,7 @@ def test_sse4_1(self): def test_sse4(self, use_4_2): msse4 = '-msse4.2' if use_4_2 else '-msse4' src = test_file('sse/test_sse4_2.cpp') - self.run_process([shared.CLANG_CXX, src, msse4, '-Wno-argument-outside-range', '-o', 'test_sse4_2', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, msse4, '-Wno-argument-outside-range', '-o', 'test_sse4_2', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_sse4_2', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), msse4, '-Wno-argument-outside-range'] @@ -6816,7 +6818,7 @@ def test_sse4(self, use_4_2): @no_big_endian('SIMD support is currently not compatible with big endian') def test_avx(self, args): src = test_file('sse/test_avx.cpp') - self.run_process([shared.CLANG_CXX, src, '-mavx', '-Wno-argument-outside-range', '-Wpedantic', '-o', 'test_avx', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-mavx', '-Wno-argument-outside-range', '-Wpedantic', '-o', 'test_avx', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_avx', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), '-mavx', '-fno-inline-functions', '-Wno-argument-outside-range', '-sSTACK_SIZE=1MB'] + args @@ -6837,7 +6839,7 @@ def test_avx(self, args): @no_big_endian('SIMD support is currently not compatible with big endian') def test_avx2(self, args): src = test_file('sse/test_avx2.cpp') - self.run_process([shared.CLANG_CXX, src, '-mavx2', '-Wno-argument-outside-range', '-Wpedantic', '-o', 'test_avx2', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) + self.run_process([CLANG_CXX, src, '-mavx2', '-Wno-argument-outside-range', '-Wpedantic', '-o', 'test_avx2', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args(), stdout=PIPE) native_result = self.run_process('./test_avx2', stdout=PIPE).stdout self.cflags += ['-I' + test_file('sse'), '-mavx2', '-Wno-argument-outside-range', '-sSTACK_SIZE=1MB'] + args @@ -6861,7 +6863,7 @@ def test_fma(self): @no_big_endian('SIMD support is currently not compatible with big endian') def test_fma_relaxed(self): src = test_file('sse/test_fma_relaxed.cpp') - self.run_process([shared.CLANG_CXX, src, '-mfma', '-mavx', '-o', 'test_fma_relaxed', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args()) + self.run_process([CLANG_CXX, src, '-mfma', '-mavx', '-o', 'test_fma_relaxed', '-D_CRT_SECURE_NO_WARNINGS=1'] + clang_native.get_clang_native_args()) native_result = self.run_process('./test_fma_relaxed', stdout=PIPE).stdout self.do_runf(src, native_result, @@ -8073,7 +8075,7 @@ def test_dwarf(self): self.emcc('test_dwarf.c') - out = self.run_process([shared.LLVM_DWARFDUMP, 'a.out.wasm', '-all'], stdout=PIPE).stdout + out = self.run_process([LLVM_DWARFDUMP, 'a.out.wasm', '-all'], stdout=PIPE).stdout # parse the sections sections = {} diff --git a/test/test_other.py b/test/test_other.py index 9adc7980cabaf..facb4a1e69c7d 100644 --- a/test/test_other.py +++ b/test/test_other.py @@ -36,6 +36,8 @@ import jsrun import line_endings from common import ( + CLANG_CC, + CLANG_CXX, EMAR, EMBUILDER, EMCC, @@ -46,6 +48,10 @@ EMRANLIB, EMXX, FILE_PACKAGER, + LLVM_AR, + LLVM_DWARFDUMP, + LLVM_DWP, + LLVM_NM, NON_ZERO, PYTHON, TEST_ROOT, @@ -106,18 +112,9 @@ with_env_modify, ) -from tools import building, cache, response_file, shared, utils, webassembly +from tools import building, cache, config, response_file, shared, utils, webassembly from tools.building import get_building_env from tools.link import binary_encode -from tools.shared import ( - CLANG_CC, - CLANG_CXX, - LLVM_AR, - LLVM_DWARFDUMP, - LLVM_DWP, - LLVM_NM, - config, -) from tools.system_libs import DETERMINISTIC_PREFIX from tools.utils import ( MACOS, @@ -6607,7 +6604,7 @@ def check(what, args, fail=True, expect=''): import os print(os.environ.get('NM')) ''') - check(EMCONFIGURE, [PYTHON, 'test.py'], expect=shared.LLVM_NM, fail=False) + check(EMCONFIGURE, [PYTHON, 'test.py'], expect=LLVM_NM, fail=False) create_file('test.c', 'int main() { return 0; }') os.mkdir('test_cache') @@ -12163,12 +12160,12 @@ def test_emranlib(self): # Create a library with no archive map self.run_process([EMAR, 'crS', 'liba.a', 'foo.o', 'bar.o']) - output = self.run_process([shared.LLVM_NM, '--print-armap', 'liba.a'], stdout=PIPE).stdout + output = self.run_process([LLVM_NM, '--print-armap', 'liba.a'], stdout=PIPE).stdout self.assertNotContained('Archive map', output) # Add an archive map self.run_process([EMRANLIB, 'liba.a']) - output = self.run_process([shared.LLVM_NM, '--print-armap', 'liba.a'], stdout=PIPE).stdout + output = self.run_process([LLVM_NM, '--print-armap', 'liba.a'], stdout=PIPE).stdout self.assertContained('Archive map', output) def test_pthread_stub(self): diff --git a/tools/building.py b/tools/building.py index a18290c8ed23d..5baec4ac64598 100644 --- a/tools/building.py +++ b/tools/building.py @@ -36,10 +36,6 @@ EMCC, EMRANLIB, EMXX, - LLVM_DWARFDUMP, - LLVM_NM, - LLVM_OBJCOPY, - LLVM_OBJDUMP, asmjs_mangle, check_call, demangle_c_symbol_name, @@ -57,6 +53,10 @@ binaryen_checked = False EXPECTED_BINARYEN_VERSION = 132 WASM_LD = shared.llvm_tool_path('wasm-ld') +LLVM_DWARFDUMP = shared.llvm_tool_path('llvm-dwarfdump') +LLVM_OBJCOPY = shared.llvm_tool_path('llvm-objcopy') +LLVM_OBJDUMP = shared.llvm_tool_path('llvm-objdump') +LLVM_NM = shared.llvm_tool_path('llvm-nm') # the exports the user requested user_requested_exports: set[str] = set() diff --git a/tools/emdwp.py b/tools/emdwp.py index 9a07a7df5464e..bf198c8e8bb85 100755 --- a/tools/emdwp.py +++ b/tools/emdwp.py @@ -15,4 +15,6 @@ from tools import shared -shared.exec_process([shared.LLVM_DWP, *sys.argv[1:]]) +LLVM_DWP = shared.llvm_tool_path('llvm-dwp') + +shared.exec_process([LLVM_DWP, *sys.argv[1:]]) diff --git a/tools/emnm.py b/tools/emnm.py index 1d5c4df9e9f61..05b75f72b13d8 100755 --- a/tools/emnm.py +++ b/tools/emnm.py @@ -15,4 +15,6 @@ from tools import shared -shared.exec_process([shared.LLVM_NM, *sys.argv[1:]]) +LLVM_NM = shared.llvm_tool_path('llvm-nm') + +shared.exec_process([LLVM_NM, *sys.argv[1:]]) diff --git a/tools/emscripten.py b/tools/emscripten.py index 6aeaeea9507be..ff2196d32473d 100644 --- a/tools/emscripten.py +++ b/tools/emscripten.py @@ -579,7 +579,7 @@ def finalize_wasm(infile, outfile, js_syms): with shared.get_temp_files().get_file('.bin') as url_file: utils.write_binary(url_file, leb128.u.encode(len(base_url)) + base_url.encode('utf-8')) - cmd = [shared.LLVM_OBJCOPY, + cmd = [building.LLVM_OBJCOPY, '--add-section', 'sourceMappingURL=' + url_file, infile] diff --git a/tools/shared.py b/tools/shared.py index 8cb17a97b1201..a3a36b9159420 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -629,14 +629,7 @@ def init(): CLANG_CC = clang_tool_path('clang') CLANG_CXX = clang_tool_path('clang++') -CLANG_SCAN_DEPS = llvm_tool_path('clang-scan-deps') LLVM_AR = llvm_tool_path('llvm-ar') -LLVM_DWP = llvm_tool_path('llvm-dwp') -LLVM_RANLIB = llvm_tool_path('llvm-ranlib') -LLVM_NM = llvm_tool_path('llvm-nm') -LLVM_DWARFDUMP = llvm_tool_path('llvm-dwarfdump') -LLVM_OBJCOPY = llvm_tool_path('llvm-objcopy') -LLVM_OBJDUMP = llvm_tool_path('llvm-objdump') EMCC = exe_path_from_root('emcc') EMXX = exe_path_from_root('em++')