summaryrefslogtreecommitdiff
path: root/test/find_exe.py
blob: 3ee34c8f9a320d94246729ff3d9db8ed0b52441f (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
78
79
80
81
82
83
84
85
86
#!/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)
EXECUTABLES = [
    'wast2wasm', 'wasm2wast', 'wasmdump', 'wasm-interp', 'wasmopcodecnt',
    'wast-desugar', 'wasm-link'
]


def GetDefaultExe(basename):
  result = os.path.join(REPO_ROOT_DIR, 'out', basename)
  if IS_WINDOWS:
    result += '.exe'
  return result


def FindExeWithFallback(name, default_exe_list, override_exe=None):
  result = override_exe
  if result is not None:
    if IS_WINDOWS and os.path.splitext(result)[1] != '.exe':
      result += '.exe'
    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 FindExecutable(basename, override=None):
  return FindExeWithFallback(basename, [GetDefaultExe(basename)], override)


def GetWast2WasmExecutable(override=None):
  return FindExecutable('wast2wasm', override)


def GetWasm2WastExecutable(override=None):
  return FindExecutable('wasm2wast', override)


def GetWasmdumpExecutable(override=None):
  return FindExecutable('wasmdump', override)


def GetWasmlinkExecutable(override=None):
  return FindExecutable('wasm-link', override)


def GetWasmInterpExecutable(override=None):
  return FindExecutable('wasm-interp', override)


def GetWasmOpcodeCntExecutable(override=None):
  return FindExecutable('wasmopcodecnt', override)


def GetWastDesugarExecutable(override=None):
  return FindExecutable('wast-desugar', override)