Make: A Build Automation Tool
In software development, Make is a build automation tool that automatically builds executable programs and libraries from source code by reading files called Makefiles which specify how to derive the target program. Though integrated development environments and language-specific compiler features can also be used to manage a build process, Make remains widely used, especially in Unix and Unix-like operating systems.
Besides building programs, Make can be used to manage any project where some files must be updated automatically from others whenever the others change.
GNU Make
GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program’s source files.
Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.
- GNU Make
- GNU Make Manual v3.8.2
- Managing Projects with GNU Make
- Managing Projects with GNU Make: Chapter 12 Debugging Makefiles
- Write Makefile with me
- Generate Makefiles via Automake
Print the data base (rules and variable values) via command make -pq
:
# GNU Make 3.81
# Copyright (C) 2006 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# This program built for x86_64-redhat-linux-gnu
# Make data base, printed on Thu Mar 21 11:20:45 2013
# Variables
# environment
NPX_PLUGIN_PATH = /opt/jdk_1.6.0-17/jre/plugin/platform/ns7
# environment
LSF_HOME = /opt/lsf_7.0.6
# automatic
?F = $(notdir $?)
# automatic
<D = $(patsubst %/,%,$(dir $<))
# environment
LSF_EAUTH_SERVER = mbatchd@dg01
# environment
XTENSAD_LICENSE_FILE = /opt/lic/share/license/site/cadadm/tensilica/tensilica_lic:/opt/lic/share/license/site/cadadm/tensilica/tensilica_iind_lic:/opt/lic/share/license/site/lmadmin/tensilica/tensilica_umg_lic:/opt/lic/share/license/site/lmadmin/tensilica/tensilica_vlb_lic
# environment
CNLSF_BATCH_PATH = /vobs/tools/urania/batch:/home/comneon/share/cnlsf-templates:.
# environment
LSB_JOBFILENAME = /home/cweixiax/.lsbatch/1363856608.1004425
# environment
MODULEPATH = /opt/site/modulefiles/local:/opt/modulefiles/admin:/opt/modulefiles/dbs:/opt/modulefiles/eda:/opt/modulefiles/misc:/opt/modulefiles/office:/opt/modulefiles/prog:/opt/modulefiles/win:/opt/modulefiles/unix:/opt/modulefiles/docu:/home/comneon/etc/modules:/opt/xtensa-modules/modules
# default
CWEAVE = cweave
# environment
LSB_BATCH_JID = 1004425
# automatic
?D = $(patsubst %/,%,$(dir $?))
# environment
ECLIPSE_HOME = /opt/eclipse_3.7.1
# environment
GTK_RC_FILES = /etc/gtk/gtkrc:/home/cweixiax/.gtkrc-1.2-gnome2
# environment
DESKTOP_STARTUP_ID =
# environment
IFX_LSF_HOME = /home/cweixiax
# automatic
@F = $(notdir $@)
# environment
XMODIFIERS = @im=none
# default
PC = pc
# makefile
CURDIR := /home/cweixiax
# makefile
SHELL = /bin/sh
# default
RM = rm -f
# environment
NX_ROOT = /home/cweixiax/.nx
# environment
LSB_NTRIES = 5
# environment
CLEARCASE_CMDLINE = setview -exec sview_backend cweixiax_130225_sms03421960.av1.dv
# default
PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F
# environment
LSB_CHKFILENAME = /home/cweixiax/.lsbatch/1363856608.1004425
# default
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
# default
OUTPUT_OPTION = -o $@
# environment
LSF_SERVERDIR = /opt/lsf_7.0.6/etc
# default
COMPILE.cpp = $(COMPILE.cc)
# environment
LSF_LOGDIR = /var/lsf/log
# automatic
@D = $(patsubst %/,%,$(dir $@))
# default
LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# automatic
*D = $(patsubst %/,%,$(dir $*))
# environment
LSB_QUEUE = interactive
# environment
DBUS_SESSION_BUS_ADDRESS = unix:abstract=/tmp/dbus-sn4RJpCx8G,guid=23840ec2158158a75e9b4000514accc5
# environment
LS_JOBPID = 5540
# default
CC = cc
# environment
workAlgorithms = /vobs/lte_ip_algorithms
# environment
MACHTYPE = x86_64
# environment
_MODULESBEGINENV_ = /home/cweixiax/.modulesbeginenv
# environment
INFOPATH = /opt/TWWfsw/info
# environment
LSF_EAUTH_AUX_PASS = yes
# default
CHECKOUT,v = +$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)
# environment
GNOME_KEYRING_SOCKET = /usr/tmp/keyring-P6annr/socket
# environment
LESSOPEN = |/usr/bin/lesspipe.sh %s
# environment
LSB_DJOB_NUMPROC = 1
# default
CPP = $(CC) -E
# environment
SSH_CONNECTION = 127.0.0.1 41950 127.0.0.1 22
# default
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
LSB_EEXEC_REAL_GID =
# default
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
# environment
NXDIR = /usr/NX
# environment
LSB_ECHKPNT_RSH_CMD = ssh
# environment
PATH = /opt/bullseye_8.7.4/bin:/opt/jdk_1.6.0-17/bin:/opt/jdk_1.6.0-17/jre/bin:/vobs/lte_ip_tools/bin:/opt/perl_5.8.8/bin:/opt/xtensa-tools_9.0.5/RD-2012.5-linux/XtensaTools/bin:/opt/eclipse_3.7.1/bin:/usr/atria/bin:/opt/cups-1.1.20/bin:/opt/lsf_7.0.6/bin:/usr/lib64/qt-3.3/bin:/usr/NX/bin:/usr/kerberos/bin:/bin:/usr/bin::.:/home/cweixiax/bin:/usr/ucb:/home/comneon/bin:/opt/TWWfsw/bin:/usr/local/bin
# environment
COMNEON_SHELL = tcsh
# default
TEXI2DVI = texi2dvi
# default
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
YACC = yacc
# environment
SESSION_MANAGER =
# environment
IFX_CDSFRB_LSF_PATH = /opt/lsf_7.0.6/exec/cdsfrb_lsf7.0
# default
COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)
# default
ARFLAGS = rv
# default
LINK.C = $(LINK.cc)
# default
LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
VENDOR = unknown
# environment
WINDOWID = 39845967
# environment
OSTYPE = linux
# default
COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c
# makefile
MAKEFILE_LIST :=
# default
LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
# default
LINT = lint
# environment
LPATH =
# environment
LSB_DJOB_HB_INTERVAL = 10
# environment
LSB_HOSTS = dgsxhw01
# default
YACC.y = $(YACC) $(YFLAGS)
# environment
CLEARCASE_ROOT = /view/cweixiax_130225_sms03421960.av1.dv
# environment
LSB_EEXEC_REAL_UID =
# environment
LSB_SUB_HOST = dgsxlognx02
# environment
LSF_ENVDIR = /opt/lsf_7.0.6/share/conf/envdir/dg01
# environment
BULLS_ROOT = /opt/bullseye_8.7.4
# default
.FEATURES := target-specific order-only second-expansion else-if archives jobserver check-symlink
# environment
LSB_EXIT_PRE_ABORT = 99
# environment
COMNEON_SVIEW = cweixiax_130225_sms03421960.av1.dv
# environment
LS_COLORS = no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
# environment
XAPPLRESDIR = /opt/TWWfsw/app-defaults
# environment
SSH_AUTH_SOCK = /tmp/ssh-puaVzZ7508/agent.7508
# environment
LSB_USER_BIND_JOB = NONE
# default
GET = get
# automatic
%F = $(notdir $%)
# environment
XTENSA_RELEASE = RD-2012.5
# environment
LM_PROJECT = IMC
# environment
DISPLAY = dgsxlognx02:1053.0
# default
COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
CTANGLE = ctangle
# default
.LIBPATTERNS = lib%.so lib%.a
# environment
CNGRID_BATCH_PATH = /vobs/tools/urania/batch:/home/comneon/share/cngrid-templates:.
# environment
PWD = /home/cweixiax
# environment
LSB_JOBID = 1004425
# environment
NX_SYSTEM = /usr/NX
# environment
LSB_JOB_EXECUSER = cweixiax
# environment
INPUTRC = /etc/inputrc
# default
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)
# default
PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F
# environment
SSH_AGENT_PID = 7561
# default
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# automatic
<F = $(notdir $<)
# environment
workAlgorithmsSw = /vobs/lte_ip_algorithms/lteSw
# environment
LSF_LIBDIR = /opt/lsf_7.0.6/lib
# environment
G_BROKEN_FILENAMES = 1
# environment
LSB_JOBRES_CALLBACK = 38145@dgsxhw01
# environment
CUPS_DATADIR = /opt/cups-1.1.20/share/cups
# environment
MANPATH = /opt/jdk_1.6.0-17/man:/opt/perl_5.8.8/man:/opt/cups-1.1.20/man:/opt/lsf_7.0.6/share/man:/usr/share/man:/opt/Modules/man:/usr/man:/usr/atria/doc/man:/opt/TWWfsw/man:/home/swmdev/opticm/man:/usr/local/man
# default
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)
# environment
HOME = /home/cweixiax
# environment
LSB_EXEC_CLUSTER = dg01
# environment
LD_LIBRARY_PATH = /opt/gcc_4.1.2/linux40_64/lib64:/vobs/lte_ip_tools/lib:/vobs/msw_fw_4g_src/fw/bwcCommon/mk/srec/lib:/opt/xtensa-tools_9.0.5/RD-2012.5-linux/XtensaTools/lib:/opt/lsf_7.0.6/lib
# environment
CUPS_DOCROOT = /opt/cups-1.1.20/share/doc/cups
# environment
LSB_MCPU_HOSTS = dgsxhw01 1
# environment
CUPS_ROOT = /opt/cups-1.1.20
# environment
NX_CUPS_BIN = /usr/bin
# environment
MODULESHOME = /opt/Modules
# environment
LOGNAME = cweixiax
# default
LD = ld
# environment
LSF_INVOKE_CMD = bsub
# environment
TEXINPUTS = /opt/TeX/share/texmf.local/tex//:
# default
CO = co
# environment
GNOME_DESKTOP_SESSION_ID = Default
# automatic
^D = $(patsubst %/,%,$(dir $^))
# environment
HOSTNAME = dgsxhw01
# environment
MAKELEVEL := 0
# environment
MODULE_VERSION_STACK = 3.1.6
# environment
SSH_ASKPASS = /usr/libexec/openssh/gnome-ssh-askpass
# environment
MOZILLA_FIVE_HOME = /opt/firefox_2.0/lib/firefox-2.0.0.17
# environment
LSB_ACCT_FILE = /tmp2/.1363856608.1004425.acct
# environment
LSB_INTERACTIVE = Y
# environment
LSF_EAUTH_CLIENT = user
# environment
CUPS_SERVER = cupsprt1
# environment
workSoftware = /vobs/msw_fw_4g_src/fw
# environment
SHLVL = 9
# environment
LSFUSER = cweixiax
# environment
LS_SUBCWD = /home/cweixiax/
# environment
BSUB_STDERR = y
# default
AS = as
# default
PREPROCESS.S = $(CC) -E $(CPPFLAGS)
# environment
workIpXact = /vobs/lte_ip_ipxact
# environment
JAVA_HOME = /opt/jdk_1.6.0-17
# default
COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
MAKE_VERSION := 3.81
# environment
USER = cweixiax
# default
FC = f77
# environment
COMNEON_PROMPT_STR = [CN-ENV]
# environment
CCASE_AUDIT_TMPDIR = /tmp2
# environment
LSB_DJOB_RU_INTERVAL = 10
# environment
LSF_LIM_API_NTRIES = 1
# environment
CLASSPATH = .
# default
MAKE = $(MAKE_COMMAND)
# environment
CMN_MODULEP_X = yes
# automatic
%D = $(patsubst %/,%,$(dir $%))
# environment
COMNEON_PROMPT_STYLE = normal
# environment
SSH_ORIGINAL_COMMAND = /usr/NX/bin/nxnode
# environment
LS_EXEC_T = START
# default
AR = ar
# default
WEAVE = weave
# default
MAKE_COMMAND := make
# default
LINK.cpp = $(LINK.cc)
# default
F77 = $(FC)
# default
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# environment
MAGIC_PATH = /opt/cc_scripts/comneon/release/cm_tools/user/settings/cc:/opt/rational/clearcase/config/magic
# environment
BSUB_BLOCK_EXEC_HOST =
# default
.VARIABLES :=
# environment
TMPDIR = /tmp2
# environment
QTLIB = /usr/lib64/qt-3.3/lib
# automatic
*F = $(notdir $*)
# environment
XTENSA_SYSTEM = /opt/xtensa-modules/XtDevShared/XtensaRegistry/RD-2012.5-linux
# environment
SBD_KRB5CCNAME_VAL =
# default
LEX = lex
# makefile
MAKEFLAGS = qp
# environment
MFLAGS = -qp
# environment
SSH_CLIENT = 127.0.0.1 41950 22
# environment
MAIL = /var/spool/mail/cweixiax
# environment
LOADEDMODULES = generic:sysv:lsf/current:cups/1.1.20:comneon/current:clearcase/local:freeware/9.0:X11/R6:opticm/current:eclipse/3.7.1:xtensa/tools/9.0.5:perl/5.8.8:FW4GBuildEnv/1.0:jdk/1.6.0-17:bullseye/root/8.7.42:bullseye/8.7.42
# default
LEX.l = $(LEX) $(LFLAGS) -t
# environment
LSF_BINDIR = /opt/lsf_7.0.6/bin
# automatic
+D = $(patsubst %/,%,$(dir $+))
# environment
KDEDIR = /usr
# default
COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c
# automatic
+F = $(notdir $+)
# default
M2C = m2c
# environment
LSF_CREATED_TMPDIR = no
# environment
NX_TEMP = /tmp
# environment
LSB_UNIXGROUP_INT = comneong
# environment
LSB_DJOB_HOSTFILE = /home/cweixiax/.lsbatch/1363856608.1004425.hostfile
# environment
CLEARCASE_AVOBS = /vobs/msw_fw_4g_src /vobs/dwdtools /vobs/umts_fw_dev /vobs/tools /vobs/system-build /vobs/lte_ip_algorithms /vobs/mhw_drv_src /vobs/msw_tools
# environment
COLORTERM = gnome-terminal
# default
MAKEFILES :=
# environment
XLSF_UIDDIR = /opt/lsf_7.0.6/lib/uid
# environment
_LMFILES_ = /opt/modulefiles/unix/generic:/opt/modulefiles/unix/sysv:/opt/site/modulefiles/local/lsf/current:/opt/modulefiles/misc/cups/1.1.20:/home/comneon/etc/modules/comneon/current:/opt/modulefiles/prog/clearcase/local:/opt/modulefiles/misc/freeware/9.0:/opt/modulefiles/win/X11/R6:/home/comneon/etc/modules/opticm/current:/opt/modulefiles/prog/eclipse/3.7.1:/opt/modulefiles/eda/xtensa/tools/9.0.5:/opt/modulefiles/prog/perl/5.8.8:/opt/modulefiles/prog/FW4GBuildEnv/1.0:/opt/modulefiles/prog/jdk/1.6.0-17:/opt/modulefiles/prog/bullseye/root/8.7.42:/opt/modulefiles/prog/bullseye/8.7.42
# environment
KDE_IS_PRELINKED = 1
# environment
NX_CLIENT = /usr/NX/bin/nxclient
# default
CXX = g++
# environment
LSB_SHMODE = y
# environment
LSB_TRAPSIGS = trap # 15 10 12 2 1
# environment
MODULE_VERSION = 3.1.6
# default
COFLAGS =
# environment
EDITOR = vi
# environment
LSB_JOBNAME = entercn_backend tcsh
# environment
LC_ALL = C
# environment
BWC_ENV = DONT_CARE
# default
COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)
# default
COMPILE.C = $(COMPILE.cc)
# environment
HOSTTYPE = x86_64-linux
# environment
workArchitecture = /vobs/lte_ip_architecture
# default
TANGLE = tangle
# environment
LSB_JOBRES_PID = 5540
# automatic
^F = $(notdir $^)
# environment
CN_PLATFORM = Linux
# environment
LSF_VERSION = 23
# default
LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
SUFFIXES := .out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el
# environment
LSB_JOBINDEX = 0
# environment
GROUP = comneong
# default
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
# default
.INCLUDE_DIRS = /usr/include /usr/local/include /usr/include
# environment
workAlgorithmsHw = /vobs/lte_ip_algorithms/lteHw
# environment
MORE = -c
# environment
LSB_JOB_STARTER = /opt/lsf_7.0.6/share/exec/interactive_jobstarter
# environment
QTINC = /usr/lib64/qt-3.3/include
# environment
QTDIR = /usr/lib64/qt-3.3
# default
MAKEINFO = makeinfo
# makefile
.DEFAULT_GOAL :=
# default
TEX = tex
# environment
LANG = C
# environment
TERM = xterm
# default
F77FLAGS = $(FFLAGS)
# default
LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
TMPDIR2 = /tmp2
# environment
LSB_JOBEXIT_STAT = 0
# environment
XTENSA_HOME = /opt/xtensa-tools_9.0.5
# environment
HOST = dgsxhw01
# variable set hash-table stats:
# Load=241/1024=24%, Rehash=0, Collisions=45/265=17%
# Pattern-specific Variable Values
# No pattern-specific variable values.
# Directories
# SCCS: could not be stat'd.
# . (device 32, inode 3572416): 94 files, 51 impossibilities.
# RCS: could not be stat'd.
# 94 files, 51 impossibilities in 3 directories.
# Implicit Rules
%.out:
%.a:
%.ln:
%.o:
%: %.o
# commands to execute (built-in):
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.c:
%: %.c
# commands to execute (built-in):
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.ln: %.c
# commands to execute (built-in):
$(LINT.c) -C$* $<
%.o: %.c
# commands to execute (built-in):
$(COMPILE.c) $(OUTPUT_OPTION) $<
%.cc:
%: %.cc
# commands to execute (built-in):
$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.cc
# commands to execute (built-in):
$(COMPILE.cc) $(OUTPUT_OPTION) $<
%.C:
%: %.C
# commands to execute (built-in):
$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.C
# commands to execute (built-in):
$(COMPILE.C) $(OUTPUT_OPTION) $<
%.cpp:
%: %.cpp
# commands to execute (built-in):
$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.cpp
# commands to execute (built-in):
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
%.p:
%: %.p
# commands to execute (built-in):
$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.p
# commands to execute (built-in):
$(COMPILE.p) $(OUTPUT_OPTION) $<
%.f:
%: %.f
# commands to execute (built-in):
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.f
# commands to execute (built-in):
$(COMPILE.f) $(OUTPUT_OPTION) $<
%.F:
%: %.F
# commands to execute (built-in):
$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.F
# commands to execute (built-in):
$(COMPILE.F) $(OUTPUT_OPTION) $<
%.f: %.F
# commands to execute (built-in):
$(PREPROCESS.F) $(OUTPUT_OPTION) $<
%.r:
%: %.r
# commands to execute (built-in):
$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.r
# commands to execute (built-in):
$(COMPILE.r) $(OUTPUT_OPTION) $<
%.f: %.r
# commands to execute (built-in):
$(PREPROCESS.r) $(OUTPUT_OPTION) $<
%.y:
%.ln: %.y
# commands to execute (built-in):
$(YACC.y) $<
$(LINT.c) -C$* y.tab.c
$(RM) y.tab.c
%.c: %.y
# commands to execute (built-in):
$(YACC.y) $<
mv -f y.tab.c $@
%.l:
%.ln: %.l
# commands to execute (built-in):
@$(RM) $*.c
$(LEX.l) $< > $*.c
$(LINT.c) -i $*.c -o $@
$(RM) $*.c
%.c: %.l
# commands to execute (built-in):
@$(RM) $@
$(LEX.l) $< > $@
%.r: %.l
# commands to execute (built-in):
$(LEX.l) $< > $@
mv -f lex.yy.r $@
%.s:
%: %.s
# commands to execute (built-in):
$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.s
# commands to execute (built-in):
$(COMPILE.s) -o $@ $<
%.S:
%: %.S
# commands to execute (built-in):
$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.S
# commands to execute (built-in):
$(COMPILE.S) -o $@ $<
%.s: %.S
# commands to execute (built-in):
$(PREPROCESS.S) $< > $@
%.mod:
%: %.mod
# commands to execute (built-in):
$(COMPILE.mod) -o $@ -e $@ $^
%.o: %.mod
# commands to execute (built-in):
$(COMPILE.mod) -o $@ $<
%.sym:
%.def:
%.sym: %.def
# commands to execute (built-in):
$(COMPILE.def) -o $@ $<
%.h:
%.info:
%.dvi:
%.tex:
%.dvi: %.tex
# commands to execute (built-in):
$(TEX) $<
%.texinfo:
%.info: %.texinfo
# commands to execute (built-in):
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
%.dvi: %.texinfo
# commands to execute (built-in):
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
%.texi:
%.info: %.texi
# commands to execute (built-in):
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
%.dvi: %.texi
# commands to execute (built-in):
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
%.txinfo:
%.info: %.txinfo
# commands to execute (built-in):
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
%.dvi: %.txinfo
# commands to execute (built-in):
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
%.w:
%.c: %.w
# commands to execute (built-in):
$(CTANGLE) $< - $@
%.tex: %.w
# commands to execute (built-in):
$(CWEAVE) $< - $@
%.ch:
%.web:
%.p: %.web
# commands to execute (built-in):
$(TANGLE) $<
%.tex: %.web
# commands to execute (built-in):
$(WEAVE) $<
%.sh:
%: %.sh
# commands to execute (built-in):
cat $< >$@
chmod a+x $@
%.elc:
%.el:
(%): %
# commands to execute (built-in):
$(AR) $(ARFLAGS) $@ $<
%.out: %
# commands to execute (built-in):
@rm -f $@
cp $< $@
%.c: %.w %.ch
# commands to execute (built-in):
$(CTANGLE) $^ $@
%.tex: %.w %.ch
# commands to execute (built-in):
$(CWEAVE) $^ $@
%:: %,v
# commands to execute (built-in):
$(CHECKOUT,v)
%:: RCS/%,v
# commands to execute (built-in):
$(CHECKOUT,v)
%:: RCS/%
# commands to execute (built-in):
$(CHECKOUT,v)
%:: s.%
# commands to execute (built-in):
$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<
%:: SCCS/s.%
# commands to execute (built-in):
$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<
# 86 implicit rules, 5 (5.8%) terminal.
# Files
# Not a target:
.web.p:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(TANGLE) $<
# Not a target:
.l.r:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LEX.l) $< > $@
mv -f lex.yy.r $@
# Not a target:
.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.F.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.F) $(OUTPUT_OPTION) $<
# Not a target:
.l:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.y.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(YACC.y) $<
$(LINT.c) -C$* y.tab.c
$(RM) y.tab.c
# Not a target:
.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.y:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.def.sym:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.def) -o $@ $<
# Not a target:
.p.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.p) $(OUTPUT_OPTION) $<
# Not a target:
.p:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.txinfo.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
# Not a target:
.a:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.l.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
@$(RM) $*.c
$(LEX.l) $< > $*.c
$(LINT.c) -i $*.c -o $@
$(RM) $*.c
# Not a target:
.w.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(CTANGLE) $< - $@
# Not a target:
.texi.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
# Not a target:
.sh:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
cat $< >$@
chmod a+x $@
# Not a target:
.cc:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.cc.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.cc) $(OUTPUT_OPTION) $<
# Not a target:
.def:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.SUFFIXES: .out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.c.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.c) $(OUTPUT_OPTION) $<
# Not a target:
Makefile:
# A default, MAKEFILES, or -include/sinclude makefile.
# Implicit rule search has been done.
# File does not exist.
# File has been updated.
# Failed to be updated.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%
# Not a target:
.r.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.r) $(OUTPUT_OPTION) $<
# Not a target:
.r:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
makefile:
# A default, MAKEFILES, or -include/sinclude makefile.
# Implicit rule search has been done.
# File does not exist.
# File has been updated.
# Failed to be updated.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%
# Not a target:
.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.elc:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.l.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
@$(RM) $@
$(LEX.l) $< > $@
# Not a target:
.out:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.C:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.r.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(PREPROCESS.r) $(OUTPUT_OPTION) $<
# Not a target:
.S:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.texinfo.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
# Not a target:
.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.w.tex:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(CWEAVE) $< - $@
# Not a target:
.c.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINT.c) -C$* $<
# Not a target:
.s.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.s) -o $@ $<
# Not a target:
.s:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.texinfo.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<
# Not a target:
.el:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.texinfo:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.y.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(YACC.y) $<
mv -f y.tab.c $@
# Not a target:
.web.tex:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(WEAVE) $<
# Not a target:
.texi.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
# Not a target:
.DEFAULT:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.h:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.tex.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(TEX) $<
# Not a target:
.cpp.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
# Not a target:
.cpp:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.C.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.C) $(OUTPUT_OPTION) $<
# Not a target:
.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.texi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.txinfo:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.tex:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.txinfo.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@
# Not a target:
.ch:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
GNUmakefile:
# A default, MAKEFILES, or -include/sinclude makefile.
# Implicit rule search has been done.
# File does not exist.
# File has been updated.
# Failed to be updated.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%
# Not a target:
.S.s:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(PREPROCESS.S) $< > $@
# Not a target:
.mod:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.mod) -o $@ -e $@ $^
# Not a target:
.mod.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.mod) -o $@ $<
# Not a target:
.F.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(PREPROCESS.F) $(OUTPUT_OPTION) $<
# Not a target:
.w:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.S.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.S) -o $@ $<
# Not a target:
.F:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.web:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.sym:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# Not a target:
.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@
# Not a target:
.f.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):
$(COMPILE.f) $(OUTPUT_OPTION) $<
# files hash-table stats:
# Load=69/1024=7%, Rehash=0, Collisions=276/1520=18%
# VPATH Search Paths
# No `vpath' search paths.
# No general (`VPATH' variable) search path.
# # of strings in strcache: 0
# # of strcache buffers: 0
# strcache size: total = 0 / max = 0 / min = 4096 / avg = 0
# strcache free: total = 0 / max = 0 / min = 4096 / avg = 0
# Finished Make data base on Thu Mar 21 11:20:45 2013
eMake
Electric Make (eMake), the main build application in ElectricAccelerator, is a new Make version invoked interactively or through build scripts. It reads makefiles in several different formats, including GNU Make and Microsoft NMAKE. Electric Make distributes commands to the cluster for remote execution and services file requests.
chenwx@chenwx ~ /app/emake/5.4.0/bin/emake -v
Electric Make version 5.4.0.37058 32-bit (build_5.4_37058_OPT_2011.03.07_18:11:12)
Copyright (C) 2002-2011 Electric Cloud, Inc.
All rights reserved.
GNU Make 3.81 emulation
chenwx@chenwx ~ /app/emake/5.4.0/bin/emake -help
Usage: emake [options] [target] ...
Basic options:
--emake-cm=HOST[:PORT] Cluster Manager host/port
--emake-emulation=MODE Make emulation mode (gmake, gmake3.81, gmake3.80, gmake3.79.1, ant, ant17, ant18)
--emake-root=PATH EFS root directory list
--help Display this message.
--version Display the product version.
Build attributes:
--emake-build-label=LABEL Custom build label
--emake-class=CLASS Build class
--emake-impersonate-user=NAME
Run build as this Cluster Manager user.
--emake-priority=LEVEL Build priority. LEVEL is one of:
low or normal (default normal)
--emake-resource=RESOURCE Resource requirement for this build.
Annotation options:
--emake-annofile=FILE (cluster mode only) Location of annotation output
--emake-annodetail=LIST Level of detail to include in annotation output,
where LIST is a comma separated list of any of
the following values:
basic : Basic annotation
env : Extended environment tracking
file : Files read or written
history : Serialization details
lookup : All file names accessed
registry: Registry updates (Windows only)
waiting : Complete dependency graph
--emake-annoupload=[01] (cluster mode only) Enable/disable uploading of
annotation to the cluster manager.
History options:
--emake-autodepend=[01] Turn off/on automatic dependency generation
(default off)
--emake-collapse=[01] Turn off/on history collapsing (default on)
--emake-history=MODE History mode determines how to update the history
file at the end of the build, one of:
create : Replace contents
merge : Merge new history with history
from prior builds (default)
read : Preserve prior history
--emake-historyfile=FILE History file to use
--emake-history-force=[01] If set, update history even if the build
fails (default on)
--emake-ledger=OPTIONS Options to track in the ledger, any combination
(comma-separated) of: timestamp, size, command
--emake-ledgerfile=FILE Ledger file to use.
--emake-subbuild-db=PATH Path to name of database file to use
to look up external dependencies info.
--emake-gen-subbuild-db=[01]
Set to 1 to generate the subbuild database.
0 (off) by default.
Performance options:
--emake-cluster-timeout=TIMEOUT
Seconds to keep trying to acquire the cluster
--emake-big-file-size=N Minimum file size (in bytes) to be sent via
agent to agent transfers (default 10k)
--emake-idle-time=N Number of seconds before idle agents are
released to the cluster (default 10)
--emake-job-limit=N Limits the maximum number of uncommitted jobs
to N where 0 means unlimited (default 0)
--emake-maxagents=N Limit the number of agents used by this build
N=0 uses all available agents (default 0)
--emake-mem-limit=N Limits the amount of memory emake will use for
uncommitted make instances (default 1000000000).
--emake-tmpdir=PATH Directories to use for temporary files
--emake-disable-variable-pruning=[01]
Don't prune unused variables during remote parse.
Compatibility options:
--emake-clearcase=LIST Turn on support for the specified ClearCase
features, where LIST is a comma separated list
of any of the following values:
rofs : read-only file system
vobs : per-VOB caching (for speed)
--emake-crossmake=OS Choose a specific operating system
linux : pick Linux nodes
solaris : pick Solaris nodes
--emake-disable-pragma=LIST Disable one or more pragmas. LIST is a comma
separated list of pragma names, or 'all' to
disable all pragmas.
--emake-emulation-table=TABLE
Configure default emulation modes for make
programs. TABLE is a comma separated list of
NAME=MODE, where NAME is the name of a make
executable and MODE is the emulation mode.
--emake-exclude-env=LIST Comma separated list of environment variables to
avoid replicating on agents.
--emake-read-only=PATH Directories to mark as roots of read-only
filesystems.
--emake-mergestreams=[01] Merge stdout/stderr or not (default merge)
--emake-pedantic=[01] Turn on/off extra warning messages (default off)
--emake-remake-limit=N (GMake mode only) Limit makefile remaking to N
attempts. N=0 disables remaking (default 10)
--emake-showinfo=[01] Turn on/off build info reporting (default on)
--emake-proxy-dir=path (electrify only) Directory containing electrify
proxies.
Debugging options:
--emake-debug=[acefghjLlmnoprs] Local debug level
a : node allocation
c : cache
e : environment variables
f : file system
g : profile
h : history
j : job
L : nmake lexer
l : ledger
m : memory usage
n : node
o : parse output file
p : parse
r : relocation data
s : subbuilds
--emake-logfile=FILE Location for debug log file
--emake-rdebug=[acefghjLlmnopr] Remote debug level; same codes
--emake-rlogdir=DIR Directory for remote debug logs
GNU Make Emulation (--emake-emulation=gmake) supports:
-b Ignored (also ignored by gmake)
-B, --always-make Unconditionally make all targets.
-C DIRECTORY
--directory=DIRECTORY Change to DIRECTORY before proceeding
-d Not supported (see --emake-debug instead)
-e
--environment-override Environment variables override makefile variables
-f FILE
--file=FILE
--makefile=FILE Read the makefile called FILE
-i
--ignore-errors Ignore error returns from commands
-I DIRECTORY
--include=DIRECTORY Look in DIRECTORY for 'include'd makefiles
-j
--jobs=N Ignored
-k
--keep-going Build unrelated targets when an error occurs
-l N
--max-load=N
--load-average=N Ignored
-L, --check-symlink-times Use the latest mtime between symlinks and target.
-m Ignored (also ignored by gmake)
-n
--just-print
--dry-run
--recon Print commands without running them
--no-print-directory Disables -w
-o FILE
--older=FILE Not supported
-p
--print-data-base Not supported
-q
--question Not supported
-r
--no-builtin-rules Disable the default pattern rules
-R
--no-builtin-variables Disable the default variables
-s
--silent
--quiet Don't print out commands
-S
--stop
--dont-keep-going Disables -k
-t
--touch Not supported
-v
--version Prints emake version information
-w
--print-directory Prints Entering/Leaving message for each directory -W FILE
--what-if=FILE
--new-if=FILE
--assume-new=FILE Pretend that FILE is always new
--warn-undefined-variables Warn when an undefined variable is referenced.
xmake
xmake is a cross-platform build utility based on Lua.