| /* |
| * Copyright 2019 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. |
| */ |
| |
| // Implements BYN_DEBUG macro similar to llvm's include/llvm/Support/Debug.h, |
| // which can include any code, and in addition and printf-file BYN_TRACE. |
| // |
| // To use these macros you must define DEBUG_TYPE to a C string within your |
| // source code which then acts as the name of a channel which can be |
| // individually enabled via --debug=<chan>. Specifying --debug without any |
| // argument enables all channels. |
| |
| #ifndef wasm_support_debug_h |
| #define wasm_support_debug_h |
| |
| #ifndef NDEBUG |
| |
| namespace wasm { |
| bool isDebugEnabled(const char* type); |
| void setDebugEnabled(const char* types); |
| } // namespace wasm |
| |
| #define BYN_DEBUG_WITH_TYPE(TYPE, X) \ |
| do { \ |
| if (::wasm::isDebugEnabled(TYPE)) { \ |
| X; \ |
| } \ |
| } while (false) |
| |
| #define BYN_TRACE_WITH_TYPE(TYPE, MSG) \ |
| BYN_DEBUG_WITH_TYPE(TYPE, std::cerr << MSG); |
| |
| #else |
| |
| #define BYN_DEBUG_WITH_TYPE(...) \ |
| do { \ |
| } while (false) |
| #define BYN_TRACE_WITH_TYPE(...) \ |
| do { \ |
| } while (false) |
| #define isDebugEnabled(type) (false) |
| #define setDebugEnabled(types) |
| |
| #endif |
| |
| #define BYN_DEBUG(X) BYN_DEBUG_WITH_TYPE(DEBUG_TYPE, X) |
| #define BYN_TRACE(MSG) BYN_TRACE_WITH_TYPE(DEBUG_TYPE, MSG) |
| |
| #endif // wasm_support_debug_h |