7e7def05d47023b63e1795b99fcb2912ab1c885a
[shibboleth/sp.git] / shibsp / base.h
1 /*
2  *  Copyright 2001-2009 Internet2
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * @file shibsp/base.h
19  *
20  * Base header file definitions
21  * Must be included prior to including any other header
22  */
23
24 #ifndef __shibsp_base_h__
25 #define __shibsp_base_h__
26
27 #ifdef SHIBSP_LITE
28 # define XMLTOOLING_LITE
29 # include <xmltooling/base.h>
30 #else
31 # include <saml/base.h>
32 #endif
33
34 // Windows and GCC4 Symbol Visibility Macros
35 #ifdef WIN32
36   #define SHIBSP_IMPORT __declspec(dllimport)
37   #define SHIBSP_EXPORT __declspec(dllexport)
38   #define SHIBSP_DLLLOCAL
39   #define SHIBSP_DLLPUBLIC
40 #else
41   #define SHIBSP_IMPORT
42   #ifdef GCC_HASCLASSVISIBILITY
43     #define SHIBSP_EXPORT __attribute__ ((visibility("default")))
44     #define SHIBSP_DLLLOCAL __attribute__ ((visibility("hidden")))
45     #define SHIBSP_DLLPUBLIC __attribute__ ((visibility("default")))
46   #else
47     #define SHIBSP_EXPORT
48     #define SHIBSP_DLLLOCAL
49     #define SHIBSP_DLLPUBLIC
50   #endif
51 #endif
52
53 // Define SHIBSP_API for DLL builds
54 #ifdef SHIBSP_EXPORTS
55   #define SHIBSP_API SHIBSP_EXPORT
56 #else
57   #define SHIBSP_API SHIBSP_IMPORT
58 #endif
59
60 // Throwable classes must always be visible on GCC in all binaries
61 #ifdef WIN32
62   #define SHIBSP_EXCEPTIONAPI(api) api
63 #elif defined(GCC_HASCLASSVISIBILITY)
64   #define SHIBSP_EXCEPTIONAPI(api) SHIBSP_EXPORT
65 #else
66   #define SHIBSP_EXCEPTIONAPI(api)
67 #endif
68
69 #ifdef WIN32
70
71 /** Default catalog path on Windows. */
72 # define SHIBSP_SCHEMAS "c:/opt/shibboleth-sp/share/xml/xmltooling/catalog.xml;c:/opt/shibboleth-sp/share/xml/opensaml/saml20-catalog.xml;c:/opt/shibboleth-sp/share/xml/opensaml/saml11-catalog.xml;c:/opt/shibboleth-sp/share/xml/shibboleth/catalog.xml"
73
74 /** Default name of configuration file on Windows. */
75 # define SHIBSP_CONFIG "shibboleth2.xml"
76
77 /**
78  * Controls default logging level of console tools and other situations
79  * where fully-configured logging isn't used.
80  */
81 #define SHIBSP_LOGGING "console.logger"
82
83 /** Default prefix for installation (used to resolve relative paths). */
84 #define SHIBSP_PREFIX  "c:/opt/shibboleth-sp"
85
86 /** Library directory for installation (used to resolve relative paths). */
87 #define SHIBSP_LIBDIR  "lib"
88
89 /** Log directory for installation (used to resolve relative paths). */
90 #define SHIBSP_LOGDIR  "var/log"
91
92 /** Configuration directory for installation (used to resolve relative paths). */
93 #define SHIBSP_CFGDIR  "etc"
94
95 /** Runtime state directory for installation (used to resolve relative paths). */
96 #define SHIBSP_RUNDIR  "var/run"
97
98 /** XML directory for installation (used to resolve relative paths). */
99 #define SHIBSP_XMLDIR  "share/xml"
100
101 #else
102 # include <shibsp/paths.h>
103 #endif
104
105 /** Logging category for Service Provider functions. */
106 #define SHIBSP_LOGCAT "Shibboleth"
107
108 /** Logging category for Service Provider auditing. */
109 #define SHIBSP_TX_LOGCAT "Shibboleth-TRANSACTION"
110
111 #endif /* __shibsp_base_h__ */