summaryrefslogtreecommitdiff
path: root/test/find_exe.py
blob: 0e73c841f271fa8bf11958d81361506528559701 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python
#
# Copyright 2016 WebAssembly Community Group participants
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import os
import sys

from utils import Error

IS_WINDOWS = sys.platform == 'win32'
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
REPO_ROOT_DIR = os.path.dirname(SCRIPT_DIR)
DEFAULT_SEXPR_WASM_EXE = os.path.join(REPO_ROOT_DIR, 'out', 'sexpr-wasm')
BUILT_D8_EXE = os.path.join(REPO_ROOT_DIR, 'third_party', 'v8', 'v8', 'out',
                            'Release', 'd8')
DOWNLOAD_D8_EXE = os.path.join(REPO_ROOT_DIR, 'out', 'd8')
BUILT_SM_EXE = os.path.join(REPO_ROOT_DIR, 'third_party', 'gecko-dev', 'js',
                            'src', 'build_OPT.OBJ', 'js', 'src', 'js')
DOWNLOAD_SM_EXE = os.path.join(REPO_ROOT_DIR, 'out', 'js')
DEFAULT_WASM_WAST_EXE = os.path.join(REPO_ROOT_DIR, 'out', 'wasm-wast')
DEFAULT_WASM_INTERP_EXE = os.path.join(REPO_ROOT_DIR, 'out', 'wasm-interp')


if IS_WINDOWS:
  DEFAULT_SEXPR_WASM_EXE += '.exe'
  BUILT_D8_EXE += '.exe'
  DOWNLOAD_D8_EXE += '.exe'
  BUILT_SM_EXE += '.exe'
  DOWNLOAD_SM_EXE += '.exe'
  DEFAULT_WASM_WAST_EXE += '.exe'
  DEFAULT_WASM_INTERP_EXE += '.exe'


def FindExeWithFallback(name, default_exe_list, override_exe=None):
  result = override_exe
  if result is not None:
    if os.path.exists(result):
      return os.path.abspath(result)
    raise Error('%s executable not found.\nsearch path: %s\n' % (name, result))

  for result in default_exe_list:
    if os.path.exists(result):
      return os.path.abspath(result)

  raise Error('%s executable not found.\n%s\n' % (
      name,
      '\n'.join('search path: %s' % path for path in default_exe_list)))


def GetSexprWasmExecutable(override=None):
  return FindExeWithFallback('sexpr-wasm', [DEFAULT_SEXPR_WASM_EXE], override)


def GetWasmWastExecutable(override=None):
  return FindExeWithFallback('wasm-wast', [DEFAULT_WASM_WAST_EXE], override)


def GetWasmInterpExecutable(override=None):
  return FindExeWithFallback('wasm-interp', [DEFAULT_WASM_INTERP_EXE], override)


def GetJSExecutable(override=None):
  return FindExeWithFallback('js',
      [BUILT_D8_EXE, BUILT_SM_EXE, DOWNLOAD_D8_EXE, DOWNLOAD_SM_EXE], override)