GenApi  3.5.1
GCLinkage.h
1 //-----------------------------------------------------------------------------
2 // (c) 2007 by Basler Vision Technologies
3 // Author: Fritz Dierks
4 //
5 // License: This file is published under the license of the EMVA GenICam Standard Group.
6 // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
7 // If for some reason you are missing this file please contact the EMVA or visit the website
8 // (http://www.genicam.org) for a full copy.
9 //
10 // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
11 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
12 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
13 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
14 // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
15 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
20 // POSSIBILITY OF SUCH DAMAGE.
21 //
22 //-----------------------------------------------------------------------------
28 #ifndef LINKAGE_H
29 #define LINKAGE_H
30 
31 #include <GenICamVersion.h>
32 
33 #if defined (_MSC_VER)
34 
35 # if defined (_WIN32) && defined (_MT )
36 # if defined(GENICAM_USER_ALWAYS_LINK_RELEASE)
37 // for the central installation always the Release version is used
38 # define CONFIGURATION "MD"
39 # else
40 # if defined(_DEBUG) || defined(DEBUG)
41 # define CONFIGURATION "MDd"
42 # else
43 # define CONFIGURATION "MD"
44 # endif
45 # endif // defined(GENICAM_USER_ALWAYS_LINK_RELEASE)
46 # else
47 # error Invalid configuration
48 # endif
49 
50 # if defined(COMPILER) // COMPILER may be force set from outside
51 # undef GENICAM_COMPILER_STR
52 # define GENICAM_COMPILER_STR COMPILER
53 # endif
54 
55 // _MSC_VER==1400 : VC80 : Visual C++ 2005
56 // _MSC_VER==1500 : VC90 : Visual C++ 2008
57 // _MSC_VER==1600 : VC100 : Visual C++ 2010
58 // _MSC_VER==1700 : VC110 : Visual C++ 2012
59 // _MSC_VER==1800 : VC120 : Visual C++ 2013
60 // _MSC_VER==1900 : VC140 : Visual C++ 2015
61 // _MSC_VER==1915 : VC141 : Visual C++ 2017
62 // _MSC_VER==1920 : VC142 : Visual C++ 2019
63 // _MSC_VER==1930 : VC143 : Visual C++ 2022
64 // _MSC_VER==1920 : VC145 : Visual C++ 2026
65 # if !( _MSC_VER==1400 || _MSC_VER==1500 || _MSC_VER==1600 || _MSC_VER==1700 || _MSC_VER==1800 || (_MSC_VER>=1900 && _MSC_VER<=1916) || (_MSC_VER>=1920 && _MSC_VER<=1929) || (_MSC_VER>=1930 && _MSC_VER<=1944) || (_MSC_VER>=1950 && _MSC_VER<=1951)) && ! defined(GENICAM_USER_ACCEPTS_ANY_COMPILER)
66 # define COMPILER_VERSION_2( s ) #s
67 # define COMPILER_VERSION_STRING(version) COMPILER_VERSION_2( version )
68 # pragma message( "Notice: Using GenICam with untested compiler, version " COMPILER_VERSION_STRING(_MSC_VER) " detected!" )
69 # pragma message( "Following versions were tested: 1400, 1500, 1600, 1700, 1800, 1900-1916, 1920-1929, 1930-1944, 1950-1951." )
70 # undef COMPILER_VERSION_2
71 # undef COMPILER_VERSION_STRING
72 # endif
73 
74 # if defined(GENICAM_COMPANY_SUFFIX)
75 # define GENICAM_SUFFIX( CONFIGURATION, GENICAM_COMPILER_STR, VERSION_MAJOR, VERSION_MINOR, EXTENSION ) \
76  "_" CONFIGURATION "_" GENICAM_COMPILER_STR "_v" VERSION_MAJOR "_" VERSION_MINOR "_" TOSTRING(GENICAM_COMPANY_SUFFIX) "." EXTENSION
77 # else
78 # define GENICAM_SUFFIX( CONFIGURATION, GENICAM_COMPILER_STR, VERSION_MAJOR, VERSION_MINOR, EXTENSION ) \
79  "_" CONFIGURATION "_" GENICAM_COMPILER_STR "_v" VERSION_MAJOR "_" VERSION_MINOR "." EXTENSION
80 # endif
81  // _MDd_VC80_v3_0_Company
82  // _MD_VC80_v3_0_Company
83  // _MDd_VC80_v3_0
84  // _MD_VC80_v3_0
85 
86 # define LIB_SUFFIX \
87  GENICAM_SUFFIX( CONFIGURATION, GENICAM_COMPILER_STR, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "lib" )
88 #if defined(UNDER_RTSS)
89 # define DLL_SUFFIX \
90  GENICAM_SUFFIX( CONFIGURATION, GENICAM_COMPILER_STR, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "rtdll" )
91 #else
92 # define DLL_SUFFIX \
93  GENICAM_SUFFIX( CONFIGURATION, GENICAM_COMPILER_STR, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "dll" )
94 #endif // defined(UNDER_RTSS)
95 # define EXE_SUFFIX \
96  GENICAM_SUFFIX( CONFIGURATION, GENICAM_COMPILER_STR, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "exe" )
97 
98 # define DLL_PREFIX ""
99 
100 #elif defined (__GNUC__) && (defined (__linux__) || defined(__APPLE__) || defined(VXWORKS))
101 
102 # if defined(_DEBUG) || defined(DEBUG)
103 # define CONFIGURATION "_d"
104 # else
105 # define CONFIGURATION ""
106 # endif
107 
108 # if defined(GENICAM_COMPANY_SUFFIX)
109 # define GENICAM_SUFFIX( CONFIGURATION, VERSION_MAJOR, VERSION_MINOR, EXTENSION ) \
110  CONFIGURATION "_" GENICAM_COMPILER_STR "_v" VERSION_MAJOR "_" VERSION_MINOR "_" TOSTRING(GENICAM_COMPANY_SUFFIX) "." EXTENSION
111 # else
112 # define GENICAM_SUFFIX( CONFIGURATION, VERSION_MAJOR, VERSION_MINOR, EXTENSION ) \
113  CONFIGURATION "_" GENICAM_COMPILER_STR "_v" VERSION_MAJOR "_" VERSION_MINOR "." EXTENSION
114 # endif
115  // _d_gcc40_v3_0_Company
116  // _gcc40_v3_0_Company
117  // _d_gcc40_v3_0
118  // _gcc40_v3_0
119 
120 
121 # define LIB_SUFFIX \
122  GENICAM_SUFFIX( CONFIGURATION, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "a" )
123 
124 # if defined(__linux__)
125 # define DLL_SUFFIX \
126  GENICAM_SUFFIX( CONFIGURATION, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "so" )
127 # elif defined(VXWORKS)
128 # define DLL_SUFFIX \
129  GENICAM_SUFFIX( CONFIGURATION, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "out" )
130 # else
131 # define DLL_SUFFIX \
132  GENICAM_SUFFIX( CONFIGURATION, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "dylib" )
133 # endif
134 
135 # define EXE_SUFFIX \
136  GENICAM_SUFFIX( CONFIGURATION, GENICAM_VERSION_MAJOR_STR, GENICAM_VERSION_MINOR_STR, "" )
137 
138 # if defined(VXWORKS)
139 # define DLL_PREFIX ""
140 # else
141 # define DLL_PREFIX "lib"
142 # endif
143 
144 #else
145 
146 # error Unknown shared library support
147 
148 #endif
149 
150 #define LIB_NAME( MODULE ) \
151  MODULE LIB_SUFFIX
152 
153 #define DLL_NAME( MODULE ) \
154  DLL_PREFIX MODULE DLL_SUFFIX
155 
156 #define EXE_NAME( MODULE ) \
157  MODULE EXE_SUFFIX
158 
159 
160 // The CameraLink standard defines the names for certain DLLs we build that do not match the GenICam naming scheme
161 #if defined(_DEBUG) || defined(DEBUG)
162 # define CAMERALINK_CONFIGURATION "d"
163 #else
164 # define CAMERALINK_CONFIGURATION ""
165 #endif
166 #
167 #if defined(_MSC_VER)
168 # if defined(UNDER_RTSS)
169 # define CAMERALINK_DLL_SUFFIX ".rtdll"
170 # else
171 # define CAMERALINK_DLL_SUFFIX ".dll"
172 # endif
173 #elif defined (__GNUC__) && (defined (__linux__) || defined(__APPLE__) || defined(VXWORKS))
174 # if defined(__linux__)
175 # define CAMERALINK_DLL_SUFFIX ".so"
176 # elif defined(VXWORKS)
177 # define CAMERALINK_DLL_SUFFIX ".out"
178 # else
179 # define CAMERALINK_DLL_SUFFIX ".dylib"
180 # endif
181 #endif
182 #
183 #define CAMERALINK_DLL_NAME( MODULE) \
184  MODULE CAMERALINK_CONFIGURATION CAMERALINK_DLL_SUFFIX
185 
186 #endif // LINKAGE_H