0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00
Files
nasm/test/Makefile.in
H. Peter Anvin f047ceeae3 test/Makefile: add .bin{16,32,64} targets
Quick and easy way to run the same test for 16-, 32- and 64-bit output
without mixing them together in one binary output file.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2025-10-07 09:57:19 -07:00

152 lines
3.6 KiB
Makefile

@SET_MAKE@
.SUFFIXES: .bin .bin16 .bin32 .bin64 .o .o64 .aout .aoutb .obj .obj64 \
.mo32 .mo64 .dbg .i .od .ox .ith .srec .exe .lst \
.asm .pl
# Binary suffixes
O = @OBJEXT@
X = @EXEEXT@
A = @LIBEXT@
NASM = ../nasm$(X)
NDISASM = ../ndisasm$(X)
OMFDUMP = ../misc/omfdump$(X)
LISTOPT = -L+
NASMOPT = -DSRC -Ox -I../misc $(LISTOPT) $(OPT)
PERL = perl
TESTS = $(wildcard *.asm)
RM_F = rm -f
RM_RF = rm -rf
.PHONY: tools nasm ndisasm ffmpegtest x264test
tools:
$(MAKE) -C .. all
nasm ndisasm:
$(MAKE) -C .. $(@F)
$(NASM) $(NDISASM):
$(MAKE) -C .. $(@F)
ffmpegtest:
bash projtest.sh '$(NASM)' $@
x264test:
bash projtest.sh '$(NASM)' $@
%.bin: %.asm $(NASM)
$(NASM) $(NASMOPT) -f bin -o $@ -MD $@.dep -l $@.lst $<
%.bin16: %.asm $(NASM)
$(NASM) --bits 16 $(NASMOPT) -f bin -o $@ -MD $@.dep -l $@.lst $<
%.bin32: %.asm $(NASM)
$(NASM) --bits 32 $(NASMOPT) -f bin -o $@ -MD $@.dep -l $@.lst $<
%.bin64: %.asm $(NASM)
$(NASM) --bits 64 $(NASMOPT) -f bin -o $@ -MD $@.dep -l $@.lst $<
%.ith: %.asm $(NASM)
$(NASM) $(NASMOPT) -f ith -o $@ -MD $@.dep -l $@.lst $<
%.srec: %.asm $(NASM)
$(NASM) $(NASMOPT) -f srec -o $@ -MD $@.dep -l $@.lst $<
%.o: %.asm $(NASM)
$(NASM) $(NASMOPT) -f elf32 -gdwarf -o $@ -MD $@.dep -l $@.lst $<
%.ox: %.asm $(NASM)
$(NASM) $(NASMOPT) -f elfx32 -gdwarf -o $@ -MD $@.dep -l $@.lst $<
%.o64: %.asm $(NASM)
$(NASM) $(NASMOPT) -f elf64 -gdwarf -o $@ -MD $@.dep -l $@.lst $<
%.aout: %.asm $(NASM)
$(NASM) $(NASMOPT) -f aout -o $@ -MD $@.dep -l $@.lst $<
%.aoutb: %.asm $(NASM)
$(NASM) $(NASMOPT) -f aoutb -o $@ -MD $@.dep -l $@.lst $<
%.obj: %.asm $(NASM)
$(NASM) $(NASMOPT) -f obj -gborland -o $@ -MD $@.dep -l $@.lst $<
%.rdf: %.asm $(NASM)
$(NASM) $(NASMOPT) -f rdf -o $@ -MD $@.dep -l $@.lst $<
%.od: %.obj $(OMFDUMP)
$(OMFDUMP) $< > $@
%.coff: %.asm $(NASM)
$(NASM) $(NASMOPT) -f coff -o $@ -MD $@.dep -l $@.lst $<
%.win32: %.asm $(NASM)
$(NASM) $(NASMOPT) -f win32 -gcv8 -o $@ -MD $@.dep -l $@.lst $<
%.win64: %.asm $(NASM)
$(NASM) $(NASMOPT) -f win64 -gcv8 -o $@ -MD $@.dep -l $@.lst $<
%.mo32: %.asm $(NASM)
$(NASM) $(NASMOPT) -f macho32 -gdwarf -o $@ -MD $@.dep -l $@.lst $<
%.mo64: %.asm $(NASM)
$(NASM) $(NASMOPT) -f macho64 -gdwarf -o $@ -MD $@.dep -l $@.lst $<
%.dbg: %.asm $(NASM)
$(NASM) $(NASMOPT) -f dbg -gdebug -o $@ -MD $@.dep -l $@.lst $<
%.asm: %.pl
$(PERL) $< > $@
%.i: %.asm $(NASM)
$(NASM) $(NASMOPT) -E -o $@ -MD $@.dep $<
all:
golden: performtest.pl $(TESTS)
$(PERL) performtest.pl --golden --nasm='$(NASM)' $(TESTS)
test: performtest.pl $(NASM) $(TESTS)
$(PERL) performtest.pl --nasm='$(NASM)' $(TESTS)
diff: performtest.pl $(NASM) $(TESTS)
$(PERL) performtest.pl --diff --nasm='$(NASM)' $(TESTS)
clean:
$(RM_F) *.com *.o *.o64 *.aout *.obj *.win32 *.win64 *.exe *.lst *.bin
$(RM_F) *.bin *.bin16 *.bin32 *.bin64
$(RM_F) *.dbg *.coff *.ith *.srec *.mo32 *.mo64 *.i *.dep *.rdf
$(RM_F) *.aoutb
$(RM_RF) testresults
$(RM_F) elftest elftest64
$(RM_RF) ffmpegtest x264test
spotless: clean
$(RM_RF) golden
#
# Test for ELF32 shared libraries; assumes an x86 Linux system
#
elfso.o: elfso.asm $(NASM)
$(NASM) $(NASMOPT) -f elf32 -F stabs -o $@ -MD $@.dep -l $@.lst $<
elfso.so: elfso.o
$(LD) -m elf_i386 -shared -o $@ -MD $@.dep $<
elftest: elftest.c elfso.so
$(CC) -g -m32 -o $@ -MD $@.dep $^
-env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH ./elftest
#
# Test for ELF64 shared libraries; assumes an x86-64 Linux system
#
elf64so.o: elf64so.asm $(NASM)
$(NASM) $(NASMOPT) -f elf64 -F dwarf -o $@ -MD $@.dep -l $@.lst $<
elf64so.so: elf64so.o
$(LD) -shared -o $@ -MD $@.dep $<
elftest64: elftest64.c elf64so.so
$(CC) -g -o $@ -MD $@.dep $^
-env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH ./elftest64