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