Jack2
1.9.8
|
00001 /* 00002 Copyright (C) 2004-2008 Grame 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 00021 #ifndef __JackCompilerDeps_WIN32__ 00022 #define __JackCompilerDeps_WIN32__ 00023 00024 #if __GNUC__ 00025 #define PRE_PACKED_STRUCTURE 00026 00027 #ifndef POST_PACKED_STRUCTURE 00028 /* POST_PACKED_STRUCTURE needs to be a macro which 00029 expands into a compiler directive. The directive must 00030 tell the compiler to arrange the preceding structure 00031 declaration so that it is packed on byte-boundaries rather 00032 than use the natural alignment of the processor and/or 00033 compiler. 00034 */ 00035 #if (__GNUC__< 4) /* Does not seem to work with GCC 3.XX serie */ 00036 #define POST_PACKED_STRUCTURE 00037 #elif defined(JACK_32_64) 00038 #define POST_PACKED_STRUCTURE __attribute__((__packed__)) 00039 #else 00040 #define POST_PACKED_STRUCTURE 00041 #endif 00042 #endif 00043 #define MEM_ALIGN(x,y) x __attribute__((aligned(y))) 00044 #define LIB_EXPORT __declspec(dllexport) 00045 #ifdef SERVER_SIDE 00046 #define SERVER_EXPORT __declspec(dllexport) 00047 #else 00048 #define SERVER_EXPORT 00049 #endif 00050 #else 00051 #define MEM_ALIGN(x,y) x 00052 #define LIB_EXPORT __declspec(dllexport) 00053 #ifdef SERVER_SIDE 00054 #define SERVER_EXPORT __declspec(dllexport) 00055 #else 00056 #define SERVER_EXPORT 00057 #endif 00058 00059 #ifdef _MSC_VER 00060 #if defined(JACK_32_64) 00061 #define PRE_PACKED_STRUCTURE1 __pragma(pack(push,1)) 00062 #define PRE_PACKED_STRUCTURE PRE_PACKED_STRUCTURE1 00063 /* PRE_PACKED_STRUCTURE needs to be a macro which 00064 expands into a compiler directive. The directive must 00065 tell the compiler to arrange the following structure 00066 declaration so that it is packed on byte-boundaries rather 00067 than use the natural alignment of the processor and/or 00068 compiler. 00069 */ 00070 #define POST_PACKED_STRUCTURE ;__pragma(pack(pop)) 00071 /* and POST_PACKED_STRUCTURE needs to be a macro which 00072 restores the packing to its previous setting */ 00073 #else 00074 #define PRE_PACKED_STRUCTURE 00075 #define POST_PACKED_STRUCTURE 00076 #endif 00077 #else 00078 /* Other Windows compilers to go here */ 00079 #define PRE_PACKED_STRUCTURE 00080 #define POST_PACKED_STRUCTURE 00081 #endif 00082 #endif 00083 00084 #endif