Collection of tools useful for audio production
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
2.7KB

  1. /*
  2. * Carla common defines
  3. * Copyright (C) 2011-2012 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 2 of the License, or
  8. * any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the COPYING file
  16. */
  17. #ifndef CARLA_DEFINES_HPP
  18. #define CARLA_DEFINES_HPP
  19. #ifdef __WINE__
  20. # define Q_CORE_EXPORT
  21. # define Q_GUI_EXPORT
  22. # define QT_NO_STL
  23. #endif
  24. #include <QtCore/Qt>
  25. // TESTING - remove later (QtCreator doesn't fully support this yet)
  26. #ifdef QTCREATOR_TEST
  27. # undef Q_COMPILER_INITIALIZER_LISTS
  28. #endif
  29. // If the compiler can't do C++11 lambdas, it most likely doesn't know about nullptr either
  30. #ifndef Q_COMPILER_LAMBDA
  31. # define nullptr (0)
  32. #endif
  33. // Common includes and macros
  34. #ifdef Q_OS_WIN
  35. # include <windows.h>
  36. #else
  37. # include <unistd.h>
  38. # ifndef __cdecl
  39. # define __cdecl
  40. # endif
  41. #endif
  42. // Define various string format types, needed for qDebug/Warning/Critical sections
  43. #if defined(Q_OS_WIN64) && ! defined(__WINE__)
  44. # define P_INT64 "%I64i"
  45. # define P_INTPTR "%I64i"
  46. # define P_UINTPTR "%I64x"
  47. # define P_SIZE "%I64u"
  48. #elif __WORDSIZE == 64
  49. # define P_INT64 "%li"
  50. # define P_INTPTR "%li"
  51. # define P_UINTPTR "%lx"
  52. # define P_SIZE "%lu"
  53. #else
  54. # define P_INT64 "%lli"
  55. # define P_INTPTR "%i"
  56. # define P_UINTPTR "%x"
  57. # define P_SIZE "%u"
  58. #endif
  59. // Define BINARY_NATIVE
  60. #if defined(Q_OS_HAIKU) || defined(Q_OS_UNIX)
  61. # ifdef __LP64__
  62. # define BINARY_NATIVE BINARY_POSIX64
  63. # else
  64. # define BINARY_NATIVE BINARY_POSIX32
  65. # endif
  66. #elif defined(Q_OS_WIN)
  67. # ifdef Q_OS_WIN64
  68. # define BINARY_NATIVE BINARY_WIN64
  69. # else
  70. # define BINARY_NATIVE BINARY_WIN32
  71. # endif
  72. #else
  73. # warning Unknown binary type
  74. # define BINARY_NATIVE BINARY_OTHER
  75. #endif
  76. // Define CARLA_ASSERT*
  77. #ifdef NDEBUG
  78. # define CARLA_ASSERT(cond) ((!(cond)) ? carla_assert(#cond, __FILE__, __LINE__) : qt_noop())
  79. # define CARLA_ASSERT_INT(cond, value) ((!(cond)) ? carla_assert_int(#cond, __FILE__, __LINE__, value) : qt_noop())
  80. #else
  81. # define CARLA_ASSERT Q_ASSERT
  82. # define CARLA_ASSERT_INT(cond, value) Q_ASSERT(cond)
  83. #endif
  84. // Define CARLA_EXPORT
  85. #ifdef BUILD_BRIDGE
  86. # define CARLA_EXPORT extern "C"
  87. #else
  88. # if defined(Q_OS_WIN) && ! defined(__WINE__)
  89. # define CARLA_EXPORT extern "C" __declspec (dllexport)
  90. # else
  91. # define CARLA_EXPORT extern "C" __attribute__ ((visibility("default")))
  92. # endif
  93. #endif
  94. #endif // CARLA_DEFINES_HPP