]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/tech/tn0001.txt
don't set SO_REUSEADDR by default; added GSocket_SetReuseAddr()
[wxWidgets.git] / docs / tech / tn0001.txt
index bd2f3b7af41b8c1f0dc85a586c761f8285872b94..47785b6e9b3b0e5883ec14d2b3688739100c8c6d 100644 (file)
@@ -1,42 +1,55 @@
-                    How to add a new sample to wxWindows.
+                    How to add a new sample to wxWidgets.
                     =====================================
 
-To add a new sample "foo" under directory "samples/foo" you need to
-do the following:
+To add a new sample "foo" under directory "samples/foo" you need to do
+the following: (note that all this applies also to demos: just replace
+samples/ with demos/ where needed).
 
-1. Create the directory samples/foo locally and "cvs add" it
+1. Create the directory samples/foo locally and "cvs add" it.
 
-2. Put the sources, headers and foo.rc file in it and "cvs add" them too
-   (don't forget to use "-kb" switch for binary files)
+2. "cvs add" the sample sources (usually based on minimal.cpp) as well.
 
-3. Create the makefiles for Windows compilers. There are several ways to do
-   it:
-   a) copy the makefiles from samples/minimal, replace all occurences of
-      minimal with foo
-   b) use makegen (sources are under utils/makegen)
-   c) use projgen
+   Note that unless your sample requires something special you shouldn't
+   add foo.rc, foo.ico, ... any more, please just reuse the generic sample.*
+   files in the samples subdirectory.
 
-4. Modify configure.in and samples/configure.in for Unix compilation:
+3. Create the makefiles:
+   a) modify samples/samples.bkl (just copy an existing line)
+   b) create foo.bkl (sed 's/minimal/foo/g' minimal.bkl > foo.bkl is usually
+      enough, but you may need to add more <wx-lib> lines if your sample uses
+      anything not in the core lib)
+   c) generate the makefiles for your sample using bakefile. For this you
+      need to:
+      (i) install bakefile (see http://bakefile.sf.net/)
+      (ii) run bakefile_gen in build/bakefiles which will regenerate all
+           makefiles which are not up to date
+
+      You may also use "bakefile_gen -b ../../samples/foo/foo.bkl" to
+      regenerate only the makefiles for this sample (path must be relative!)
+      or even add a "-f<compiler>" to generate just the makefiles for the given
+      compiler (run 'bakefile --help' to get the list of possible values).
+      See Technote #16 for more information.
+
+4. Modify configure.in Unix compilation:
    a) if the sample should only be built if "wxUSE_FOO" is enabled, locate
       the test for "wxUSE_FOO = yes" in configure.in and add a line
       SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS foo" under it
    b) if it should be always built, locate the line "if test $wxUSE_GUI = yes"
       near the end of configure.in and modify the assignment to
       SAMPLES_SUBDIRS to include "foo" (put in alphabetical order)
-   c) add foo/Makefile to AC_OUTPUT in samples/configure.in
 
-   After this, regenerate configure and samples/configure from configure.in by
-   running "autoconf" on a Unix system in the corresponding directory.
+   After this, regenerate configure from configure.in
+   by running "autoconf" on a Unix system in the corresponding directory.
 
-Author:  VZ
-Version: $Id$
+5. Add a short description of what the sample does and how does it work
+   to the "samples overview" section in the wxWidgets manual. That section
+   lives in docs/latex/wx/tsamples.tex; look at the descriptions for other
+   samples, if you are not familiar with LaTeX.
 
-$Log$
-Revision 1.1  2000/03/02 04:18:53  GRG
-Renamed tech notes to tnxxxx.txt
+6. Add sample's files to build/bakefiles/make_dist.mk and
+   distrib/msw/{generic.rsp,makefile.rsp,vc.rsp}.
 
-Revision 1.2  2000/03/01 19:24:07  VZ
-added a note about where to find makegen
+=== EOF ===
 
-Revision 1.1  2000/03/01 19:22:41  VZ
-created 'how to add a sample' technote
+Author:  VZ
+Version: $Id$