libsmbios_c library
auto_link.h
Go to the documentation of this file.
1 /* vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=c:cindent:
2  */
3 /*
4  * Copyright (C) 2005 Dell Inc.
5  * by Michael Brown <Michael_E_Brown@dell.com>
6  * Licensed under the Open Software License version 2.1
7  *
8  * Alternatively, you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published
10  * by the Free Software Foundation; either version 2 of the License,
11  * or (at your option) any later version.
12 
13  * This program is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  * See the GNU General Public License for more details.
17  */
18 
19 /* safe to include in C headers */
20 
21 #ifndef LIBSMBIOS_C_AUTO_LINK_H_INCLUDED
22 #define LIBSMBIOS_C_AUTO_LINK_H_INCLUDED
23 
24 #ifdef __cplusplus
25 # ifndef LIBSMBIOS_C_CONFIG_H
27 # endif
28 #elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
29 /*
30  * C language compatability (no, honestly)
31  */
32 # define LIBSMBIOS_C_MSVC _MSC_VER
33 # define LIBSMBIOS_C_STRINGIZE(X) LIBSMBIOS_C_DO_STRINGIZE(X)
34 # define LIBSMBIOS_C_DO_STRINGIZE(X) #X
35 #endif
36 
37 #if (defined(LIBSMBIOS_C_PLATFORM_WIN32) || defined(LIBSMBIOS_C_PLATFORM_WIN64)) && defined(_MSC_VER)
38 // The rest of the code in this file is used to automatically select which
39 // version libsmbios library to link to.
40 
41 // libsmbios-vc6 // single-thread (DLL) (non-debug) XXX
42 // libsmbios-vc6-mt // multi-thread (DLL) (non-debug) mt-dll
43 // libsmbios-vc6-gd // single-thread (DLL) (debug) XXX
44 // libsmbios-vc6-mt-gd // multi-thread (DLL) (debug) d-mt-dll
45 // libsmbios-vc6-s // single-thread (non-DLL) (non-debug) st
46 // libsmbios-vc6-mt-s // multi-thread (non-DLL) (non-debug) mt
47 // libsmbios-vc6-sgd // single-thread (non-DLL) (debug) d-st
48 // libsmbios-vc6-mt-sgd // multi-thread (non-DLL) (debug) d-mt
49 
50 
51 
52 #if !defined(LIBSMBIOS_C_ALL_NO_LIB) && !defined(LIBSMBIOS_SOURCE)
53 
54 
55 #if defined(LIBSMBIOS_C_ALL_DYN_LINK)
56 # define LIBSMBIOS_C_DYN_LINK
57 #endif
58 
59 // ==============================
60 //
61 // select toolset if not defined already:
62 //
63 #ifndef LIBSMBIOS_C_LIB_TOOLSET
64 #if defined(LIBSMBIOS_C_MSVC) && (LIBSMBIOS_C_MSVC == 1200)
65 
66  // vc6:
67 # define LIBSMBIOS_C_LIB_TOOLSET "vc6"
68 
69 #elif defined(LIBSMBIOS_C_MSVC) && (LIBSMBIOS_C_MSVC == 1300)
70 
71  // vc7:
72 # define LIBSMBIOS_C_LIB_TOOLSET "vc7"
73 
74 #elif defined(LIBSMBIOS_C_MSVC) && (LIBSMBIOS_C_MSVC == 1310)
75 
76  // vc71:
77 # define LIBSMBIOS_C_LIB_TOOLSET "vc71"
78 
79 #elif defined(LIBSMBIOS_C_MSVC) && (LIBSMBIOS_C_MSVC >= 1400)
80 
81  // vc80:
82 # define LIBSMBIOS_C_LIB_TOOLSET "vc80"
83 #endif
84 #endif
85 
86 
87 // ==============================
88 //
89 // select linkage opt:
90 //
91 #if (defined(_DLL) || defined(_RTLDLL)) && defined(LIBSMBIOS_C_DYN_LINK)
92 # define LIBSMBIOS_C_LIB_PREFIX
93 #elif defined(LIBSMBIOS_C_DYN_LINK)
94 # error "Mixing a dll boost library with a static runtime is a really bad idea..."
95 #else
96 # define LIBSMBIOS_C_LIB_PREFIX "lib"
97 #endif
98 
99 
100 // ==============================
101 //
102 // select thread opt:
103 //
104 #if defined(_MT) || defined(__MT__)
105 # define LIBSMBIOS_C_LIB_THREAD_OPT "-mt"
106 #else
107 # define LIBSMBIOS_C_LIB_THREAD_OPT
108 #endif
109 
110 // ==============================
111 //
112 // select runtime opt:
113 //
114 #if defined(_MSC_VER) || defined(__MWERKS__)
115 # ifdef _DLL
116 # if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
117 
118 # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
119 # define LIBSMBIOS_C_LIB_RT_OPT "-gdp"
120 # elif defined(_DEBUG)
121 # define LIBSMBIOS_C_LIB_RT_OPT "-gdp"
122 # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
123 # error "Build options aren't compatible with pre-built libraries"
124 # else
125 # define LIBSMBIOS_C_LIB_RT_OPT "-p"
126 # endif
127 
128 # elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
129 
130 # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
131 # define LIBSMBIOS_C_LIB_RT_OPT "-gdpn"
132 # elif defined(_DEBUG)
133 # define LIBSMBIOS_C_LIB_RT_OPT "-gdpn"
134 # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
135 # error "Build options aren't compatible with pre-built libraries"
136 # else
137 # define LIBSMBIOS_C_LIB_RT_OPT "-pn"
138 # endif
139 
140 # else
141 
142 # if defined(_DEBUG)
143 # define LIBSMBIOS_C_LIB_RT_OPT "-gd"
144 # else
145 # define LIBSMBIOS_C_LIB_RT_OPT
146 # endif
147 
148 # endif
149 # else
150 
151 # if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
152 
153 # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
154 # define LIBSMBIOS_C_LIB_RT_OPT "-sgdp"
155 # elif defined(_DEBUG)
156 # define LIBSMBIOS_C_LIB_RT_OPT "-sgdp"
157 # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
158 # error "Build options aren't compatible with pre-built libraries"
159 # else
160 # define LIBSMBIOS_C_LIB_RT_OPT "-sp"
161 # endif
162 
163 # elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
164 
165 # if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
166 # define LIBSMBIOS_C_LIB_RT_OPT "-sgdpn"
167 # elif defined(_DEBUG)
168 # define LIBSMBIOS_C_LIB_RT_OPT "-sgdpn"
169 # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
170 # error "Build options aren't compatible with pre-built libraries"
171 # else
172 # define LIBSMBIOS_C_LIB_RT_OPT "-spn"
173 # endif
174 
175 # else
176 
177 # if defined(_DEBUG)
178 # define LIBSMBIOS_C_LIB_RT_OPT "-sgd"
179 # else
180 # define LIBSMBIOS_C_LIB_RT_OPT "-s"
181 # endif
182 
183 # endif
184 
185 # endif
186 #endif
187 
188 #define LIBSMBIOS_C_LIB_NAME smbios_c
189 
190 #ifndef LIBSMBIOS_C_AUTO_LINK_NOMANGLE
191 # pragma comment(lib, LIBSMBIOS_C_LIB_PREFIX LIBSMBIOS_C_STRINGIZE(LIBSMBIOS_C_LIB_NAME) "-" LIBSMBIOS_C_LIB_TOOLSET LIBSMBIOS_C_LIB_THREAD_OPT LIBSMBIOS_C_LIB_RT_OPT ".lib" )
192 # ifdef LIBSMBIOS_C_LIB_DIAGNOSTIC
193 # pragma message ("Automatically Linking to lib file: " LIBSMBIOS_C_LIB_PREFIX LIBSMBIOS_C_STRINGIZE(LIBSMBIOS_C_LIB_NAME) "-" LIBSMBIOS_C_LIB_TOOLSET LIBSMBIOS_C_LIB_THREAD_OPT LIBSMBIOS_C_LIB_RT_OPT ".lib")
194 # endif
195 #else
196 # pragma comment(lib, LIBSMBIOS_C_STRINGIZE(LIBSMBIOS_C_LIB_NAME) ".lib" )
197 # ifdef LIBSMBIOS_C_LIB_DIAGNOSTIC
198 # pragma message ("Automatically Linking to lib file: " LIBSMBIOS_C_STRINGIZE(LIBSMBIOS_C_LIB_NAME) ".lib")
199 # endif
200 #endif
201 
202 // //#include <config/auto_link.h>
203 #endif /* !LIBSMBIOS_C_ALL_NO_LIB && ! LIBSMBIOS_C_SOURCE */
204 #endif /* LIBSMBIOS_C_PLATFORM_WIN32 */
205 
206 #ifdef LIBSMBIOS_C_LIB_PREFIX
207 # undef LIBSMBIOS_C_LIB_PREFIX
208 #endif
209 #if defined(LIBSMBIOS_C_LIB_NAME)
210 # undef LIBSMBIOS_C_LIB_NAME
211 #endif
212 #if defined(LIBSMBIOS_C_LIB_TOOLSET)
213 # undef LIBSMBIOS_C_LIB_TOOLSET
214 #endif
215 #if defined(LIBSMBIOS_C_LIB_THREAD_OPT)
216 # undef LIBSMBIOS_C_LIB_THREAD_OPT
217 #endif
218 #if defined(LIBSMBIOS_C_LIB_RT_OPT)
219 # undef LIBSMBIOS_C_LIB_RT_OPT
220 #endif
221 #if defined(LIBSMBIOS_C_LIB_LINK_OPT)
222 # undef LIBSMBIOS_C_LIB_LINK_OPT
223 #endif
224 #if defined(LIBSMBIOS_C_LIB_DEBUG_OPT)
225 # undef LIBSMBIOS_C_LIB_DEBUG_OPT
226 #endif
227 #if defined(LIBSMBIOS_C_DYN_LINK)
228 # undef LIBSMBIOS_C_DYN_LINK
229 #endif
230 #if defined(LIBSMBIOS_C_AUTO_LINK_NOMANGLE)
231 # undef LIBSMBIOS_C_AUTO_LINK_NOMANGLE
232 #endif
233 
234 #endif /* AUTO_LINK_H */