Jack2 1.9.6

weakmacros.h

00001 /*
00002     Copyright (C) 2010 Paul Davis
00003     
00004     This program is free software; you can redistribute it and/or modify
00005     it under the terms of the GNU Lesser General Public License as published by
00006     the Free Software Foundation; either version 2.1 of the License, or
00007     (at your option) any later version.
00008     
00009     This program is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012     GNU Lesser General Public License for more details.
00013     
00014     You should have received a copy of the GNU Lesser General Public License
00015     along with this program; if not, write to the Free Software 
00016     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017 
00018 */
00019 
00020 #ifndef __weakmacros_h__
00021 #define __weakmacros_h__
00022 
00023 /*************************************************************
00024  * NOTE: JACK_WEAK_EXPORT ***MUST*** be used on every function
00025  * added to the JACK API after the 0.116.2 release.
00026  * 
00027  * Functions that predate this release are marked with 
00028  * JACK_WEAK_OPTIONAL_EXPORT which can be defined at compile
00029  * time in a variety of ways. The default definition is empty,
00030  * so that these symbols get normal linkage. If you wish to
00031  * use all JACK symbols with weak linkage, include 
00032  * <jack/weakjack.h> before jack.h.
00033  *************************************************************/
00034 
00035 #ifndef JACK_WEAK_EXPORT
00036 #ifdef __GNUC__
00037 /* JACK_WEAK_EXPORT needs to be a macro which
00038    expands into a compiler directive. If non-null, the directive 
00039    must tell the compiler to arrange for weak linkage of 
00040    the symbol it used with. For this to work full may
00041    require linker arguments in the client as well.
00042 */
00043 #define JACK_WEAK_EXPORT __attribute__((weak))
00044 #else
00045 /* Add other things here for non-gcc platforms */
00046 #define JACK_WEAK_EXPORT
00047 #endif
00048 #endif
00049 
00050 #ifndef JACK_OPTIONAL_WEAK_EXPORT
00051 #define JACK_OPTIONAL_WEAK_EXPORT
00052 #endif
00053 
00054 #ifndef JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT
00055 #ifdef __GNUC__
00056 #define JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT __attribute__((__deprecated__))
00057 #else
00058 /* Add other things here for non-gcc platforms */
00059 #define  JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT
00060 #endif /* __GNUC__ */
00061 #endif
00062 
00063 #endif /* __weakmacros_h__ */