]>
Commit | Line | Data |
---|---|---|
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 | |
5 | This file is part of Cygwin. | |
6 | ||
7 | This software is a copyrighted work licensed under the terms of the | |
8 | Cygwin license. Please consult the file "CYGWIN_LICENSE" for | |
9 | details. */ | |
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 |