Backport the syncfiles script to the nasm-2.03.x branch

This is a maintenance tool only, it doesn't change the code in any
way.  However, it makes it a lot less likely that we'll have a release
go out with a broken Makefile.
This commit is contained in:
H. Peter Anvin 2008-06-16 15:55:19 -07:00
parent 018a6700c4
commit 90c419ac17
6 changed files with 121 additions and 13 deletions

View File

@ -58,6 +58,7 @@ X = @EXEEXT@
.1.man:
$(NROFF) -man $< > $@
#-- Begin File Lists --#
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
outform.$(O) output/outbin.$(O) \
@ -71,6 +72,7 @@ NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(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
@ -223,6 +225,7 @@ splint:
# 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

View File

@ -32,6 +32,8 @@ X = .exe
.c.obj:
$(CC) /c $(ALL_CFLAGS) /Fo$@ $<
#-- Begin File Lists --#
# Edit in Makefile.in, not here!
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
outform.$(O) output/outbin.$(O) \
@ -45,6 +47,7 @@ NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) \
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
#-- End File Lists --#
all: nasm$(X) ndisasm$(X)
rem cd rdoff && $(MAKE) all

View File

@ -1,4 +1,4 @@
# -* makefile -*- GNU Makefile for NetWare target
# -*- makefile -*- GNU Makefile for NetWare target
PROOT=.
OBJDIR=release
@ -28,19 +28,22 @@ LDFLAGS+=-s
O = o
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
outform.$(O) output/outbin.$(O) \
output/outaout.$(O) output/outcoff.$(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) tokhash.$(O) \
regvals.$(O) regflags.$(O)
#-- Begin File Lists --#
# Edit in Makefile.in, not here!
NASM = nasm.o nasmlib.o float.o insnsa.o insnsb.o \
assemble.o labels.o hashtbl.o crc64.o parser.o \
outform.o outbin.o \
outaout.o outcoff.o \
outelf32.o outelf64.o \
outobj.o outas86.o outrdf2.o \
outdbg.o outieee.o outmacho.o \
preproc.o quote.o pptok.o macros.o \
listing.o eval.o exprlib.o stdscan.o tokhash.o \
regvals.o regflags.o
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) \
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
NDISASM = ndisasm.o disasm.o sync.o nasmlib.o \
insnsd.o insnsb.o insnsn.o regs.o regdis.o
#-- End File Lists --#
NASM_OBJ = $(addprefix $(OBJDIR)/,$(notdir $(NASM))) $(EOLIST)
NDIS_OBJ = $(addprefix $(OBJDIR)/,$(notdir $(NDISASM))) $(EOLIST)

View File

@ -44,6 +44,8 @@ X = .exe
$(CC) -c $(ALL_CFLAGS) -fo=$^@ $[@
# Note: wcl386 is broken if forward slashes are used as path separators.
#-- Begin File Lists --#
# Edit in Makefile.in, not here!
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) &
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) &
outform.$(O) output\outbin.$(O) &
@ -57,6 +59,7 @@ NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) &
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) &
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
#-- End File Lists --#
what: .SYMBOLIC
@echo Please build "dos", "win32" or "os2"

View File

@ -55,6 +55,8 @@ X = .exe
.c.$(O):
$(CC) -c $(ALL_CFLAGS) -fo=$@ $<
#-- Begin File Lists --#
# Edit in Makefile.in, not here!
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
assemble.$(O) labels.$(O) hashtbl.$(O) crc64.$(O) parser.$(O) \
outform.$(O) output/outbin.$(O) \
@ -68,6 +70,7 @@ NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(O) insnsb.$(O) \
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) \
insnsd.$(O) insnsb.$(O) insnsn.$(O) regs.$(O) regdis.$(O)
#-- End File Lists --#
what:
@echo 'Please build "dos", "win32" or "os2"'

93
syncfiles.pl Executable file
View File

@ -0,0 +1,93 @@
#!/usr/bin/perl
#
# Sync the output file list between Makefiles
# Use the mkdep.pl parameters to get the filename syntax
#
# The first file is the source file; the other ones target.
#
%def_hints = ('object-ending' => '.o',
'path-separator' => '/',
'continuation' => "\\");
sub do_transform($$) {
my($l, $h) = @_;
my($ps) = $$h{'path-separator'};
$l =~ s/\x01/$$h{'object-ending'}/g;
$l =~ s/\x03/$$h{'continuation'}/g;
if ($ps eq '') {
# Remove the path separator and the preceeding directory
$l =~ s/[^\s\=]*\x02//g;
} else {
# Convert the path separator
$l =~ s/\x02/$ps/g;
}
return $l;
}
@file_list = ();
$first = 1;
$first_file = $ARGV[0];
die unless (defined($first_file));
foreach $file (@ARGV) {
open(FILE, "< $file\0") or die;
# First, read the syntax hints
%hints = %def_hints;
while (defined($line = <FILE>)) {
if ( $line =~ /^\s*\#\s*@([a-z0-9-]+):\s*\"([^\"]*)\"/ ) {
$hints{$1} = $2;
}
}
# Read and process the file
seek(FILE,0,0);
@lines = ();
$processing = 0;
while (defined($line = <FILE>)) {
chomp $line;
if ($processing) {
if ($line eq '#-- End File Lists --#') {
push(@lines, $line."\n");
$processing = 0;
} elsif ($first) {
my $xl = $line;
my $oe = "\Q$hints{'object-ending'}";
my $ps = "\Q$hints{'path-separator'}";
my $cn = "\Q$hints{'continuation'}";
$xl =~ s/${oe}(\s|$)/\x01$1/g;
$xl =~ s/${ps}/\x02/g;
$xl =~ s/${cn}$/\x03/;
push(@file_list, $xl);
push(@lines, $line);
}
} else {
push(@lines, $line."\n");
if ($line eq '#-- Begin File Lists --#') {
$processing = 1;
if (!$first) {
push(@lines, "# Edit in $first_file, not here!\n");
foreach $l (@file_list) {
push(@lines, do_transform($l, \%hints)."\n");
}
}
}
}
}
close(FILE);
# Write the file back out
if (!$first) {
open(FILE, "> $file\0") or die;
print FILE @lines;
close(FILE);
}
undef @lines;
$first = 0;
}