Skip to content
Enhanced GNU Make - tracing, error reporting, debugging, profiling and more
C Groff Perl Makefile Batchfile DIGITAL Command Language Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config
debian
debugger
doc
glob
htdocs
packaging
po
profile
tests
unittest
w32
.cvsignore
.gitignore
.purify
.travis.yml Try using travis container architecture Oct 8, 2015
AUTHORS
COPYING
ChangeLog.1
ChangeLog.2
INSTALL
Makefile.am
Makefile.ami
NEWS
NEWS.remake
NMakefile.template
README.Amiga
README.VMS
README.customs
README.md
README.remake
README.template
REMAKE.todo
Rakefile Get ready for release. Jun 9, 2011
SCOPTIONS
SMakefile.template
TODO.private
acinclude.m4
alloc.c
alloca.c
amiga.c
amiga.h
ar.c
arscan.c
build.template
build_w32.bat
buildargv.c
buildargv.h
commands.c
commands.h
configure.ac
configure.bat
debug.c
debug.h
debugger.h
default.c
dep.h remake --tasks and remake --targets now works, modulo possible bugs. Dec 29, 2014
dir.c
dosbuild.bat
expand.c
expand.h Start parsing remake trace/debugger options Mar 21, 2011
file.c
file.h
file_basic.c
file_basic.h
filedef.h
function.c
function.h
getloadavg.c
getopt.c
getopt.h
getopt1.c
gettext.h
globals.c
globals.h
gmk-default.h
gmk-default.scm
gnumake.h
guile.c
hash.c
hash.h
implicit.c
implicit.h
job.c
job.h
load.c
loadapi.c
main.c
main.h More global variable separation for modularity May 28, 2015
maintMakefile
make.1
make.h
make.lnk
make_msvc_net2003.sln
make_msvc_net2003.vcproj
makefile.com
makefile.vms
makeint.h
misc.c
mock.c
mock.h
output.c
output.h
prepare_w32.bat
print.c
print.h
profile.c
profile.h Add summary line, termination status May 30, 2015
read.c
read.h
readme.vms
remake.c
remote-cstms.c Files from GNU Make 4.1 release. Dec 28, 2014
remote-stub.c
rule.c
rule.h
signame.c
strcache.c Files from GNU Make 4.1 release. Dec 29, 2014
subproc.bat
trace.c
trace.h
types.h
variable.c
variable.h
version.c
vmsdir.h
vmsfunctions.c
vmsify.c
vmsjobs.c
vpath.c
vpath.h

README.md

Build Status

Patched GNU Make 4.1 sources to add improved error reporting, tracing, target listing, graph visualization, and profiling. It also contains debugger. See the remake-3-82 branch for a patched GNU Make 3.82.

Tracing and Debugging

Although there's a full debugger here, most of the time I can get by using no options since normal output is a little more verbose and detailed. When that isn't enough, I use the --trace or -x option, e.g:

remake -x <other make options>

But if you want the full debugger, use --debugger or -X:

remake -X <other make options>

To enter the debugger from inside a Makefile, use the built-in function $(debugger). For example here is a Makefile:

all:
    $(debugger 'arg not used')
    echo Nothing here, move along

When GNU Make is inside the all target, it will make a call to the debugger. The string after debugger is not used, but seems to be needed to get parsing right.

Getting Makefile Information

If there is project that you want a list of "interesting" Makefile targets, try:

remake --tasks

If the project has commented its Makefile using remake-friendly comments you may get output like this:

ChangeLog   # create ChangeLog fom git log via git2cl
build   # Do what it takes to build software locally
check   # Run all tests
clean   # Remove OS- and platform-specific derived files.
dist    # Create source and binary distribution
distclean   # Remove all derived files. Like "clean" on steroids.
install # Install package
test    # Same as check

To get a list of all targets, interesting or not, use --targets instead of --tasks.

To build:

$ autoreconf -i
$ ./configure
$ make update
$ make && make check && sudo make install

Profiling and Visualization

To profile and get a graph of targets encountered used the --profile option. For example:

remake --profile # target...

remake outputs callgrind profile format data which can be used with kcachegrind or other tools that work with this format.

See also

See also https://github.com/rocky/remake/wiki and https://github.com/rocky/remake/blob/master/profile/README.md

Something went wrong with that request. Please try again.