*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> mkmf (1)              
Title
Content
Arch
Section
 

Contents


 mkmf(1)                                                             mkmf(1)




 NAME    [Toc]    [Back]
      mkmf - make a makefile

 SYNOPSIS    [Toc]    [Back]
      mkmf [-acdeil] [-f makefile] [-F template] [-M language]
      [macroname=value ...]

 DESCRIPTION    [Toc]    [Back]
      The mkmf command creates a makefile that informs the make command how
      to construct and maintain programs and libraries (see make(1)).  After
      gathering up all source code file names in the current working
      directory and inserting them into the makefile, mkmf scans source code
      files for included files and generates dependency information that is
      appended to the makefile.  Source code files are identified by their
      file name suffixes.  mkmf recognizes the following suffixes:

           .c      C
           .C      C++
           .f      FORTRAN
           .h      Include files
           .i      Pascal include files
           .l      Lex or Lisp
           .o      Object files
           .p      Pascal
           .r      Ratfor
           .s      Assembler
           .y      Yacc

      The mkmf command checks for an existing makefile before creating one.
      If no -f option is present, mkmf tries the makefiles makefile and
      Makefile, respectively.

      After the makefile has been created, arbitrary changes can be made
      using a text editor.  mkmf can also be used to re-edit the macro
      definitions in the makefile, regardless of changes that may have been
      made since it was created.

      By default, mkmf creates a program makefile.  To create a makefile
      that handles libraries, the -l option must be used.

    Make Requests    [Toc]    [Back]
      Given a makefile created by mkmf, make recognizes the following
      requests:

           all         Compile and load a program or library.

           clean       Remove all object and core files.

           clobber     Remove all files that can be regenerated.





 Hewlett-Packard Company            - 1 -   HP-UX 11i Version 2: August 2003






 mkmf(1)                                                             mkmf(1)




           depend      Update included file dependencies in a makefile.

           echo        List the names of the source code files on standard
                       output.

           extract     Extract all object files from the library and place
                       them in the same directory as the source code files.
                       The library is not altered.

           index       Print an index of functions on standard output.

           install     Compile and load the program or library and move it
                       to its destination directory.

           print       Print source code files on standard output.

           tags        Create a tags file for the ex editor (see ex(1) and
                       ctags(1)), for C, Pascal, and Fortran source code
                       files.

           update      Recompile only if there are source code files that
                       are newer than the program or library, link and
                       install the program or library.

      Several requests can be given simultaneously.  For example, to (1)
      compile and link a program, (2) move the program to its destination
      directory, and (3) remove any unnecessary object files, use:

           make install clean

    Macro Definitions    [Toc]    [Back]
      mkmf understands the following macro definitions:

           CFLAGS         C compiler flags.  After searching for included
                          files in the directory currently being processed,
                          mkmf searches in directories named in -I compiler
                          options and then in the /usr/include directory.

           COMPILESYSTYPE Location of /usr/include.  If the COMPILESYSTYPE
                          macro or environment variable is defined, mkmf
                          searches for included files in
                          /$COMPILESYSTYPE/usr/include instead of
                          /usr/include.

           CXXFLAGS       C++ compiler flags.  After searching for included
                          files in the directory currently being processed,
                          mkmf searches in directories named in -I compiler
                          options and then in the /usr/include/CC directory,
                          followed by the /usr/include directory.





 Hewlett-Packard Company            - 2 -   HP-UX 11i Version 2: August 2003






 mkmf(1)                                                             mkmf(1)




           DEST           Directory where the program or library is to be
                          installed.

           EXTHDRS        List of included files external to the current
                          directory.  mkmf automatically updates this macro
                          definition in the makefile if dependency
                          information is being generated.

           FFLAGS         Fortran compiler flags.  After searching for
                          included files in the directory currently being
                          processed, mkmf searches in directories named in
                          -I compiler options, then in the /usr/include
                          directory.

           HDRS           List of included files in the current directory.
                          mkmf automatically updates this macro definition
                          in the makefile.

           INSTALL        Installation program name.

           LD             Link editor name.

           LDFLAGS        Link editor flags.

           LIBRARY        Library name.  This macro also implies the -l
                          option.

           LIBS           List of libraries needed by the link editor to
                          resolve external references.

           MAKEFILE       Makefile name.

           OBJS           List of object files.  mkmf automatically updates
                          this macro definition in the makefile.

           PROGRAM        Program name.

           SRCS           List of source code files.  mkmf automatically
                          updates this macro definition in the makefile.

           SUFFIX         List of additional file name suffixes for mkmf to
                          know about.

           SYSHDRS        List of included files found in the /usr/include
                          directory hierarchy.  mkmf automatically updates
                          this macro definition in the makefile if
                          dependency information is being generated.  If
                          SYSHDRS is omitted from the makefile, mkmf does
                          not generate /usr/include dependencies.





 Hewlett-Packard Company            - 3 -   HP-UX 11i Version 2: August 2003






 mkmf(1)                                                             mkmf(1)




      Both these and any other macro definitions already within the makefile
      can be replaced by definitions on the command line in the form
      macroname=value.  For example, to change the C compiler flags and the
      program name, type the following line:

           mkmf "CFLAGS=-I../include -O" PROGRAM=mkmf

      Note that macro definitions such as CFLAGS with blanks in them must be
      enclosed in double quote (") marks.

    Environment    [Toc]    [Back]
      The environment is read by mkmf.  All variables are assumed to be
      macro definitions with the exception of HDRS, EXTHDRS, SRCS, and OBJS.
      Environment variables are processed after command line macro
      definitions and the macro definitions in a makefile.  The -e option
      forces the environment to override the macro definitions in a
      makefile.

    File Name Suffixes    [Toc]    [Back]
      mkmf can recognize additional file name suffixes, or ignore ones that
      it already recognizes, by specifying suffix descriptions in the SUFFIX
      macro definition.  Each suffix description takes the form .suffix:tI
      where t is a character indicating the contents of the file (s = source
      file, o = object file, h = header file, x = executable file) and I is
      an optional character indicating the include syntax for header files
      (C = C syntax, C++ = C syntax plus the addition of /usr/include/CC as
      a standard search directory, F = Fortran and Ratfor syntax, P = Pascal
      syntax).  The following list shows the default configuration for mkmf:

           .c:sC       C
           .C:sC++     C++
           .f:sF       Fortran
           .h:h        Include files
           .i:h        Pascal include files
           .l:sC       Lex or Lisp
           .o:o        Object files
           .p:sP       Pascal
           .r:sF       Ratfor
           .s:s        Assembler
           .y:sC       Yacc

      For example, to change the object file suffix to .obj, undefine the
      Pascal include file suffix, and prevent Fortran files from being
      scanned for included files, the SUFFIX macro definition could be:

           SUFFIX = .obj:o .i: .f:s

    Include Statement Syntax    [Toc]    [Back]
      The syntax of include statements for C, C++, Fortran, and Pascal
      source code are of the form:




 Hewlett-Packard Company            - 4 -   HP-UX 11i Version 2: August 2003






 mkmf(1)                                                             mkmf(1)




           C/C++:

                     #include "filename"
                     #include filename

                     where # must be the first character in the line.

           Fortran:

                     $include ' filename '$
                     $INCLUDE ' filename '$

                     where $ must be the first character in the line.
                     Alternatively, the $ can be omitted if the include
                     statement starts in column 7.  In either case the
                     trailing $ can be omitted.

           Pascal:

                     $include ' filename '$
                     $INCLUDE ' filename '$

                     where $ must be the first character in the line and the
                     trailing $ is optional.

    User-defined Templates    [Toc]    [Back]
      If mkmf cannot find a makefile within the current directory, it
      normally uses one of the standard makefile templates, C.p or C.l, in
      /usr/ccs/lib/mf unless the user has alternative C.p or C.l template
      files in a directory $PROJECT/lib/mf where $PROJECT is the absolute
      path name of the directory assigned to the PROJECT environment
      variable.

    Options    [Toc]    [Back]
      mkmf recognizes the following options:

           -a             Include source files beginning with a .  in the
                          makefile.

           -c             Suppress ``creating makefile from ...'' message.

           -d             Turn off scanning of source code for include
                          files.  Old dependency information is left
                          untouched in the makefile.

           -e             Environment variables override macro definitions
                          within makefiles.

           -f makefile    Specify an alternative makefile file name.  The
                          default file name is Makefile.




 Hewlett-Packard Company            - 5 -   HP-UX 11i Version 2: August 2003






 mkmf(1)                                                             mkmf(1)




           -i             Prompt the user for the name of the program or
                          library and the directory where it is to be
                          installed.  If a carriage-return is typed in
                          response to each of these queries, mkmf assumes
                          that the default program name is a.out or the
                          default library name is lib.a, and the destination
                          directory is the current directory.

           -l             Force the makefile to be a library makefile.

           -F template    Specify an alternative makefile template path
                          name.  The path name can be relative or absolute.

           -M language    Specify an alternative language-specific makefile
                          template.  The default language is C and the
                          corresponding program and library makefile
                          templates are C.p and C.l, respectively.  mkmf
                          looks for these templates in /usr/ccs/lib/mf or
                          $PROJECT/lib/mf.

 DIAGNOSTICS    [Toc]    [Back]
      Exit status 0 is normal.  Exit status 1 indicates an error.

 WARNINGS    [Toc]    [Back]
      The name of the makefile is included as a macro definition within the
      makefile and must be changed if the makefile is renamed.

      Since executable files are dependent on libraries, standard library
      abbreviations must be expanded to full path names within the LIBS
      macro definition in the makefile.

      Generated dependency information appears after a line in the makefile
      beginning with ###.  This line must not be removed, nor must any other
      information be inserted in the makefile below this line.

      The name of a program or library must not conflict with any predefined
      target names in a makefile.  It is especially important to avoid the
      the name update to prevent make from recursively executing itself an
      infinite number of times.

 AUTHOR    [Toc]    [Back]
      mkmf was developed by the University of California, Berkeley.

 FILES    [Toc]    [Back]
      /usr/ccs/lib/mf/C.p                Standard program makefile template
      /usr/ccs/lib/mf/C.l                Standard library makefile template
      $PROJECT/lib/mf/C.p                User-defined program makefile
                                         template
      $PROJECT/lib/mf/C.l                User-defined library makefile
                                         template




 Hewlett-Packard Company            - 6 -   HP-UX 11i Version 2: August 2003






 mkmf(1)                                                             mkmf(1)




 SEE ALSO    [Toc]    [Back]
      ar(1), ctags(1), ld(1), make(1).

      "Automatic Generation of Make Dependencies", Software-Practice and
      Experience, Walden, K., vol. 14, no. 6, pp. 575-585, June 1984.


 Hewlett-Packard Company            - 7 -   HP-UX 11i Version 2: August 2003
[ Back ]
      
      
 Similar pages
Name OS Title
automake Linux automatically create Makefile.in's from Makefile.am's
xmkmf Tru64 create a Makefile from an Imakefile
ExtUtils::MakeMaker IRIX create an extension Makefile
mmkmf IRIX create a Makefile from an Imakefile
mkdep FreeBSD construct Makefile dependency list
mkdep OpenBSD construct Makefile dependency list
ftnmgen IRIX Invokes the Fortran makefile generator
bsd.port.mk OpenBSD ports tree master Makefile fragment
style.Makefile FreeBSD FreeBSD Makefile file style guide
bsd.regress.mk OpenBSD regression test master Makefile fragment
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service