]> git.llucax.com Git - software/makeit.git/log
software/makeit.git
15 years agoAdd a special variable for the full current makefile directory
Leandro Lucarella [Fri, 18 Sep 2009 15:37:40 +0000 (12:37 -0300)]
Add a special variable for the full current makefile directory

The $C variable (which stores the path to the current makefile relative to
the top-level directory) is renamed to $S and $C now stores the full
(absolute) path to the current makefile.

15 years agoRename test project to makeit
Leandro Lucarella [Fri, 18 Sep 2009 13:25:32 +0000 (10:25 -0300)]
Rename test project to makeit

There is a already GNU Make fork called remake.

15 years agoAdd install and uninstall targets
Leandro Lucarella [Fri, 18 Sep 2009 03:09:24 +0000 (00:09 -0300)]
Add install and uninstall targets

The build system now support installing, supporting both $(prefix) and
$(DESTDIR) variables. A few helper functions are added to ease installation
and the $I variable is provided as the base directory where stuff should
be installed (i.e. $(DESTDIR)$(prefix)). The $(prefix) is passed to
compiled programs as a pre-processor define (PREFIX) and targets are
re-built when it changes.

Programs should "register" files to install adding them to the $(install)
variable (similar as they register targets to compile in the $(all)
variable).

A few common rules are included in Lib.mak to install binaries and
libraries. To install other type of files the rule should be provided by
the makefile writer (but a function is provided to make this easy).

The test project is updated to install binaries, libraries and headers.

15 years agoDon't use abbr except when printing pretty messages
Leandro Lucarella [Fri, 18 Sep 2009 00:39:32 +0000 (21:39 -0300)]
Don't use abbr except when printing pretty messages

This avoids the build system to break if abbr function have a bug (which
should affect only to pretty printed messages).

15 years agoImprove abbr function
Leandro Lucarella [Fri, 18 Sep 2009 00:38:59 +0000 (21:38 -0300)]
Improve abbr function

When used from sub-directories, if the file isn't inside the project's
top-level directory, it yields a bogus pseudo-relative-absolute name.
This patch fixes that.

15 years agoRearrange detection of changes in build flags
Leandro Lucarella [Thu, 17 Sep 2009 17:09:29 +0000 (14:09 -0300)]
Rearrange detection of changes in build flags

Move the code to detect flags changes to trigger a rebuild together,
allowing more accurate messages and adding new variables to the list of
variables to monitor for changes to trigger a rebuild.

15 years agoImprove include directory handling
Leandro Lucarella [Thu, 17 Sep 2009 17:07:25 +0000 (14:07 -0300)]
Improve include directory handling

Remove the $J variable, it was useless for now. Rename $I to the more
verbose $(INCLUDE_DIR) since it won't be used very often by the user
(makefile writer nor makefile user).

The include directory symlink is now handled per-project, allowing the
inclusion of sub-project headers more naturally (without requiring to
prefix the parent project name and allowing the sub-project to keep its
original include directory name). The $P variable is not needed anymore
because of this.

The makefiles functions changed a little to allow per-project include
directory making Lib.mak not include any other files; because of that the
"all" rule now uses the "secondary expansion" to calculate the
prerequisites (the $(all) variable has not been populated yet when the
"all" rule is defined).

The Toplevel.mak files are now guarded to avoid multiple inclusions. This
should be not a problem since now the Toplevel.mak should not be changed,
is like an extension to Lib.mak that the user shouldn't mdify unless
he is hacking the build system.

The subproj is now renamed to otherproj to illustrate how the sub-directory
where it is stored doesn't have to match the name of the sub-project.

The pre-compiled headers feature is a little broken for now because the
system includes detection is too weak to differentiate things real system
includes from things included from $(INCLUDE_DIR).

15 years agoMake internal $V flag to store @ when pretty printing
Leandro Lucarella [Thu, 17 Sep 2009 14:20:03 +0000 (11:20 -0300)]
Make internal $V flag to store @ when pretty printing

Verbosity flag ($V variable) let the user decide if he want to see nice
small messages ($V empty) or the standard make output displaying the raw
commands as they are executed ($V non-empty).

Now the meaning of this flag is reversed (and stores "@" when non-empty)
to let the Makefile writer to easily silence commands dependending on the
verbosity flag. When writing a rule, just prepend $V to each action you
want to conditionally silence depending on the verbosity flag.

15 years agoMake subprojects read the Lib.mak from the parent project
Leandro Lucarella [Thu, 17 Sep 2009 13:47:45 +0000 (10:47 -0300)]
Make subprojects read the Lib.mak from the parent project

By moving the Config.mak inclusion to Toplevel.mak we can read the
configuration before anything else, letting the user to change the
top-level path ($T) for example, which can be useful to make the subproject
read the Lib.mak of the parent project for example.

15 years agoMove "all" taget to Lib.mak
Leandro Lucarella [Thu, 17 Sep 2009 13:43:13 +0000 (10:43 -0300)]
Move "all" taget to Lib.mak

To be able to do this, the top-level Build.mak is included in Lib.mak too,
because the $(all) variable should be populated before defining the "all"
target, so it can have $(all) as a prerequisite.

15 years agoInitial import of the all mighty make based build system
Leandro Lucarella [Thu, 17 Sep 2009 13:30:56 +0000 (10:30 -0300)]
Initial import of the all mighty make based build system

This is a test/example of a nice make based build system that support
automatic dependencies, variants, separated build directory, automatic
generation of pre-compiled header, subproject embedding and some other
goodies.

The only important file is Lib.mak, all the rest is just an usage example
and/or test.