Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 8c773d9f60e1c67a662091d58fe66f37 > files > 115

lm_sensors-2.10.5-3mdv2008.1.x86_64.rpm

The Makefiles in this package are rather advanced. They are partially based
on the article "Recursive Make considered Harmful", written by Peter Miller:
  http://miller.emu.id.au/pmiller/books/rmch/

There is one big Makefile in the root of this package. It includes many
other files; one for each directory in which source code is found. These
included files are called 'Module.mk'.

There are several interesting targets defined through this Makefile:
  * all
    Create everything in all directories.
  * user
    Build only user-space tools.
  * install
    Install everything from all directories.
  * user_install
    Install only user-space tools.
  * user_uninstall
    Uninstall user-space tools.
  * clean
    Remove anything which can be regenerated from all directories. A call
    of 'make clean' (without any other targets) will ignore any .d files;
    this is useful when they are out of date (and prevent the calling of
    any other target).
  * version
    Regenerate version.h, using the current date for the date-stamp, and
    a user-supplied version number.
  * package
    Create a .tar.gz file containing everything except the SVN directories.

The best way to understand the Module.mk subfiles is to examine one of them,
for example lib/Module.mk. They are not too difficult to understand.

There are several variables which can be set in the main Makefile. You can
also specify them on the command-line; this overrules any definitions 
within the Makefile. For example: 'make all WARN=1' will enable all warnings.
Examine main Makefile to see which ones are available. The most important
ones for developers:
  * WARN
    Set to 1 to enable many compiler warnings.
  * DEBUG
    Set to 1 to enable any debugging code. Note that debugging code should
    only output more information, and never make the code mis-behave.

Several files are generated by Makefiles:
  * .d
    Dependency files for modules. Automatically generated.
  * .rd
    Dependency files for executables. Automatically generated.
  * .ao
    Dependency files for static libraries. Automatically generated.
  * .lo
    Dependency files for shared libraries. Automatically generated.
  * .o
    Generated modules
  * .ro
    Object files for executables. They will be linked together to create
    the executable. This extension is used to distinguish them from 
    modules (which end on .o). Also, using a different extensions makes
    the Makefile fragments much simpler.
  * .ao
    Object files for static libraries
  * .lo
    Object files for shared libraries

There are lots of comments within the main Makefile. Please read them if
you want to know more.