]> sourceware.org Git - newlib-cygwin.git/blame - winsup/cygwin/include/cygwin/version.h
* autoload.h: Make DLL initializers global to avoid inlining.
[newlib-cygwin.git] / winsup / cygwin / include / cygwin / version.h
CommitLineData
1fd5e000
CF
1/* version.h -- Cygwin version numbers and accompanying documentation.
2
442a3c78 3 Copyright 1996, 1997, 1998, 1999, 2000 Cygnus Solutions.
1fd5e000
CF
4
5This file is part of Cygwin.
6
7This software is a copyrighted work licensed under the terms of the
8Cygwin license. Please consult the file "CYGWIN_LICENSE" for
9details. */
10
11/* Cygwin versioning is relatively complicated because of its status
12 as a shared library. Let's start with how versioning used to be done.
13
14 Historical versioning in Cygwin 16.0 to 19.5:
15
16 In the olden days of Cygwin, we had a dll major and minor version
17 and a registry version. The major number started at 16 because the
18 "b15" GNU-Win32 release of the compiler tools was out when this
19 scheme was started. We incremented the DLL name frequently (for
20 every official release) and towards the end of this period every
21 release used a different shared memory area to prevent DLLs from
22 interfering with each other (embedding a build timestamp into the
23 name of the shared memory area). This turned out to be a Bad Idea
24 (tm) because people needed to mingle separate releases and have
25 them work together more than we thought they would. This was
26 especially problematic when tty info needed to be retained when an
27 old Cygwin executable executed a newer one.
28
29 In the old scheme, we incremented the major number whenever a
30 change to the dll invalidated existing executables. This can
31 happen for a number of reasons, including when functions are
32 removed from the export list of the dll. The minor number was
33 incremented when a change was made that we wanted to record, but
34 that didn't invalidate existing executables. Both numbers were
35 recorded in the executable and in the dll.
36
37 In October 1998 (starting with Cygwin 19.6), we started a new
38 means of Cygwin versioning: */
39
40 /* The DLL major and minor numbers correspond to the "version of
41 the Cygwin library". This version is used to track important
42 changes to the DLL and is mainly informative in nature. */
43
44 /* The current cygwin version is 1.1.0 */
45
46#define CYGWIN_VERSION_DLL_MAJOR 1001
48c4679d 47#define CYGWIN_VERSION_DLL_MINOR 8
1fd5e000
CF
48
49 /* Major numbers before CYGWIN_VERSION_DLL_EPOCH are
50 incompatible. */
51
52#define CYGWIN_VERSION_DLL_EPOCH 19
53
54 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number
55 representing the combined DLL major and minor numbers. */
56
fcc4976d
DD
57 /* WATCH OUT FOR OCTAL! Don't use, say, "00020" for 0.20 */
58
1fd5e000
CF
59#define CYGWIN_VERSION_DLL_MAKE_COMBINED(maj, min) (((maj) * 1000) + min)
60#define CYGWIN_VERSION_DLL_COMBINED \
61 CYGWIN_VERSION_DLL_MAKE_COMBINED (CYGWIN_DLL_VERSION_MAJOR, CYGWIN_DLL_VERSION_MINOR)
62
63 /* Every version of cygwin <= this uses an old, incorrect method
64 to determine signal masks. */
65
66#define CYGWIN_VERSION_DLL_BAD_SIGNAL_MASK 19005
67
68 /* API versions <= this had a termios structure whose members were
69 too small to accomodate modern settings. */
fcc4976d 70#define CYGWIN_VERSION_DLL_OLD_TERMIOS 5
1fd5e000
CF
71#define CYGWIN_VERSION_DLL_IS_OLD_TERMIOS \
72 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
73 CYGWIN_VERSION_DLL_OLD_TERMIOS)
74
9bc846bd 75#define CYGWIN_VERSION_DLL_MALLOC_ENV 28
56cd25ee
DD
76 /* Old APIs had getc/putc macros that conflict with new CR/LF
77 handling in the stdio buffers */
78#define CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING \
79 (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
fcc4976d 80 20)
56cd25ee
DD
81
82
1fd5e000
CF
83 /* We used to use the DLL major/minor to track
84 non-backward-compatible interface changes to the API. Now we
85 use an API major/minor number for this purpose. */
86
87 /* API_MAJOR 0.0: Initial version. API_MINOR changes:
88 1: Export cygwin32_ calls as cygwin_ as well.
89 2: Export j1, jn, y1, yn.
90 3: Export dll_noncygwin_dllcrt0.
91 4: New socket ioctls, revamped ifconf support.
92 5: Thread support/exports.
93 6: Change in termios handling.
94 7: Export scandir and alphasort.
95 8: Export _ctype_, _sys_errlist, _sys_nerr.
96 9: Mount-related changes, new cygwin_umount export.
97 Raw device support (tape, floppies).
98 10: Fast math routine support added.
99 11: Export seekdir, telldir.
100 12: Export pthread_join, pthread_detach.
101 13: Export math funcs gamma and friends, also _j0, _j1, etc.
102 14: Export snprintf and vnsprintf.
103 15: Export glob
104 16: Export cygwin_stackdump
4b17897e 105 17: Export fast math stuff
5abc9b83 106 18: Stop exporting _strace_wm
8a06963c 107 19: Export fchown, lchown, lacl
66aea0c5 108 20: regsub, inet_network
56cd25ee 109 21: incompatible change to stdio cr/lf and buffering
64b30629
CV
110 22: Export cygwin_logon_user, cygwin_set_impersonation_token.
111 geteuid, getegid return effective uid/gid.
112 getuid, getgid return real uid/gid.
113 seteuid, setegid set only effective uid/gid.
114 setuid, setgid set effective and real uid/gid.
14a3bc2f
CF
115 23: Export new dll_crt0 interface and cygwin_user_data for use
116 with crt0 startup code.
914e40df 117 24: Export poll and _poll.
bd4ec496 118 25: Export getmode and _getmode.
84c7d409
CF
119 26: CW_GET_CYGDRIVE_PREFIXES addition to external.cc
120 27: CW_GETPINFO_FULL addition to external.cc
cbe4c8e2 121 28: Accidentally bumped by cgf
7d9688b7 122 29: Export hstrerror
9bc846bd 123 30: CW_GET_CYGDRIVE_INFO addition to external.cc
2e68f6b4 124 31: Export inet_aton
1fd5e000
CF
125 */
126
127#define CYGWIN_VERSION_API_MAJOR 0
2e68f6b4 128#define CYGWIN_VERSION_API_MINOR 31
1fd5e000
CF
129
130 /* There is also a compatibity version number associated with the
131 shared memory regions. It is incremented when incompatible
132 changes are made to the shared memory region *or* to any named
133 shared mutexes, semaphores, etc. The arbitrary starting
134 version was 0 (cygwin release 98r2). */
135
136#define CYGWIN_VERSION_SHARED_DATA 3
137
138 /* An identifier used in the names used to create shared objects.
139 The full names include the CYGWIN_VERSION_SHARED_DATA version
140 as well as this identifier. */
141
142#define CYGWIN_VERSION_DLL_IDENTIFIER "cygwin1"
143
144 /* The Cygwin mount table interface in the Win32 registry also
145 has a version number associated with it in case that is
146 changed in a non-backwards compatible fashion. Increment this
147 version number whenever incompatible changes in mount table
148 registry usage are made.
149
150 1: Original number version.
151 2: New mount registry layout, system-wide mount accessibility.
152 */
153
154#define CYGWIN_VERSION_MOUNT_REGISTRY 2
155
156 /* Identifiers used in the Win32 registry. */
157
158#define CYGWIN_INFO_CYGNUS_REGISTRY_NAME "Cygnus Solutions"
159#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin"
160#define CYGWIN_INFO_PROGRAM_OPTIONS_NAME "Program Options"
161#define CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME "mounts v2"
a98b1584
CF
162#define CYGWIN_INFO_CYGDRIVE_FLAGS "cygdrive flags"
163#define CYGWIN_INFO_CYGDRIVE_PREFIX "cygdrive prefix"
164#define CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/cygdrive"
1fd5e000
CF
165
166 /* In addition to the above version number strings, the build
167 process adds some strings that may be useful in
168 debugging/identifying a particular Cygwin DLL:
169
170 The mkvers.sh script at the top level produces a .cc file
171 which initializes a cygwin_version structure based on the
172 above version information and creates a string table for
173 grepping via "fgrep '%%%' cygwinwhatever.dll" if you are
174 using GNU grep. Otherwise you may want to do a
175 "strings cygwinwhatever.dll | fgrep '%%%'" instead.
176
177 This will produce output such as:
178
179 %%% Cygwin dll_identifier: cygwin
180 %%% Cygwin api_major: 0
181 %%% Cygwin api_minor: 0
182 %%% Cygwin dll_major: 19
183 %%% Cygwin dll_minor: 6
184 %%% Cygwin shared_data: 1
185 %%% Cygwin registry: b15
186 %%% Cygwin build date: Wed Oct 14 16:26:51 EDT 1998
187 %%% Cygwin shared id: cygwinS1
188
189 This information can also be obtained through a call to
190 cygwin_internal (CW_GETVERSIONINFO).
191 */
192
This page took 0.065024 seconds and 5 git commands to generate.