e96b28181c
The conversion is very superficial and there are probably many problems in the Markdown rendering, but this is the first step towards making these documents more readable when viewing them online. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
78 lines
3.1 KiB
Markdown
78 lines
3.1 KiB
Markdown
How to add a new `wxUSE_XXX` preprocessor constant
|
|
================================================
|
|
|
|
0. Purpose
|
|
----------
|
|
|
|
Detailed description of what needs to be done when you want to add a new
|
|
`wxUSE_XXX` compilation flag. The text below assumes you need new `wxUSE_FOO`.
|
|
|
|
|
|
1. Overview
|
|
-----------
|
|
|
|
wxWidgets uses `wxUSE_XXX` macros for conditionally compiling in (or not)
|
|
optional components. In general, whenever a new non critical (i.e. not
|
|
absolutely required by important parts of the library) class Foo is added it
|
|
should use its own `wxUSE_FOO` compilation flag.
|
|
|
|
`wxUSE_FOO` must be always defined and have value of 0 or 1. Be careful with
|
|
testing for it in wx/foo.h: don't do it at the very beginning of the file
|
|
because then `wxUSE_FOO` would be not defined at all if the user directly
|
|
includes wx/foo.h, include "wx/defs.h" before testing for `wxUSE_FOO`.
|
|
|
|
|
|
2. Files to update
|
|
------------------
|
|
|
|
The following files need to be modified when adding a new `wxUSE_FOO`:
|
|
|
|
a) include/wx/setup_inc.h
|
|
|
|
This file contains all common `wxUSE_XXXs`, and is used to update wxMSW, wxMac
|
|
setup.h and Unix setup.h.in using build/update-setup-h. Please try to add
|
|
the new define in a logical place (i.e. near any related ones) and write a
|
|
detailed comment explaining what does it do and why would you want to turn
|
|
it on/off. Choose the appropriate default value: this should be usually 1
|
|
but can be 0 if there are some problems preventing the use of Foo by default
|
|
(e.g. it requires installation of some non standard 3rd party libraries).
|
|
After changing this file, run the update-setup-h script (this is probably
|
|
better done on a Unix machine although it should work under Cygwin too).
|
|
|
|
a') include/wx/msw/setup_inc.h for MSW-specific options
|
|
|
|
This file contains MSW-specific options, so if the new option is only used
|
|
under MSW, add it here instead of include/wx/setup_inc.h. The rest of the
|
|
instructions is the same as above.
|
|
|
|
b) include/wx/chkconf.h
|
|
|
|
Add the check for `wxUSE_FOO` definedness in the corresponding (base or GUI)
|
|
section. Please keep the alphabetic order.
|
|
|
|
If there are any dependencies, i.e. `wxUSE_FOO` requires `wxUSE_BAR` and
|
|
`wxUSE_BAZ`, check for thme here too.
|
|
|
|
b') include/wx/msw/chkconf.h for MSW-specific options
|
|
|
|
These options won't be defined for the other ports, so shouldn't be added to
|
|
the common include/wx/chkconf.h but to this file instead.
|
|
|
|
c) configure.in
|
|
|
|
Here you need to add `DEFAULT_wxUSE_FOO` define. It should be added in the
|
|
block beginning after WX_ARG_CACHE_INIT line and should default to "no" for
|
|
"if DEBUG_CONFIGURE = 1" branch (this is used for absolutely minimal builds)
|
|
and the same as default value in setup_inc.h in the "else" branch.
|
|
|
|
You also need to add a WX_ARG_ENABLE (or, if new functionality can be
|
|
reasonably described as support for a 3rd party library, WX_ARG_WITH)
|
|
line togetherw with all the existing WX_ARG_ENABLEs.
|
|
|
|
If you have a sample/foo which should be only built when `wxUSE_FOO==1`,
|
|
then only add it to the SAMPLES_SUBDIRS if `wxUSE_FOO=yes` in configure.
|
|
|
|
d) docs/doxygen/mainpages/const_wxusedef.h
|
|
|
|
Add a brief description of the new constant.
|