nasm/Makefile.in
H. Peter Anvin 1acf6ba822 Handle the new ELF headers in the dependency generation
The dependency machinery relies on properly rooted includes, so give
it to them... the path syntax munging machinery in the dependency
script handles it from a Makefile syntax perspective, and then we can
hope that C compilers are smart enough to deal with forward-slash
paths even when that is not the native syntax.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-06-25 13:06:49 -07:00

341 lines
13 KiB
Makefile

#
# Auto-configuring Makefile for the Netwide Assembler.
#
# The Netwide Assembler is copyright (C) 1996 Simon Tatham and
# Julian Hall. All rights reserved. The software is
# redistributable under the license given in the file "LICENSE"
# distributed in the NASM archive.
top_srcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
mandir = @mandir@
datarootdir = @datarootdir@
CC = @CC@
CFLAGS = @CFLAGS@
BUILD_CFLAGS = $(CFLAGS) @DEFS@
INTERNAL_CFLAGS = -I$(srcdir) -I.
ALL_CFLAGS = $(BUILD_CFLAGS) $(INTERNAL_CFLAGS)
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
PERL = perl -I$(srcdir)/perllib
XOBJS = @XOBJS@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
NROFF = @NROFF@
MKDIR = mkdir
RM = rm
STRIP = strip
# Binary suffixes
O = @OBJEXT@
X = @EXEEXT@
.SUFFIXES: .c .i .s .$(O) .1 .man
.PHONY: all doc rdf install clean distclean cleaner spotless install_rdf
.PHONY: install_doc everything install_everything strip perlreq dist
.c.$(O):
$(CC) -c $(ALL_CFLAGS) -o $@ $<
.c.s:
$(CC) -S $(ALL_CFLAGS) -o $@ $<
.c.i:
$(CC) -E $(ALL_CFLAGS) -o $@ $<
.1.man:
$(NROFF) -man $< > $@
#-- Begin File Lists --#
NASM = nasm.$(O) nasmlib.$(O) ver.$(O) \
raa.$(O) saa.$(O) rbtree.$(O) \
float.$(O) insnsa.$(O) insnsb.$(O) \
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
outform.$(O) outlib.$(O) output/outbin.$(O) \
output/outaout.$(O) output/outcoff.$(O) \
output/outelf.$(O) output/outelf32.$(O) output/outelf64.$(O) \
output/outobj.$(O) output/outas86.$(O) output/outrdf2.$(O) \
output/outdbg.$(O) output/outieee.$(O) output/outmacho.$(O) \
preproc.$(O) quote.$(O) pptok.$(O) macros.$(O) \
listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) strfunc.$(O) \
tokhash.$(O) regvals.$(O) regflags.$(O)
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) ver.$(O) \
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
#-- End File Lists --#
all: nasm$(X) ndisasm$(X) nasm.man ndisasm.man
cd rdoff && $(MAKE) all
nasm$(X): $(NASM) $(XOBJS)
$(CC) $(LDFLAGS) -o nasm$(X) $(NASM) $(XOBJS) $(LIBS)
ndisasm$(X): $(NDISASM) $(XOBJS)
$(CC) $(LDFLAGS) -o ndisasm$(X) $(NDISASM) $(XOBJS) $(LIBS)
# These source files are automagically generated from a single
# instruction-table file by a Perl script. They're distributed,
# though, so it isn't necessary to have Perl just to recompile NASM
# from the distribution.
insnsb.c: insns.dat insns.pl
$(PERL) $(srcdir)/insns.pl -b $(srcdir)/insns.dat
insnsa.c: insns.dat insns.pl
$(PERL) $(srcdir)/insns.pl -a $(srcdir)/insns.dat
insnsd.c: insns.dat insns.pl
$(PERL) $(srcdir)/insns.pl -d $(srcdir)/insns.dat
insnsi.h: insns.dat insns.pl
$(PERL) $(srcdir)/insns.pl -i $(srcdir)/insns.dat
insnsn.c: insns.dat insns.pl
$(PERL) $(srcdir)/insns.pl -n $(srcdir)/insns.dat
# These files contains all the standard macros that are derived from
# the version number.
version.h: version version.pl
$(PERL) $(srcdir)/version.pl h < $(srcdir)/version > version.h
version.mac: version version.pl
$(PERL) $(srcdir)/version.pl mac < $(srcdir)/version > version.mac
version.sed: version version.pl
$(PERL) $(srcdir)/version.pl sed < $(srcdir)/version > version.sed
version.mak: version version.pl
$(PERL) $(srcdir)/version.pl make < $(srcdir)/version > version.mak
version.nsh: version version.pl
$(PERL) $(srcdir)/version.pl nsis < $(srcdir)/version > version.nsh
# This source file is generated from the standard macros file
# `standard.mac' by another Perl script. Again, it's part of the
# standard distribution.
macros.c: macros.pl pptok.ph standard.mac version.mac \
$(srcdir)/macros/*.mac $(srcdir)/output/*.mac
$(PERL) $(srcdir)/macros.pl $(srcdir)/standard.mac version.mac \
$(srcdir)/macros/*.mac $(srcdir)/output/*.mac
# These source files are generated from regs.dat by yet another
# perl script.
regs.c: regs.dat regs.pl
$(PERL) $(srcdir)/regs.pl c $(srcdir)/regs.dat > regs.c
regflags.c: regs.dat regs.pl
$(PERL) $(srcdir)/regs.pl fc $(srcdir)/regs.dat > regflags.c
regdis.c: regs.dat regs.pl
$(PERL) $(srcdir)/regs.pl dc $(srcdir)/regs.dat > regdis.c
regdis.h: regs.dat regs.pl
$(PERL) $(srcdir)/regs.pl dh $(srcdir)/regs.dat > regdis.h
regvals.c: regs.dat regs.pl
$(PERL) $(srcdir)/regs.pl vc $(srcdir)/regs.dat > regvals.c
regs.h: regs.dat regs.pl
$(PERL) $(srcdir)/regs.pl h $(srcdir)/regs.dat > regs.h
# Assembler token hash
tokhash.c: insns.dat regs.dat tokens.dat tokhash.pl perllib/phash.ph
$(PERL) $(srcdir)/tokhash.pl c $(srcdir)/insns.dat $(srcdir)/regs.dat \
$(srcdir)/tokens.dat > tokhash.c
# Assembler token metadata
tokens.h: insns.dat regs.dat tokens.dat tokhash.pl perllib/phash.ph
$(PERL) $(srcdir)/tokhash.pl h $(srcdir)/insns.dat $(srcdir)/regs.dat \
$(srcdir)/tokens.dat > tokens.h
# Preprocessor token hash
pptok.h: pptok.dat pptok.pl perllib/phash.ph
$(PERL) $(srcdir)/pptok.pl h $(srcdir)/pptok.dat pptok.h
pptok.c: pptok.dat pptok.pl perllib/phash.ph
$(PERL) $(srcdir)/pptok.pl c $(srcdir)/pptok.dat pptok.c
pptok.ph: pptok.dat pptok.pl perllib/phash.ph
$(PERL) $(srcdir)/pptok.pl ph $(srcdir)/pptok.dat pptok.ph
# This target generates all files that require perl.
# This allows easier generation of distribution (see dist target).
PERLREQ = macros.c insnsb.c insnsa.c insnsd.c insnsi.h insnsn.c \
regs.c regs.h regflags.c regdis.c regdis.h regvals.c \
tokhash.c tokens.h pptok.h pptok.c pptok.ph \
version.h version.mac version.mak version.nsh
perlreq: $(PERLREQ)
install: nasm$(X) ndisasm$(X)
$(MKDIR) -p $(INSTALLROOT)$(bindir)
$(INSTALL_PROGRAM) nasm$(X) $(INSTALLROOT)$(bindir)/nasm$(X)
$(INSTALL_PROGRAM) ndisasm$(X) $(INSTALLROOT)$(bindir)/ndisasm$(X)
$(MKDIR) -p $(INSTALLROOT)$(mandir)/man1
$(INSTALL_DATA) $(srcdir)/nasm.1 $(INSTALLROOT)$(mandir)/man1/nasm.1
$(INSTALL_DATA) $(srcdir)/ndisasm.1 $(INSTALLROOT)$(mandir)/man1/ndisasm.1
clean:
$(RM) -f *.$(O) *.s *.i
$(RM) -f output/*.$(O) output/*.s output/*.i
$(RM) -f nasm$(X) ndisasm$(X)
cd rdoff && $(MAKE) clean
distclean: clean
$(RM) -f config.h config.log config.status
$(RM) -f Makefile *~ *.bak *.lst *.bin
$(RM) -f output/*~ output/*.bak
$(RM) -f test/*.lst test/*.bin test/*.$(O) test/*.bin
$(RM) -rf autom4te*.cache
cd rdoff && $(MAKE) distclean
cleaner: clean
$(RM) -f $(PERLREQ) *.man nasm.spec
cd doc && $(MAKE) clean
spotless: distclean cleaner
$(RM) -f doc/Makefile doc/*~ doc/*.bak
strip:
$(STRIP) --strip-unneeded nasm$(X) ndisasm$(X)
rdf:
cd rdoff && $(MAKE)
rdf_install install_rdf:
cd rdoff && $(MAKE) install
doc:
cd doc && $(MAKE) all
doc_install install_doc:
cd doc && $(MAKE) install
everything: all doc rdf
install_everything: everything install install_doc install_rdf
dist: spotless perlreq spec
autoheader
autoconf
$(RM) -rf ./autom4te*.cache
tar: dist
tar -cvj --exclude CVS -C .. -f ../nasm-`cat version`-`date +%Y%m%d`.tar.bz2 `basename \`pwd\``
spec: nasm.spec
nasm.spec: nasm.spec.in version.sed
sed -f version.sed < nasm.spec.in > nasm.spec
splint:
splint -weak *.c
test: nasm$(X)
cd test && $(PERL) performtest.pl --nasm=../nasm *.asm
#
# This build dependencies in *ALL* makefiles. Partially for that reason,
# it's expected to be invoked manually.
#
alldeps: perlreq
$(PERL) syncfiles.pl Makefile.in Mkfiles/*.mak
$(PERL) mkdep.pl -M Makefile.in Mkfiles/*.mak -- \
. output lib
./config.status
#-- Magic hints to mkdep.pl --#
# @object-ending: ".$(O)"
# @path-separator: "/"
#-- Everything below is generated by mkdep.pl - do not edit --#
assemble.$(O): assemble.c assemble.h compiler.h config.h insns.h insnsi.h \
nasm.h nasmlib.h pptok.h preproc.h regs.h tables.h tokens.h
crc64.$(O): crc64.c compiler.h config.h nasmlib.h
disasm.$(O): disasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h regdis.h regs.h sync.h tables.h tokens.h
eval.$(O): eval.c compiler.h config.h eval.h float.h insnsi.h labels.h \
nasm.h nasmlib.h pptok.h preproc.h regs.h
exprlib.$(O): exprlib.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h
float.$(O): float.c compiler.h config.h float.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h
hashtbl.$(O): hashtbl.c compiler.h config.h hashtbl.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h regs.h
insnsa.$(O): insnsa.c compiler.h config.h insns.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h tokens.h
insnsb.$(O): insnsb.c compiler.h config.h insns.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h tokens.h
insnsd.$(O): insnsd.c compiler.h config.h insns.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h tokens.h
insnsn.$(O): insnsn.c compiler.h config.h insnsi.h tables.h
labels.$(O): labels.c compiler.h config.h hashtbl.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h regs.h
lib/snprintf.$(O): lib/snprintf.c compiler.h config.h nasmlib.h
lib/vsnprintf.$(O): lib/vsnprintf.c compiler.h config.h nasmlib.h
listing.$(O): listing.c compiler.h config.h insnsi.h listing.h nasm.h \
nasmlib.h pptok.h preproc.h regs.h
macros.$(O): macros.c compiler.h config.h hashtbl.h insnsi.h nasm.h \
nasmlib.h outform.h pptok.h preproc.h regs.h tables.h
nasm.$(O): nasm.c assemble.h compiler.h config.h eval.h float.h insns.h \
insnsi.h labels.h listing.h nasm.h nasmlib.h outform.h parser.h pptok.h \
preproc.h raa.h regs.h saa.h stdscan.h tokens.h
nasmlib.$(O): nasmlib.c compiler.h config.h insns.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h regs.h tokens.h
ndisasm.$(O): ndisasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h regs.h sync.h tokens.h
outform.$(O): outform.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
outform.h pptok.h preproc.h regs.h
outlib.$(O): outlib.c compiler.h config.h insnsi.h nasm.h nasmlib.h outlib.h \
pptok.h preproc.h regs.h
output/outaout.$(O): output/outaout.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h outlib.h pptok.h preproc.h raa.h regs.h saa.h stdscan.h
output/outas86.$(O): output/outas86.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h outlib.h pptok.h preproc.h raa.h regs.h saa.h
output/outbin.$(O): output/outbin.c compiler.h config.h eval.h insnsi.h \
labels.h nasm.h nasmlib.h outform.h outlib.h pptok.h preproc.h regs.h saa.h \
stdscan.h
output/outcoff.$(O): output/outcoff.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h outlib.h pptok.h preproc.h raa.h regs.h saa.h
output/outdbg.$(O): output/outdbg.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h pptok.h preproc.h regs.h
output/outelf.$(O): output/outelf.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h output/dwarf.h output/elfcommon.h output/outelf.h pptok.h \
preproc.h regs.h
output/outelf32.$(O): output/outelf32.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h outlib.h output/dwarf.h output/elf32.h \
output/elfcommon.h output/outelf.h pptok.h preproc.h raa.h rbtree.h regs.h \
saa.h stdscan.h
output/outelf64.$(O): output/outelf64.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h outlib.h output/dwarf.h output/elf64.h \
output/elfcommon.h output/outelf.h pptok.h preproc.h raa.h rbtree.h regs.h \
saa.h stdscan.h
output/outieee.$(O): output/outieee.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h pptok.h preproc.h regs.h
output/outmacho.$(O): output/outmacho.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h outlib.h pptok.h preproc.h raa.h regs.h saa.h
output/outobj.$(O): output/outobj.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h pptok.h preproc.h regs.h stdscan.h
output/outrdf.$(O): output/outrdf.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h pptok.h preproc.h regs.h
output/outrdf2.$(O): output/outrdf2.c compiler.h config.h insnsi.h nasm.h \
nasmlib.h outform.h pptok.h preproc.h rdoff/rdoff.h regs.h saa.h
parser.$(O): parser.c compiler.h config.h float.h insns.h insnsi.h nasm.h \
nasmlib.h parser.h pptok.h preproc.h regs.h stdscan.h tables.h tokens.h
pptok.$(O): pptok.c compiler.h config.h hashtbl.h nasmlib.h pptok.h \
preproc.h
preproc.$(O): preproc.c compiler.h config.h hashtbl.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h quote.h regs.h stdscan.h tables.h tokens.h
quote.$(O): quote.c compiler.h config.h nasmlib.h quote.h
raa.$(O): raa.c compiler.h config.h nasmlib.h raa.h
rbtree.$(O): rbtree.c compiler.h config.h rbtree.h
regdis.$(O): regdis.c regdis.h regs.h
regflags.$(O): regflags.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h tables.h
regs.$(O): regs.c compiler.h config.h insnsi.h tables.h
regvals.$(O): regvals.c compiler.h config.h insnsi.h tables.h
saa.$(O): saa.c compiler.h config.h nasmlib.h saa.h
stdscan.$(O): stdscan.c compiler.h config.h insns.h insnsi.h nasm.h \
nasmlib.h pptok.h preproc.h quote.h regs.h stdscan.h tokens.h
strfunc.$(O): strfunc.c compiler.h config.h insnsi.h nasm.h nasmlib.h \
pptok.h preproc.h regs.h
sync.$(O): sync.c compiler.h config.h nasmlib.h sync.h
tokhash.$(O): tokhash.c compiler.h config.h hashtbl.h insns.h insnsi.h \
nasm.h nasmlib.h pptok.h preproc.h regs.h tokens.h
ver.$(O): ver.c compiler.h config.h insnsi.h nasm.h nasmlib.h pptok.h \
preproc.h regs.h version.h