Provided by: pmk_0.9.3s2-2_i386 bug

NAME

     pmkfile - pmk specification file

DESCRIPTION

     pmkfile is a file containing specifications that help configuring a
     package build on a given platform.

DATA TYPES

     pmkfile uses pseudo types like the following:

     bool        The classical boolean type with TRUE and FALSE values.

                 For example:

                       TRUE
                       FALSE

     identifier  An identifier is a string of alphanumerical and underscores
                 characters.

                 For example:

                       REQUIRED
                       a_label
                       underscores_are_nice

     quoted      This means quoted string which can contain a set of
                 characters delimited by quotation marks.

                 For examples:

                       "simple quoted string"
                       "string that contain \"quotes\" backslashed"
                       "can also contain filenames like pmkfile.scan"

     list        It is one or more of the previous types between brackets.
                 Multiple objects are separated with a comma.  Blanks are
                 currently not allowed beside commas, this means that you can
                 find them only in a quoted string of the list.

                 For example:

                       ("only_one_string")
                       ("added a boolean",TRUE)
                       (mixed_list_of,"words","and",TRUE,"quoted strings")

SYNTAX

     pmkfile can contain comments, blank lines and commands.

     A command has the following format (? character means optional field):

           <command><?(label)> {
                   <body>
           }

     The command and label names can be assimilated to the ’word’ type.  See
     DATA TYPES above.

     The body can contain comment(s) and definition line(s).  A commented line
     start with a ’#’ character like the following:

           # this is a comment line

     A definition line has the following format:

           <?blank><key name><?blank>=<?blank><key value>

     The key name is of identifier type.

     The key value type can be ’bool’, ’quoted’ or ’list’.  The right type
     will depend on the key name (see further).

     For example:

           CHECK_INCLUDE(header_sys_param) {
                   # following options use different uses of blank characters
                   # key value is word type
                   REQUIRED = TRUE
                   # key value is list type
                   DEPEND= ("dep_one",dep_two,"dep_three")
                   # key value is quoted type
                   INCLUDE = "sys/param.h"
           }

SPECIFIC COMMANDS

     The following commands have no label.

     SETTINGS
             This command sets pmk parameters.

             Arguments:

                   AC_COMPAT  type is ’quoted’, enable autoconf compatibility
                              (empty string or filename).

                   LANG       type is ’quoted’, global default language.

                   TARGET     type is ’list’, list of target’s filenames.

                   DETECT     type is ’list’, list of compilers to detect (CC
                              and/or CXX).

             For example:

                   SETTINGS {
                           AC_COMPAT="config.h"
                           LANG="C"
                           TARGET=("src/file.c","src/file.h")
                           DETECT=("CC")
                   }

     DEFINE  This command permits to define variables.

             Arguments:

             Those are the variables to be defined (quote data type only).

             For example:

                   DEFINE {
                           PACKAGE="my_prog"
                           VERSION="0.1"
                   }

     SWITCHES
             This command is setting dependency switches (see further DEPEND
             definition).

             Arguments:

             For example:

                   SWITCHES {
                           use_curses=TRUE
                           use_gtk=FALSE
                   }

