X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b6e20cff8cf7625e4bb5e2fc69522d731dd4bea2..2fc2d511d0f095ab5de3713cff6042832f886d15:/docs/tech/tn0016.txt diff --git a/docs/tech/tn0016.txt b/docs/tech/tn0016.txt index 86ddfccf2d..490e7b4f7d 100644 --- a/docs/tech/tn0016.txt +++ b/docs/tech/tn0016.txt @@ -14,7 +14,7 @@ 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. +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. @@ -37,6 +37,26 @@ IMPORTANT NOTE: Don't forget to run autoconf in wxWindows root directory if 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): + 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 + -DMONOLITHIC=0 -DUSE_GUI=1 -DWXUNIV=0 wx.bkl +Or monolithic instead of multilib (the default): + bakefile -v -fmsvc6prj -o../wxmono.dsw -DRUNTIME_LIBS=dynamic + -DDEBUG_INFO=default -DDEBUG_FLAG=default + -DOFFICIAL_BUILD=0 -DUSE_HTML=1 -DUSE_OPENGL=1 -DUSE_ODBC=1 + -DMONOLITHIC=1 -DUSE_GUI=1 wx.bkl +Or monolithic wxBase: + bakefile -v -fmsvc6prj -o../wxBase.dsw -DRUNTIME_LIBS=dynamic + -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 + 2. Bakefile files organization ------------------------------ @@ -54,6 +74,7 @@ Support files are: common_samples.bkl common_contrib.bkl - shared definitions and templates config.bkl - user-configurable build options + make_dist.mk - implementation of "make dist" on Unix Files used to build the library are: wx.bkl - main file @@ -108,7 +129,9 @@ Make sure to add 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 -and commit $(wx)/build/bakefiles/Makefile. +then run "make" in $(wx)/build/bakefiles directories. + +Finally commit $(wx)/build/bakefiles/Makefile and all the other modified files. 5. Adding contrib library @@ -151,7 +174,9 @@ a) Add files to files.bkl: Finally, define FOO_SRC and FOO_HDR to contain both FOO_PLATFORM_{SRC,HDR} and FOO_{SRC,HDR} (see NET_SRC definition for an example). - * Add FOO_HDR to ALL_HEADERS + * Add FOO_HDR to ALL_GUI_HEADERS or ALL_BASE_HEADERS. + * If wxFoo is wxBase library (doesn't use GUI), add FOO_SRC to + ALL_BASE_SOURCES. (You can apply different approaches to HDR and SRC variables, if e.g. headers are all common but sources are not.) @@ -160,8 +185,9 @@ a) Add files to files.bkl: native make tools. b) Modify bakefile system in build/bakefiles/ to recognize wxFoo: - * Add 'foo'to MAIN_LIBS and LIBS_NOGUI or LIBS_GUI (depending on whether + * Add 'foo' to MAIN_LIBS and LIBS_NOGUI or LIBS_GUI (depending on whether the library depends on wxCore or not) to wxwin.py file. + * Add the library to DEPS_TABLE in wxwin.py * Add WXLIB_FOO definition to common.bkl (into the "Names of component libraries" section). It looks like this: @@ -177,13 +203,13 @@ d) Add files to multilib build: add foolib and foodll targets. Don't use e) Regenerate all makefiles (don't forget to run autoconf) -f) Update wx-config.in to contain information about the library and needed - linker flags: - * Add "foo" to either CORE_BASE_LIBS or CORE_GUI_LIBS so that wxFoo is - not treated as contrib library in monolithic build. +f) Update configure.in and wx-config.in to contain information about + the library and needed linker flags: + * Add "foo" to either CORE_BASE_LIBS or CORE_GUI_LIBS in configure.in so + that wxFoo is not treated as contrib library in monolithic build. * If wxFoo links against additional libraries, add neccessary linker - flags and libraries to ldflags_foo and ldlibs_foo variables (both are - optional). + 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) @@ -201,8 +227,13 @@ g) Update defs.h to define WXMAKINGDLL_FOO if WXMAKINGDLL is defined (add #endif Use WXDLLIMPEXP_FOO when declaring wxFoo classes and functions. -i) Add information about wxFoo to the manual - FIXME - where exactly +h) Add this code to one of wxFoo's files (the more often used, the better): + // DLL options compatibility check: + #include "wx/app.h" + WX_CHECK_BUILD_OPTIONS("wxFoo") + +i) Add information about wxFoo to the manual ("Libraries list" section + in libs.tex). === EOF ===