File: ncbi_skew_guard.h

package info (click to toggle)
ncbi-tools6 6.1.20120620-8
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 241,628 kB
  • ctags: 101,236
  • sloc: ansic: 1,431,713; cpp: 6,248; pascal: 3,949; xml: 3,390; sh: 3,090; perl: 1,077; csh: 488; makefile: 449; ruby: 93; lisp: 81
file content (77 lines) | stat: -rw-r--r-- 2,971 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*  $Id: ncbi_skew_guard.h,v 1.1 2011/12/06 15:29:50 ucko Exp $
 * ===========================================================================
 *
 *                            PUBLIC DOMAIN NOTICE
 *               National Center for Biotechnology Information
 *
 *  This software/database is a "United States Government Work" under the
 *  terms of the United States Copyright Act.  It was written as part of
 *  the author's official duties as a United States Government employee and
 *  thus cannot be copyrighted.  This software/database is freely available
 *  to the public for use. The National Library of Medicine and the U.S.
 *  Government have not placed any restriction on its use or reproduction.
 *
 *  Although all reasonable efforts have been taken to ensure the accuracy
 *  and reliability of the software and data, the NLM and the U.S.
 *  Government do not and cannot warrant the performance or results that
 *  may be obtained by using this software or data. The NLM and the U.S.
 *  Government disclaim all warranties, express or implied, including
 *  warranties of performance, merchantability or fitness for any particular
 *  purpose.
 *
 *  Please cite the author in any work or product based on this material.
 *
 * ===========================================================================
 *
 * Author:  Aaron Ucko, NCBI
 *
 */

/** @file ncbi_skew_guard.h
  * Implementation header to catch build setups that mix incompatible
  * C and C++ Toolkit installations.
  * 
  * Available as <common/ncbi_skew_guard.h> on the C++ side and
  * <ncbi_skew_guard.h> on the C side, in each case customized upon
  * installation to identify itself appropriately.
  */

/* In-house C++ Toolkit installations define NCBI_INSTALLED_CXX_VER to
 * the corresponding date stamp (also available as NCBI_DEVELOPMENT_VER
 * or NCBI_PRODUCTION_VER). */
/* #undef NCBI_INSTALLED_CXX_VER */

/* Accompanying copies of the C Toolkit define NCBI_EXPECTED_CXX_VER
 * accordingly. */
/* #undef NCBI_EXPECTED_CXX_VER */

#if defined(_NCBILCL_)  &&  defined(FORWARDING_NCBICONF_H) \
    &&  !defined(NCBI_ALLOW_MISMATCHED_VERSIONS)

/* The last change to shared headers before this guard came along occurred
 * on Nov. 30, 2011. */
#define NCBI_MIN_CXX_VER 20111130

#  if defined(NCBI_INSTALLED_CXX_VER)

#    if !defined(NCBI_EXPECTED_CXX_VER) \
        ||  NCBI_INSTALLED_CXX_VER != NCBI_EXPECTED_CXX_VER
#      error Please use the C Toolkit installation accompanying your C++ Toolkit tree.
#    endif

#  else

#    include <common/ncbi_source_ver.h>
#    if NCBI_DEVELOPMENT_VER < NCBI_MIN_CXX_VER
#      error Please use a fresher C++ Toolkit version for C Toolkit compatibility.
#    elif defined(NCBI_EXPECTED_CXX_VER)
#      if (defined(NCBI_PRODUCTION_VER) ? NCBI_PRODUCTION_VER \
           : NCBI_DEVELOPMENT_VER) \
          != NCBI_EXPECTED_CXX_VER
#        error Please use matching C and C++ Toolkit versions.
#      endif
#    endif

#  endif

#endif