]>
Commit | Line | Data |
---|---|---|
fc2171bd | 1 | wxWidgets naming conventions |
feebe03b | 2 | ============================ |
0cefee80 RL |
3 | |
4 | Being a cross platform development library, it is naturally desirable | |
fc2171bd | 5 | (at least to me ;) for wxWidgets to be exploited in a fully cross |
0cefee80 RL |
6 | platform development environment -- a single invocation of make should |
7 | be sufficient to build target executables for a variety of host platforms | |
8 | when desired. | |
9 | ||
10 | Since this is now in fact possible for at least the most commonly used | |
fc2171bd | 11 | platforms, wxWidgets has been structured to allow multiple, simultaneous |
0cefee80 RL |
12 | installations of the library. Common files are shared, platform and port |
13 | specific files and libraries are arranged so as to be unambiguous when | |
14 | installed together. | |
15 | ||
16 | To manage this sanely we need a sufficiently descriptive and logical | |
17 | labelling convention for file and install path names -- this document (at | |
2edb0bde | 18 | least at its time of writing) describes the system we have adopted. |
0cefee80 RL |
19 | |
20 | It is not fine grained enough to include every possible build configuration | |
fc2171bd | 21 | for wxWidgets, but is encompassing enough to maintain a relatively complete |
0cefee80 RL |
22 | set of cross platform build tools on a single machine and to provide an |
23 | obvious slot for new ports to slip into. | |
24 | ||
25 | ||
26 | For UNIX libraries, the canonical library name shall be of the form: | |
27 | ||
28 | libwx_$(toolkit)$(widgetset)$(debug)-$(version)-$(host).$(lib_extension) | |
29 | ||
30 | For MSW (native hosted only) libraries the library name should be of | |
31 | the form: | |
32 | ||
33 | wx$(toolkit)$(widgetset)$(version)$(unicode)$(debug).$(lib_extension) | |
34 | ||
35 | ||
36 | Where: | |
37 | ||
38 | -------------------------------------------------------------------- | |
39 | ||
40 | $toolkit must currently be one of the following: | |
41 | ||
42 | msw | |
43 | gtk | |
44 | base | |
45 | mac | |
46 | os2 | |
47 | pm | |
0cefee80 RL |
48 | motif |
49 | ||
50 | -------------------------------------------------------------------- | |
51 | ||
52 | $widgetset may be one of: | |
53 | ||
54 | univ | |
55 | ||
56 | or empty if the widget set is the same as the toolkit. | |
57 | ||
58 | -------------------------------------------------------------------- | |
59 | ||
60 | $version is a string encoding the full version (major, minor, release) | |
61 | for MSW, or just the major and minor number for UNIX. | |
62 | ||
fc2171bd | 63 | eg. for wxWidgets 2.3.2, $version = 232 for MSW or 2.3 for UNIX. |
0cefee80 RL |
64 | |
65 | The rationale for this is that under UNIX-like systems it is desirable | |
66 | that differently 'minor numbered' releases can be installed together, | |
67 | meaning your old 2.2 apps can continue to work even if you migrate | |
68 | development to the next stable or unstable release (eg. 2.3, 2.4), | |
69 | but binary compatibility is maintained between point releases (those | |
70 | with the same major.minor number) | |
71 | ||
72 | A known break in binary compatibility should be addressed by updating | |
73 | the library soname (see the notes in configure.in for details on this) | |
74 | ||
75 | I do not know why MSW should not also omit the release number from | |
76 | $version. (maybe that will change by the time this document is ratified) | |
77 | ||
78 | -------------------------------------------------------------------- | |
79 | ||
80 | $unicode and $debug are either empty or set to 'u' and 'd' | |
81 | respectively when enabled. | |
82 | ||
83 | -------------------------------------------------------------------- | |
84 | ||
85 | $host is empty for a 'native' library, (that is one where the host | |
86 | system is the same as the build system) or set to the value returned | |
87 | by the autoconf ${host_alias} variable in configure for libraries | |
88 | that are cross compiled. | |
89 | ||
90 | -------------------------------------------------------------------- | |
91 | ||
92 | $lib_extension is system specific and most usually set to .a for | |
93 | a static library, .dll for a MSW shared library, or .so.$so_version | |
94 | for a shared UNIX library. | |
95 | ||
96 | ==================================================================== | |
97 | ||
98 | ||
99 | The installed location of the library specific setup.h is also | |
100 | determined by the values of these items. On UNIX systems they | |
101 | will be found in: | |
102 | ||
103 | $(prefix)/lib/wx/include/$(toolkit)$(widgetset)$(debug)-$(version)-$(host)/wx/ | |
104 | ||
105 | which will be in the include search path returned by the relevant | |
106 | wx-config for that library. (or presumably set in the relevant | |
107 | make/project files for platforms that do not use wx-config) | |
108 | ||
109 | ==================================================================== | |
110 | ||
111 | ||
112 | The port specific wx-config file for each library shall be named: | |
113 | ||
114 | wx-$(toolkit)$(widgetset)$(debug)-$(version)-$(host)-config | |
115 | ||
116 | ${prefix}/bin/wx-config shall exist as a link to (or copy of) one of | |
117 | these port specific files (on platforms which support it) and as such | |
118 | it defines the default build configuration for wxApps on the system. | |
119 | It may be modified by the system user at any time. | |
120 | ||
121 | ||
122 | ||
123 | ---==O==--- | |
124 |