OWLNext    7.0
Borland's Object Windows Library for the modern age
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
owllink.h
Go to the documentation of this file.
1//----------------------------------------------------------------------------
2// Object Windows Library
3// Copyright (c) 1998 by Yura Bidus, All Rights Reserved
4// Copyright (c) 2008-2013 Vidar Hasfjord
5//----------------------------------------------------------------------------
6
7#if !defined(OWL_PRIVATE_OWLLINK_H)
8#define OWL_PRIVATE_OWLLINK_H
9
10#include <owl/version.h>
11
12#define OWL_LIB_NAME "owl"
13
14#define OWL_LIB_DELIMITER "-"
15
16#define OWL_LIB_VERSION OWL_PRODUCTVERSION_STRING
17
18#if defined(__BORLANDC__) && defined(__clang__)
19
20#define OWL_LIB_COMPILER "c"
21
22#if __BORLANDC__ >= 0x780
23#error OWLNext: Unsupported compiler version (too new; please add support).
24#elif __BORLANDC__ >= 0x770 // RAD Studio/C++Builder 12 Athens (RX/CX)
25#define OWL_LIB_COMPILER_VERSION "770"
26#elif __BORLANDC__ >= 0x760 // RAD Studio/C++Builder 11 Alexandria (RX/CX)
27#define OWL_LIB_COMPILER_VERSION "760"
28#elif __BORLANDC__ >= 0x750 // RAD Studio/C++Builder 10.4 Sydney (RX/CX)
29#define OWL_LIB_COMPILER_VERSION "750"
30#elif __BORLANDC__ >= 0x740 // RAD Studio/C++Builder 10.3 Rio (RX/CX)
31#define OWL_LIB_COMPILER_VERSION "740"
32#elif (__BORLANDC__ >= 0x730) // RAD Studio/C++Builder 10.2 Tokyo (RX/CX)
33#define OWL_LIB_COMPILER_VERSION "730"
34#else
35#error OWLNext: Unsupported compiler version (too old; update to a newer version).
36#endif
37
38#elif defined(_MSC_VER)
39
40#define OWL_LIB_COMPILER "v"
41
42#if _MSC_VER >= 1950
43#error OWLNext: Unsupported compiler version (too new; please add support).
44#elif _MSC_VER >= 1930 // VS 2022 (_MSC_VER: 1930-1949)
45#define OWL_LIB_COMPILER_VERSION "1930" // Platform toolset "v143" (14.30-14.49)
46#elif _MSC_VER >= 1920 // VS 2019
47#define OWL_LIB_COMPILER_VERSION "1920"
48#elif _MSC_VER >= 1910 // VS 2017
49#define OWL_LIB_COMPILER_VERSION "1910"
50#else
51#error OWLNext: Unsupported compiler version (too old; update to a newer version).
52#endif
53
54#else
55
56#error OWLNext: Unsupported compiler.
57
58#endif
59
60// Platform processor architecture (ISA)
61
62#if defined(_M_AMD64)
63#define OWL_LIB_PLATFORM "x64"
64#elif defined(_M_IX86)
65#define OWL_LIB_PLATFORM "x86"
66#else
67#error OWLNext: Unsupported platform.
68#endif
69
70// Compatibility modes
71
72#if defined(OWL5_COMPAT)
73#define OWL_LIB_COMPAT "5"
74#else
75#define OWL_LIB_COMPAT ""
76#endif
77
78// Debugging modes
79
80#if defined(__CODEGUARD__)
81#define OWL_LIB_DEBUG "g"
82#elif defined(__DEBUG) && (__DEBUG > 0)
83#define OWL_LIB_DEBUG "d"
84#else
85#define OWL_LIB_DEBUG ""
86#endif
87
88// Threading (concurrency) modes
89
90#if defined(INC_VCL)
91#define OWL_LIB_THREADING "v"
92#elif defined(__MT__) || defined(_MT)
93#define OWL_LIB_THREADING "t"
94#else
95#define OWL_LIB_THREADING "s"
96#endif
97
98// Character type modes
99
100#if defined(UNICODE)
101#define OWL_LIB_CHARACTERTYPE "u"
102#else
103#define OWL_LIB_CHARACTERTYPE ""
104#endif
105
106// Link (import) modes
107
108#if defined(_OWLDLL)
109#define OWL_LIB_IMPORT "i"
110#else
111#define OWL_LIB_IMPORT ""
112#endif
113
114// Compose the appropriate pragma link directive.
115
116#pragma comment(lib, \
117 OWL_LIB_NAME \
118 OWL_LIB_DELIMITER \
119 OWL_LIB_VERSION \
120 OWL_LIB_DELIMITER \
121 OWL_LIB_COMPILER \
122 OWL_LIB_COMPILER_VERSION \
123 OWL_LIB_DELIMITER \
124 OWL_LIB_PLATFORM \
125 OWL_LIB_DELIMITER \
126 OWL_LIB_COMPAT \
127 OWL_LIB_DEBUG \
128 OWL_LIB_THREADING \
129 OWL_LIB_CHARACTERTYPE \
130 OWL_LIB_IMPORT \
131 ".lib")
132
133#endif // OWL_PRIVATE_OWLLINK_H
Library version and build information header (template).