OWLNext    7.0
Borland's Object Windows Library for the modern age
Loading...
Searching...
No Matches
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__ >= 0x790
23#error OWLNext: Unsupported compiler version (too new; please add support).
24#elif __BORLANDC__ >= 0x780 // RAD Studio/C++Builder 13 Florence (RX/CX)
25#define OWL_LIB_COMPILER_VERSION "780"
26#elif __BORLANDC__ >= 0x770 // RAD Studio/C++Builder 12 Athens (RX/CX)
27#define OWL_LIB_COMPILER_VERSION "770"
28#elif __BORLANDC__ >= 0x760 // RAD Studio/C++Builder 11 Alexandria (RX/CX)
29#define OWL_LIB_COMPILER_VERSION "760"
30#elif __BORLANDC__ >= 0x750 // RAD Studio/C++Builder 10.4 Sydney (RX/CX)
31#define OWL_LIB_COMPILER_VERSION "750"
32#elif __BORLANDC__ >= 0x740 // RAD Studio/C++Builder 10.3 Rio (RX/CX)
33#define OWL_LIB_COMPILER_VERSION "740"
34#elif (__BORLANDC__ >= 0x730) // RAD Studio/C++Builder 10.2 Tokyo (RX/CX)
35#define OWL_LIB_COMPILER_VERSION "730"
36#else
37#error OWLNext: Unsupported compiler version (too old; update to a newer version).
38#endif
39
40#elif defined(_MSC_VER)
41
42#define OWL_LIB_COMPILER "v"
43
44#if _MSC_VER >= 1960
45#error OWLNext: Unsupported compiler version (too new; please add support).
46#elif _MSC_VER >= 1950 // VS 2026 (_MSC_VER: 1950)
47#define OWL_LIB_COMPILER_VERSION "145" // Platform toolset "v145"
48#elif _MSC_VER >= 1930 // VS 2022 (_MSC_VER: 1930-1949)
49#define OWL_LIB_COMPILER_VERSION "1930" // Platform toolset "v143" (14.30-14.49)
50#elif _MSC_VER >= 1920 // VS 2019
51#define OWL_LIB_COMPILER_VERSION "1920"
52#elif _MSC_VER >= 1910 // VS 2017
53#define OWL_LIB_COMPILER_VERSION "1910"
54#else
55#error OWLNext: Unsupported compiler version (too old; update to a newer version).
56#endif
57
58#else
59
60#error OWLNext: Unsupported compiler.
61
62#endif
63
64// Platform processor architecture (ISA)
65
66#if defined(_M_AMD64)
67#define OWL_LIB_PLATFORM "x64"
68#elif defined(_M_IX86)
69#define OWL_LIB_PLATFORM "x86"
70#else
71#error OWLNext: Unsupported platform.
72#endif
73
74// Compatibility modes
75
76#if defined(OWL5_COMPAT)
77#define OWL_LIB_COMPAT "5"
78#else
79#define OWL_LIB_COMPAT ""
80#endif
81
82// Debugging modes
83
84#if defined(__CODEGUARD__)
85#define OWL_LIB_DEBUG "g"
86#elif defined(__DEBUG) && (__DEBUG > 0)
87#define OWL_LIB_DEBUG "d"
88#else
89#define OWL_LIB_DEBUG ""
90#endif
91
92// Threading (concurrency) modes
93
94#if defined(INC_VCL)
95#define OWL_LIB_THREADING "v"
96#elif defined(__MT__) || defined(_MT)
97#define OWL_LIB_THREADING "t"
98#else
99#define OWL_LIB_THREADING "s"
100#endif
101
102// Character type modes
103
104#if defined(UNICODE)
105#define OWL_LIB_CHARACTERTYPE "u"
106#else
107#define OWL_LIB_CHARACTERTYPE ""
108#endif
109
110// Link (import) modes
111
112#if defined(_OWLDLL)
113#define OWL_LIB_IMPORT "i"
114#else
115#define OWL_LIB_IMPORT ""
116#endif
117
118// Compose the appropriate pragma link directive.
119
120#pragma comment(lib, \
121 OWL_LIB_NAME \
122 OWL_LIB_DELIMITER \
123 OWL_LIB_VERSION \
124 OWL_LIB_DELIMITER \
125 OWL_LIB_COMPILER \
126 OWL_LIB_COMPILER_VERSION \
127 OWL_LIB_DELIMITER \
128 OWL_LIB_PLATFORM \
129 OWL_LIB_DELIMITER \
130 OWL_LIB_COMPAT \
131 OWL_LIB_DEBUG \
132 OWL_LIB_THREADING \
133 OWL_LIB_CHARACTERTYPE \
134 OWL_LIB_IMPORT \
135 ".lib")
136
137#endif // OWL_PRIVATE_OWLLINK_H
Library version and build information header (template).