/*
 *      cook - file construction tool
 *      Copyright (C) 1993-1995, 1997-1999, 2001, 2005-2009 Peter Miller
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 3 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program. If not, see
 *      <http://www.gnu.org/licenses/>.
 */

configuration_directory = "aegis.conf.d";

/*
 * how to build the project
 *      (actually, how to do an integration build)
 * mandatory
 */
build_command =
        "cook -b ${source etc/Howto.cook} project=$project \
change=$change version=$version arch=$arch -nl -st search_path=$search_path";

/*
 * When do -Integrate_Begin, link the baseline to the integration directory,
 * rather than copying it.. This should be much faster.
 *
 * There is a gotcha: all the recipes in Howto.cook must unlink their targets
 * before re-creating them, otherwise the baseline will be trashed.
 */
link_integration_directory = true;

/* don't link/copy the bin dir */
integrate_begin_exceptions = [ "linux-x86_64/bin/*" ];

/*
 * At integrate pass time, the modification times of the files are
 * updated.  This commands gives cook a channce to get the fingerprints
 * back in sync, which in turn speeds up development builds.
 */
build_time_adjust_notify_command =
"set +e; \
find . -name .cook.fp -print | xargs rm; \
cook -nl -st --fp-update";



/*
 * create a new history
 * always executed as the project owner
 */
history_create_command =
        "fhist ${b $history} -cr -cu -i $input -p ${d $history} -r";

/*
 * get a file from history
 * may be executed by developers
 */
history_get_command =
        "fhist ${b $history} -e '$edit' -o $output -p ${d $history}";

/*
 * add a new change to the history
 * always executed as the project owner
 */
history_put_command =
        "fhist ${b $history} -cu -cr -i $input -p ${d $history} -r";

/*
 * query the topmost edit of a history file
 * Result to be printed on stdout.
 * may be executed by developers
 */
history_query_command =
        "fhist ${b $history} -l 0 -p ${d $history} -q";

/*
 * difference of 2 files
 */
diff_command =
        "fcomp -w -s $original $input -o $output";

/*
 * merge two competing edits
 *
 * fmerge -iic  <-- ignore identical conflicts
 */
merge_command =
        "fmerge -iic $original $mostRecent $input -o $output -c $input,C";

/*
 * whenever files are added to or removed from the change,
 * execute the following command.
 *
 * The project files are wiped, too, because a removed file will alter
 * the project file list.
 */
change_file_command =
        "rm -f etc/cook/change_files.$version etc/cook/project_files.$version";
project_file_command = "rm -f etc/cook/project_files.$version";

/*
 *o new file templates
 */
file_template =
[
        {
                pattern = [ "*.[cyl]" ];
                body = "${read_file ${source etc/template/c abs}}";
        },
        {
                pattern = [ "*.h" ];
                body = "${read_file ${source etc/template/h abs}}";
        },
        {
                pattern = [ "test/*/*.sh" ];
                body = "${read_file ${source etc/template/test abs}}";
        },
        {
                pattern = [ "*.sh" ];
                body = "${read_file ${source etc/template/sh abs}}";
        },
        {
                pattern = [ "*.man", "*.[12345678]" ];
                body = "${read_file ${source etc/template/man abs}}";
        },
        {
                pattern = [ "*.so", "*.ms", "*.me" ];
                body = "${read_file ${source etc/template/ms abs}}";
        },
        {
                pattern = [ "*" ];
                body = "${read_file ${source etc/template/generic abs}}";
        }
];

/*
 * Create a symbolic link to the baseline.
 * Note that Howto.cook now assumes its existence.
 */
develop_begin_command = "ln -s $baseline bl";

/*
 * Remove these files before we start integrating, to ensure that they
 * will be rebuild containing the correct version information.
 */
integrate_begin_command =
        "rm -f \
.cook.fp \
etc/cook/change_files* \
etc/cook/project_files* \
etc/version.so \
common/patchlevel.h \
bl blbl blblbl blblblbl \
";

symlink_exceptions =
[
        ".cook.fp",
        "etc/cook/change_files",
        "etc/cook/project_files",
        "etc/version.so",
        "common/patchlevel.h",
        "install-sh",
        "bl", "blbl", "blblbl", "blblblbl",
];

/*
 * how to run tests
 *      they need to know which arctitecture
 */
test_command = "$shell $filename $arch";

/*
 * limitations on project filenames
 */
maximum_filename_length = 14;

/*
 * The develop_end_policy_command may be used to impose additional
 * policy before the aede command will complete successfully.
 */
develop_end_policy_command = "aede-policy";

project_specific =
[
    {
        name = "aede-policy";
        value =
            "copyright "
            "crlf "
            "description "
            "fsf-address "
            "gpl-version "
            "line-length "
            "merge-fhist "
            "merge-rcs "
            "no-tabs "
            "printable "
            "text "
            "white-space"
            ;
    }
];
