diff options
Diffstat (limited to 'src/support')
-rw-r--r-- | src/support/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/support/path.cpp | 65 | ||||
-rw-r--r-- | src/support/path.h | 37 |
3 files changed, 79 insertions, 24 deletions
diff --git a/src/support/CMakeLists.txt b/src/support/CMakeLists.txt index b12ef6edd..b3373d076 100644 --- a/src/support/CMakeLists.txt +++ b/src/support/CMakeLists.txt @@ -4,6 +4,7 @@ SET(support_SOURCES colors.cpp command-line.cpp file.cpp + path.cpp safe_integer.cpp threads.cpp ) diff --git a/src/support/path.cpp b/src/support/path.cpp new file mode 100644 index 000000000..322099a95 --- /dev/null +++ b/src/support/path.cpp @@ -0,0 +1,65 @@ +/* + * Copyright 2018 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. + */ + +// +// Command line helpers. +// + +#include "support/path.h" + +namespace wasm { + +namespace Path { + +std::string getPathSeparator() { + // TODO: use c++17's path separator + // http://en.cppreference.com/w/cpp/experimental/fs/path +#if defined(WIN32) || defined(_WIN32) + return "\\"; +#else + return "/"; +#endif +} + +std::string getBinaryenRoot() { + auto* envVar = getenv("BINARYEN_ROOT"); + if (envVar) return envVar; + return "."; +} + +static std::string binDir; + +std::string getBinaryenBinDir() { + if (binDir.empty()) { + return getBinaryenRoot() + getPathSeparator() + "bin" + getPathSeparator(); + } else { + return binDir; + } +} + +void setBinaryenBinDir(std::string dir) { + binDir = dir; +} + +// Gets the path to a binaryen binary tool, like wasm-opt +std::string getBinaryenBinaryTool(std::string name) { + return getBinaryenBinDir() + name; +} + +} // namespace Path + +} // namespace wasm + diff --git a/src/support/path.h b/src/support/path.h index 5852fcc4d..505ba0d88 100644 --- a/src/support/path.h +++ b/src/support/path.h @@ -28,30 +28,19 @@ namespace wasm { namespace Path { -inline std::string getPathSeparator() { - // TODO: use c++17's path separator - // http://en.cppreference.com/w/cpp/experimental/fs/path -#if defined(WIN32) || defined(_WIN32) - return "\\"; -#else - return "/"; -#endif -} - -inline std::string getBinaryenRoot() { - auto* envVar = getenv("BINARYEN_ROOT"); - if (envVar) return envVar; - return "."; -} - -inline std::string getBinaryenBinDir() { - return getBinaryenRoot() + getPathSeparator() + "bin" + getPathSeparator(); -} - -// Gets the path to a binaryen binary tool, like wasm-opt -inline std::string getBinaryenBinaryTool(std::string name) { - return getBinaryenBinDir() + name; -} +std::string getPathSeparator(); + +// Get the binaryen root dor. +std::string getBinaryenRoot(); + +// Get the binaryen bin dir. +std::string getBinaryenBinDir(); + +// Set the binaryen bin dir (allows tools to change it based on user input). +void setBinaryenBinDir(std::string dir); + +// Gets the path to a binaryen binary tool, like wasm-opt. +std::string getBinaryenBinaryTool(std::string name); } // namespace Path |