GCLinkage.h 6.9 KB

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