1 /*!
2  * Copyright (c) 2018 by Contributors
3  * \file build_config_default.h
4  * \brief Default detection logic for fopen64 and other symbols.
5  *        May be overriden by CMake
6  * \author KOLANICH
7  */
8 #ifndef DMLC_BUILD_CONFIG_DEFAULT_H_
9 #define DMLC_BUILD_CONFIG_DEFAULT_H_
10 
11 /* default logic for fopen64 */
12 #if DMLC_USE_FOPEN64 && \
13   (!defined(__GNUC__) || (defined __ANDROID__) || (defined __FreeBSD__) || defined(__DragonFly__) \
14   || (defined __APPLE__) || ((defined __MINGW32__) && !(defined __MINGW64__)) \
15   || (defined __CYGWIN__) )
16   #define DMLC_EMIT_FOPEN64_REDEFINE_WARNING
17   #define fopen64 std::fopen
18 #endif
19 
20 /* default logic for stack trace */
21 #if (defined(__GNUC__) && !defined(__MINGW32__)\
22      && !defined(__sun) && !defined(__SVR4)\
23      && !(defined __MINGW64__) && !(defined __ANDROID__))\
24      && !defined(__CYGWIN__) && !defined(__EMSCRIPTEN__)\
25      && !defined(__RISCV__) && !defined(__hexagon__)
26   #ifndef DMLC_LOG_STACK_TRACE
27   #define DMLC_LOG_STACK_TRACE 1
28   #endif
29   #ifndef DMLC_LOG_STACK_TRACE_SIZE
30   #define DMLC_LOG_STACK_TRACE_SIZE 10
31   #endif
32   #define DMLC_EXECINFO_H <execinfo.h>
33 #endif
34 
35 /* default logic for detecting existence of nanosleep() */
36 #if !(defined _WIN32) || (defined __CYGWIN__)
37   #define DMLC_NANOSLEEP_PRESENT
38 #endif
39 
40 #endif  // DMLC_BUILD_CONFIG_DEFAULT_H_
41