1 /*
2     MIDI Sequencer C++ library
3     Copyright (C) 2006-2021, Pedro Lopez-Cabanillas <plcl@users.sf.net>
4 
5     This library 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 3 of the License, or
8     (at your option) any later version.
9 
10     This library 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     You should have received a copy of the GNU General Public License
16     along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef DRUMSTICK_MACROS_H
20 #define DRUMSTICK_MACROS_H
21 
22 #include <qglobal.h>
23 
24 /**
25  * @file macros.h
26  * Drumstick visibility macros
27  */
28 
29 #if !defined(DRUMSTICK_EXPORT)
30 #  if defined(DRUMSTICK_STATIC)
31 #    define DRUMSTICK_EXPORT
32 #  else
33 #    if defined(drumstick_alsa_EXPORTS) || defined(drumstick_file_EXPORTS) || defined(drumstick_rt_EXPORTS) || defined(drumstick_widgets_EXPORTS)
34 #      define DRUMSTICK_EXPORT Q_DECL_EXPORT
35 #    else
36 #      if defined(Q_OS_WIN)
37 #        define DRUMSTICK_EXPORT Q_DECL_IMPORT
38 #      else
39 #        define DRUMSTICK_EXPORT Q_DECL_EXPORT
40 #      endif
41 #    endif
42 #  endif
43 #endif
44 
45 #if defined(_MSC_VER)
46     #define DISABLE_WARNING_PUSH           __pragma(warning( push ))
47     #define DISABLE_WARNING_POP            __pragma(warning( pop ))
48     #define DISABLE_WARNING(warningNumber) __pragma(warning( disable : warningNumber ))
49 
50     #define DISABLE_WARNING_UNREFERENCED_FORMAL_PARAMETER    DISABLE_WARNING(4100)
51     #define DISABLE_WARNING_UNREFERENCED_FUNCTION            DISABLE_WARNING(4505)
52     #define DISABLE_WARNING_DEPRECATED_DECLARATIONS          DISABLE_WARNING(4996)
53 
54 #elif defined(__GNUC__) || defined(__clang__)
55     #define DO_PRAGMA(X) _Pragma(#X)
56     #define DISABLE_WARNING_PUSH           DO_PRAGMA(GCC diagnostic push)
57     #define DISABLE_WARNING_POP            DO_PRAGMA(GCC diagnostic pop)
58     #define DISABLE_WARNING(warningName)   DO_PRAGMA(GCC diagnostic ignored #warningName)
59 
60     #define DISABLE_WARNING_UNREFERENCED_FORMAL_PARAMETER    DISABLE_WARNING(-Wunused-parameter)
61     #define DISABLE_WARNING_UNREFERENCED_FUNCTION            DISABLE_WARNING(-Wunused-function)
62     #define DISABLE_WARNING_DEPRECATED_DECLARATIONS          DISABLE_WARNING(-Wdeprecated-declarations)
63 
64 #else
65     #define DISABLE_WARNING_PUSH
66     #define DISABLE_WARNING_POP
67     #define DISABLE_WARNING_UNREFERENCED_FORMAL_PARAMETER
68     #define DISABLE_WARNING_UNREFERENCED_FUNCTION
69     #define DISABLE_WARNING_DEPRECATED_DECLARATIONS
70 #endif
71 
72 #endif /* DRUMSTICK_MACROS_H */
73