STANDARD COMMANDS

     All these commands need a label.

     They can all have the following optional arguments:

           REQUIRED  Specify if this test is required to achieve the
                     configuration.  Type is ’bool’.  If not specified, it is
                     TRUE by default.

           DEPEND    Specify check dependencies.  Type is ’list’.  A
                     dependency is a label or a switch name.  The value of
                     each dependency can be negated by adding a leading ’!’
                     sign.  If at least one of the dependencies is false then
                     the check will be disabled.

                     For example:

                           DEPEND = ("header_gtk","!header_qt")

           DEFS      Specify additional defines.  Type is ’list’.  If the
                     check succeeds then the given defines are also recorded
                     else they are ignored.

     Some of these commands can also have the following arguments:

     LANG    Specify the language used in the following list:

             C, C++

             Type is ’quoted’, by default \"C\" is the used language.

     Here the list of commands:

     CHECK_BINARY
             Check if a binary is in the path.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   NAME      type is ’quoted’, name of the binary.

                   VARIABLE  type is ’quoted’, variable name to store the
                             path.

     CHECK_HEADER
             Check language header and optionally a function.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   LANG

                   NAME      type is ’quoted’, name of the header.

                   MACRO     type is ’list’, list of one or more compiler
                             macros to check, optional.

                   FUNCTION  type is ’quoted’ or ’list’, name or list of
                             functions to check, optional.

                   CFLAGS    type is ’quoted’, variable name to store CFLAGS
                             values, optional.

     CHECK_LIB
             Check a library and optionally a function.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   LANG

                   NAME      type is ’quoted’, name of the library to check.

                   FUNCTION  type is ’quoted’ or ’list’, name or list of
                             functions to check, optional.

                   LIBS      type is ’quoted’, variable name to store LIBS
                             values, optional.

     CHECK_CONFIG
             Check using a *-config tool.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   NAME      type is ’quoted’, config tool name.

                   VERSION   type is ’quoted’, minimal version needed,
                             optional.

                   CFLAGS    type is ’quoted’, variable name to store CFLAGS
                             values, optional.

                   LIBS      type is ’quoted’, variable name to store LIBS
                             values, optional.

                   VARIABLE  type is ’quoted’, variable name to store the path
                             of the config tool, optional.

     CHECK_PKG_CONFIG
             Check a package using pkg-config.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   NAME      type is ’quoted’, package name.

                   VERSION   type is ’quoted’, minimal version needed,
                             optional.

                   CFLAGS    type is ’quoted’, variable name to store CFLAGS
                             values, optional.

                   LIBS      type is ’quoted’, variable name to store LIBS
                             values, optional.

     CHECK_TYPE
             Check if the given type exists.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   LANG

                   NAME      type is ’quoted’, name of the type to check.

                   HEADER    type is quoted, name of the header where to find
                             the given type.

                   MEMBER    type is quoted, name of a member of the structure
                             given in NAME to be checked.

     CHECK_VARIABLE
             Check if the given variable does exist and optionally its value.

             Arguments:

                   REQUIRED

                   DEPEND

                   DEFS

                   NAME      type is ’quoted’, name of the variable to check.

                   VALUE     type is ’quoted’, value to check with the
                             variable, optional.

CONDITIONAL COMMANDS

     IF(expression)
             It contains other commands that will be executed only if the
             given expression is true.

             Arguments:

             For example:

                   IF(header_gtk) {
                           DEFINE {
                                   HAVE_GTK = "1"
                           }
                   }

     ELSE(expression)
             It contains other commands that will be executed only if the
             given expression is false.

             Arguments:

             For example:

                   ELSE(header_glib) {
                           DEFINE {
                                   HAVE_GLIB = "0"
                           }
                   }

SHARED LIBRARY SUPPORT

     BUILD_SHLIB_NAME
             This command helps you to build the name of a shared library.

             Arguments:

                   NAME          type is ’quoted’, name of the library
                                 (without leading ’lib’).

                   MAJOR         type is ’quoted’, major number for the
                                 version.

                   MINOR         type is ’quoted’, minor number for the
                                 version.

                   VERSION_NONE  type is ’quoted’, variable name to store
                                 library name without version, optional.

                   VERSION_MAJ   type is ’quoted’, variable name to store
                                 library name with major version, optional.

                   VERSION_FULL  type is ’quoted’, variable name to store
                                 library name with full version, optional.

             For example,

                   BUILD_SHLIB_NAME {
                           NAME = "test"
                           MAJOR = "0"
                           MINOR = "2"
                           VERSION_NONE = "LIBNAME"
                           VERSION_FULL = "LIBNAMEVERS"
                   }

SEE ALSO

     pmk(1), pmkscan(1)