<?xml version="1.0" ?>

<!--
    =========================================================================
    How to customize this file for a particular component.

    The wxCode presets are designed to accomodate a component that has:
        - source and header files that are meant to be compiled into 1 library
          (as a static lib when WX_SHARED=='0' and as a DLL when WX_SHARED=='1')
        - one or more sample programs that will make use of the library
    Nonetheless it can still be used for components with more than one library.

    Step-by-step guide to adapt this bakefile to a component which builds as
    a library and has one or more samples as described above:

    1.) Replace the contents of the "set-comp-name" tag with the name of your
        component, eg. wxCode/component/MYCOMPONENT_NAME.
        Example : for wxCode/components/wxpropgrid use just 'wxpropgrid' with no
                  quotes.

    2.) Replace the name of the lib to be generated MYCOMPONENT_NAME_lib and
        MYCOMPONENT_NAME_dll with the actual name of your component,
        eg. wxpropgrid_lib and wxpropgrid_dll.

    3.) Adjust the MSVC6PRJ_MERGED_TARGETS variable with the same values
        you've set previously. eg. wxpropgrid=wxpropgrid_lib+wxpropgrid_dll

    4.) Remove or add libs to link the library to. Use <wx-lib>name</wx-lib> for
        libraries from wxWidgets and they will be appropriately pre and postfixed
        based on the build settings (eg. debug, unicode, etc.).

        Use <library>libID</library> for other libraries declared into this bakefile
        (e.g. your component's library: <library>wxpropgrid_lib</library>)

        Finally, use <sys-lib>name</sys-lib> for other libraries coming from 3rd party
        packages. Note that shared libraries (<dll>) need to link to other libraries, 
        but static libraries (<lib>) do not.

    5.) Replace the MYSAMPLE_NAME with the name you want the compiled executable
        to have. Add or remove libraries and include paths as you did for the
        library.

    6.) Periodically check to see if the wxCode bakefiles have been updated,
        including the template MYCOMP.bkl that this is derived from
        and regenerate your build files.

    ==========================================================================
-->

<makefile>

    <!-- the following line tells Bakefile that this component uses the wxCode presets
         (internally wxCode presets use in turn the wxWidgets presets)
    -->
    <include file="presets/wxcode.bkl"/>

    <!-- sets the name of the folder which contains this component and thus
         should always be in lowercase, wxCode/component/MYCOMPONENT_NAME 
    -->
    <set-comp-name>propgrid</set-comp-name>


    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- Library settings                                                  -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <!-- NOTE: you won't need to specify a list of source and headers files
               for this component: wxcode.bkl (included above) will automatically
               look into the 'src' and 'include/wx' folders of your component to
               build such lists and set the COMP_SRC and COMP_HDR variables,
               which will then be used as sources / headers for the <lib> and <dll>
               targets below.

               In case however you don't have the sources/headers in those
               folders, you'll want to 'manually' set the list. E.g. use

                <set var="COMP_SRC">$(fileList('my_src_dir/*.cpp'))</set>
                <set var="COMP_HDR">$(fileList('my_header_dir/*.h'))</set>

               if you have the sources in wxCode/components/yourcomp/my_src_dir
               and the headers in wxCode/components/yourcomp/my_header_dir

               This is because the folders you reference are always referred to 
               the root of your component and must always be relative paths.
    -->
    <set var="COMP_HDR">$(fileList('include/wx/propgrid/*.h'))</set>
    <set var="COMP_SRC">
      src/advprops.cpp
      src/editors.cpp
      src/extras.cpp
      src/manager.cpp
      src/odcombo.cpp
      src/propgrid.cpp
      src/props.cpp
    </set>


    <!-- NOT YET SUPPORTED!
    <gettext-catalogs id="locale">
        <srcdir>$(SRCDIR)/locale</srcdir>
        <catalog-name>propgrid</catalog-name>
        <linguas>fi it pl</linguas>
        <install-to>$(LOCALEDIR)</install-to>
    </gettext-catalogs>
    -->

        <set var="SAMPLE_SRC">
        samples/minimal.cpp
        samples/propgridsample.cpp
        samples/sampleprops.cpp
        samples/tests.cpp
        src/xh_propgrid.cpp
        </set>
    <lib id="propgrid_lib" template="wxcode-lib" cond="WX_SHARED=='0'">
        <!-- here you can use any standard Bakefile tag. E.g. you may want to
             use <include> tag to add additional compiler include paths.
        -->
    </lib>
    <dll id="propgrid_dll" template="wxcode-dll" cond="WX_SHARED=='1'">
        <!-- Remove the libraries which are not required by your project.
             Note : the linking order may be important for static objects
                    to be initialized correctly and even more important for
                    some linkers like GNU's linker. -->
        <wx-lib>adv</wx-lib>
        <wx-lib>core</wx-lib>
        <wx-lib>base</wx-lib>
    </dll>

    <!-- This makes the MSVC6 project files much nicer... -->
    <set var="MSVC6PRJ_MERGED_TARGETS">
        propgrid=propgrid_lib+propgrid_dll
    </set>


    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- Sample(s) settings                                                -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <!-- For wxCode samples, don't use a simple <exe> tag but rather the more
         specific <wxcode-sample> tag: -->

    <wxcode-sample id="propgridsample">
        <!-- Inside a <wxcode-sample> tag you _must_ use the <dir> tag
             to tell Bakefile in which directory is placed this sample.

             NOTE: the directory you reference must be relative to the root
                   of your component. In the sample <dir> below we assume
                   you have placed this sample's files in
                      yourCompFolder/samples/sample1
        -->
        <dir>samples</dir>

        <!-- if you use win32 resources for your sample and you are lazy and
             don't want to use the <win32-res>myresfile.rc</win32-res> tag,
             you can just write:
        -->
        <win32-res>samples/sample.rc</win32-res>

        <!-- Remove the libraries which are not required by your project.
             Note : the linking order may by important for static objects
             to be initialized correctly. -->
        <library>propgrid_lib</library>
        <wx-lib>xrc</wx-lib>
        <wx-lib>html</wx-lib>
        <wx-lib>xml</wx-lib>
        <wx-lib>adv</wx-lib>
        <wx-lib>core</wx-lib>
        <wx-lib>base</wx-lib>
    </wxcode-sample>


    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- Additional utilities                                              -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <!-- Put here one or more of the following tags if you need them:

            <make-tarball/>    => for adding a "tarball" target on your Unix
                                  makefiles. Very very useful to make clean tarballs
                                  of your component at release-time.

            <make-zip>         => for adding a "zip" target on your Win makefiles.
                                  Very very useful  to make clean zip archives
                                  of your component at release-time.

            <make-docs>        => for adding a "docs" target on your makefiles
                                  which runs "doxygen" in yourCompFolder/docs
    -->

</makefile>
