//
// aegis - project change supervisor
// Copyright (C) 2007, 2008 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
// .
//
#ifndef AEMAKEGEN_TARGET_AUTOMAKE_H
#define AEMAKEGEN_TARGET_AUTOMAKE_H
#include
#include
/**
* The target_automake class is used to represent the code generation
* needed to build a Makefile.am automake input file from the Aegis
* file manifest.
*/
class target_automake:
public target
{
public:
/**
* The destructor.
*/
virtual ~target_automake();
/**
* The default constructor.
*/
target_automake();
protected:
// See base class for documentation.
void begin();
// See base class for documentation.
void process(const nstring &filename, bool is_a_script);
// See base class for documentation.
void end();
private:
/**
* The source_list instance variable is used to remember the source
* files for a given directory (program or library), indexed by
* top-level directory name.
*/
symtab source_list;
/**
* The remember_source_file method is used to append the given
* source file to the appropriate list in the source_list instance
* variable.
*/
void remember_source_file(const nstring &filename);
/**
* The include_list instance variable is used to remember the
* include files for a given directory (program or library),
* indexed by top-level directory name.
*/
symtab include_list;
/**
* The remember_include_file method is used to append the given
* include file to the appropriate list in the include_list
* instance variable.
*/
void remember_include_file(const nstring &filename);
/**
* The dist_clean_files instance variable is used to remember the
* files which need to be remove by a dist-clean.
*/
nstring_list dist_clean_files;
/**
* The bin_programs instance variable is used to remember the list
* of programs to be build and installed. The name mirrors the
* bin_PROGRAMS automake variable.
*/
nstring_list bin_programs;
/**
* The check_programs instance variable is used to remember the
* list of programs to be build in order to run tests. The name
* mirrors the check_PROGRAMS automake variable.
*/
nstring_list check_programs;
/**
* The noinst_programs instance variable is used to remember
* the list of programs which are to be build but are not to be
* installed. The name mirrors the noinst_PROGRAMS automake variable.
*/
nstring_list noinst_programs;
/**
* The bin_scripts instance variable is used to remember the list
* of scripts to be installed. The name mirrors the bin_SCRIPTS
* automake variable.
*/
nstring_list bin_scripts;
/**
* The check_scripts instance variable is used to remember the
* list of scripts needed to run the tests. The name mirrors the
* check_SCRIPTS automake variable.
*/
nstring_list check_scripts;
/**
* The noinst_scripts instance variable is used to remember the
* list of scripts not to be installed. The name mirrors the
* noinst_SCRIPTS automake variable.
*/
nstring_list noinst_scripts;
/**
* The remember_program method is used to place a program name into
* one of the bin_programs or noinst_programs lists. Typically
* programs which perform specific tests are built but not
* installed.
*
* @param name
* The name of the program.
*/
void remember_program(const nstring &name);
/**
* The noinst_header instance variable is used to remember the
* list of header files not to be installed. The name mirrors the
* noinst_HEADER automake variable.
*/
nstring_list noinst_header;
/**
* The test_files instance variable is used to remember the list of
* Aegis test files.
*/
nstring_list test_files;
/**
* The man_mans instance variable is used to remember the list
* of manual page source files, it is named after the man_MANS
* automake variable. Usually there is one manual page for each
* program.
*/
nstring_list man_mans;
/**
* The extra_dist instance variable is used to remember the list
* of primary source files not mentined in any of the other lists.
* The name mirrors the EXTRA_DIST automake variable.
*/
nstring_list extra_dist;
/**
* The use_libtool instance variable is used to remember whether
* or not the libtool facilities are to be used for libraries.
* Defaults to false.
*/
bool use_libtool;
/**
* The use_dot_man instance variable is used to remember whether
* or not to install "*.man" ffiles as "*.1" files.e Defaults to
* false.
*/
bool use_dot_man;
/**
* The pkgdatadir instance variable is used to remember the files
* to be installed into $(DATADIR)/$(PACKAGE). The name mirrors
* the dist_pkgdatadir_DATA makefile variable.
*/
nstring_list pkgdatadir;
/**
* The pkglibdir instance variable is used to remember the files
* to be installed into $(LIBDIR)/$(PACKAGE). The name mirrors
* the dist_pkglibdir_DATA makefile variable.
*/
nstring_list pkglibdir;
/**
* The copy constructor. Do not use.
*/
target_automake(const target_automake &);
/**
* The assignment operator. Do not use.
*/
target_automake &operator=(const target_automake &);
};
#endif // AEMAKEGEN_TARGET_AUTOMAKE_H