Home | History | Annotate | Download | only in src
      1 // Copyright (c) 2013 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 
     15 namespace crazy {
     16 
     17 #if CRAZY_DEBUG
     18 
     19 void Log(const char* fmt, ...);
     20 void 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