1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CRAZY_LINKER_DEBUG_H
6#define CRAZY_LINKER_DEBUG_H
7
8// Set CRAZY_DEBUG on the command-line to 1 to enable debugging support.
9// This really means adding traces that will be sent to both stderr
10// and the logcat during execution.
11#ifndef CRAZY_DEBUG
12#define CRAZY_DEBUG 0
13#endif
14
15namespace crazy {
16
17#if CRAZY_DEBUG
18
19void Log(const char* fmt, ...);
20void LogErrno(const char* fmt, ...);
21
22#define LOG(...) ::crazy::Log(__VA_ARGS__)
23#define LOG_ERRNO(...) ::crazy::LogErrno(__VA_ARGS__)
24
25#else
26
27#define LOG(...) ((void)0)
28#define LOG_ERRNO(...) ((void)0)
29
30#endif
31
32// Conditional logging.
33#define LOG_IF(cond, ...) \
34  do {                    \
35    if ((cond))           \
36      LOG(__VA_ARGS__);   \
37  } while (0)
38
39#define LOG_ERRNO_IF(cond, ...) \
40  do {                          \
41    if ((cond))                 \
42      LOG_ERRNO(__VA_ARGS__);   \
43  } while (0)
44
45}  // namespace crazy
46
47#endif  // CRAZY_LINKER_DEBUG_H
48