- How to add new files and libraries to wxWindows build system
+ How to add new files and libraries to wxWidgets build system
============================================================
1. Regenerating makefiles
-------------------------
-wxWindows now uses Bakefile (http://bakefile.sourceforge.net) to generate
+wxWidgets now uses Bakefile (http://bakefile.sourceforge.net) to generate
native makefiles. You must have bakefile installed if you want to regenerate
the makefiles. Bakefile currently runs on Unix and Windows systems. You will
need Python >= 2.2 installed on Unix and either use Bakefile installer or have
Python on Windows.
Once you have installed Bakefile, you can easily regenerate the makefiles using
-the makefile in $(wx)/build/bakefiles directory. The makefile uses Unix make
-syntax and works on Unix or using either Borland Make or GNU Make (including
-native Win32 port called mingw32-make from http://www.mingw.org/) on Windows.
-It is possible that other Windows make utilities work as well, but it wasn't
-tested. "make clean" only works on Unix or Cygwin or MSYS emulation layer on
-Windows.
-
-You can use following commands when generating the makefiles (must be run from
-$(wx)/build/bakefiles directory):
-
-make <filename> generates one makefile (e.g. "make ../makefile.gcc")
-make all regenerates all makefiles that are out of date
-make library only makefiles for the main library
-make <compiler> only makefiles for given compiler; possible values
- are "borland", "watcom", "mingw", "autoconf", "msvc"
- and "mvsc6prj" (Visual C++ project files)
-make clean deletes all generated files (Unix shell only)
+the bakefile_gen tool. Run it from $(wx)/build/bakefiles directory and it will
+regenerate all outdated makefiles. See $(wx)/build/bakefiles/README for more
+details.
Note that it generates makefiles for samples and contrib libraries, too.
-IMPORTANT NOTE: Don't forget to run autoconf in wxWindows root directory if
- you changed any conditional variable or target condition
- in .bkl files! You will know that this happened if
- $(wx)/autoconf_inc.m4 content changed.
+IMPORTANT NOTE: Don't forget to run autoconf in wxWidgets root directory
+ (after running Bakefile) if you changed any conditional
+ variable or target condition in .bkl files! You will know that
+ this happened if $(wx)/autoconf_inc.m4 content changed.
You can use Bakefile to generate makefiles or projects customized to your
-needs, too. See Makefile for details on bakefile commands used to generate
-makefiles. For example, you can use this command to generate VC++ project
-files without wxUniversal configurations (you can find needed flags in
-DSWFLAGS variable of build/bakefiles/Makefile):
+needs, too. See Bakefiles.bkgen for details on bakefile commands used to
+generate makefiles. For example, you can use this command to generate
+VC++ project files without wxUniversal configurations:
bakefile -v -fmsvc6prj -o../wxmy.dsw -DRUNTIME_LIBS=dynamic
-DDEBUG_INFO=default -DDEBUG_FLAG=default
-DOFFICIAL_BUILD=0 -DUSE_HTML=1 -DUSE_OPENGL=1 -DUSE_ODBC=1
-DDEBUG_INFO=default -DDEBUG_FLAG=default
-DOFFICIAL_BUILD=0 -DUSE_HTML=0 -DUSE_OPENGL=0 -DUSE_ODBC=0
-DMONOLITHIC=1 -DUSE_GUI=0 wx.bkl
+It is, however, recommended to modify Bakefiles.bkgen (or
+Bakefiles.local.bkgen) by means of <add-flags> and <del-flags> directives
+and use bakefile_gen instead of running bakefile directly.
2. Bakefile files organization
Make sure to add <wx-lib> statements for all libraries from multilib build
that are required by the sample.
-Run Python script regenMakefile.py in $(wx)/build/bakefiles to update Makefile
-then run "make" in $(wx)/build/bakefiles directories.
+Run bakefile_gen in $(wx)/build/bakefiles to regenerate the bakefiles.
Finally commit $(wx)/build/bakefiles/Makefile and all the other modified files.
to WXDLLIMPEXP_{BASE,CORE,HTML,...} in the main library (see 5g below for
additional details).
-Run Python script regenMakefile.py in $(wx)/build/bakefiles to update Makefile
-and commit $(wx)/build/bakefiles/Makefile.
+Run bakefile_gen in $(wx)/build/bakefiles to regenerate makefiles
+then commit $(wx)/build/bakefiles/Makefile.
6. Adding new core library
flags and libraries to ldflags_foo and ldlibs_foo variables in
wx-config.in (both are optional).
-g) Update defs.h to define WXMAKINGDLL_FOO if WXMAKINGDLL is defined (add
- #define WXMAKINGDLL_FOO inside first "#ifdef WXMAKINGDLL" block in defs.h)
- and to define WXDLLIMPEXP_FOO and WXDLLIMPEXP_DATA_FOO. You can copy
- e.g. WXDLLIMPEXP_NET definition, it is something like this:
+g) Update dlimpexp.h to define WXMAKINGDLL_FOO if WXMAKINGDLL is defined (add
+ #define WXMAKINGDLL_FOO inside first "#ifdef WXMAKINGDLL" block in
+ dlimpexp.h) and to define WXDLLIMPEXP_FOO and WXDLLIMPEXP_DATA_FOO. You
+ can copy e.g. WXDLLIMPEXP_NET definition, it is something like this:
#ifdef WXMAKINGDLL_NET
#define WXDLLIMPEXP_NET WXEXPORT
#define WXDLLIMPEXP_DATA_NET(type) WXEXPORT type