mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-02-17 17:19:35 +08:00
Add Makefile for OpenWatcom (DOS, OS/2 or Win32 output)
Add a Makefile for OpenWatcom using WMAKE. This is a horrible version of Make, but since it's bundled with OpenWatcom it is probably better to stick to it. It has the nice property that it can produce DOS, Win32 or OS/2 binaries. This Makefile currently assumes that it is hosted on a system where pathname separators are backslashes. For cross-compiling using OpenWatcom on a Linux system it is probably better to write a separate Makefile using GNU make to invoke Watcom.
This commit is contained in:
parent
3f9bc94b6e
commit
c38c117188
@ -1,44 +1,19 @@
|
||||
These are pre-created Makefiles for various platforms, use them if
|
||||
GNU autoconf/automake packages are not supported on your system.
|
||||
|
||||
Copy appropriate Makefile to ../Makefile, look at it to see if there
|
||||
are any edits that need to be made, and run make.
|
||||
|
||||
Some of these Makefiles have been contributed by end users, and the
|
||||
NASM team has no way of knowing if they work correctly or not. For
|
||||
that reason, there are sometimes multiple Makefiles for the same
|
||||
platform. Look at the comments at the beginning to help select a
|
||||
Makefile for your particular system.
|
||||
|
||||
|
||||
The Makefiles are:
|
||||
|
||||
Filename Target Compiler Notes
|
||||
Filename Target Compiler Tested with
|
||||
---------------------------------------------------------------------------
|
||||
Makefile.b32 Win32 Borland C++ OK as of NASM 0.98.37
|
||||
Makefile.bc3 16-bit DOS Borland C++ OK as of NASM 0.98.34
|
||||
Makefile.bor 16-bit DOS Turbo C (**)
|
||||
Makefile.dcp Win32 Dev-Cpp/MinGW OK as of NASM 0.99.00
|
||||
Makefile.dj 32-bit DOS DJGPP OK as of NASM 0.98.37
|
||||
Makefile.djo 32-bit DOS DJGPP "Opus Make" version(**)
|
||||
Makefile.dl 32-bit DOS cc386 cc386 by David Lindauer
|
||||
Makefile.dos 16-bit DOS MSC 5 (**)
|
||||
Makefile.ms7 16-bit DOS MSC 7 OK as of NASM 0.98.31
|
||||
Makefile.os2 OS/2 Warp Borland C++ (**)
|
||||
Makefile.sc 32-bit DOS Symantec C++ 7
|
||||
Makefile.scw Win32 Symantec C++ 7
|
||||
Makefile.unx Unix Any(*) use only if "configure" fails
|
||||
Makefile.vc Win32 MS Visual C++ OK as of NASM 0.98.32
|
||||
Makefile.wc 32-bit DOS Watcom C (**)
|
||||
Makefile.wcd 16-bit DOS OpenWatcom C OK as of NASM 0.98.37
|
||||
Makefile.wcw Win32 Watcom C (**)
|
||||
msvc.mak Win32 MS Visual C++ Visual C++ Express 2005
|
||||
|
||||
Usage: nmake /f Mkfiles/msvc.mak
|
||||
|
||||
|
||||
(*) = This Makefile should work with any compiler which is ANSI
|
||||
C89/ISO C90 compliant and that uses the standard Unix compiler
|
||||
arguments, such as -c, -o, -I and -O. Pre-ANSI compilers,
|
||||
such as the "cc" distributed with SunOS 4.x, will not work.
|
||||
If you find a system on which you need to use this, please write
|
||||
<nasm-devel@lists.sourceforge.net> and tell us which system.
|
||||
Filename Target Compiler Tested with
|
||||
---------------------------------------------------------------------------
|
||||
openwcom.mak multiple OpenWatcom C OpenWatcom 1.7 (Win32)
|
||||
|
||||
(**) = Probably obsolete, needs updating.
|
||||
Usage: wmake /f Mkfiles/<filename> <target>
|
||||
|
||||
<target> is dos, win32, or os2.
|
||||
|
271
Mkfiles/openwcom.mak
Normal file
271
Mkfiles/openwcom.mak
Normal file
@ -0,0 +1,271 @@
|
||||
# -*- makefile -*-
|
||||
#
|
||||
# Makefile for building NASM using OpenWatcom 1.7
|
||||
# building on a DOS/Win/OS2 platform host (backslashes
|
||||
# used in pathnames)
|
||||
#
|
||||
|
||||
top_srcdir = .
|
||||
srcdir = .
|
||||
VPATH = .\output
|
||||
prefix = C:\Program Files\NASM
|
||||
exec_prefix = $(prefix)
|
||||
bindir = $(prefix)\bin
|
||||
mandir = $(prefix)\man
|
||||
|
||||
CC = wcl386
|
||||
CFLAGS = -3 -bcl=$(TARGET) -ox -wx -ze -fpi
|
||||
BUILD_CFLAGS = $(CFLAGS) # -I$(srcdir)/inttypes
|
||||
INTERNAL_CFLAGS = -I$(srcdir) -I.
|
||||
ALL_CFLAGS = $(BUILD_CFLAGS) $(INTERNAL_CFLAGS)
|
||||
LD = $(CC)
|
||||
LDFLAGS = $(ALL_CFLAGS)
|
||||
LIBS =
|
||||
PERL = perl -I$(srcdir)/perllib
|
||||
|
||||
STRIP = wstrip
|
||||
|
||||
# Binary suffixes
|
||||
O = obj
|
||||
X = .exe
|
||||
|
||||
# WMAKE errors out if a suffix is declared more than once, including
|
||||
# its own built-in declarations. Thus, we need to explicitly clear the list
|
||||
# first. Also, WMAKE only allows implicit rules that point "to the left"
|
||||
# in this list!
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .man .1 .$(O) .i .c
|
||||
|
||||
# Needed to find C files anywhere but in the current directory
|
||||
.c : $(VPATH)
|
||||
|
||||
.c.$(O):
|
||||
$(CC) -c $(ALL_CFLAGS) -fo=$^@ $[@
|
||||
|
||||
# Note: wcl386 is broken if forward slashes are used as path separators.
|
||||
NASM = nasm.$(O) nasmlib.$(O) float.$(O) insnsa.$(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) pptok.$(O) &
|
||||
listing.$(O) eval.$(O) exprlib.$(O) stdscan.$(O) tokhash.$(O)
|
||||
|
||||
NDISASM = ndisasm.$(O) disasm.$(O) sync.$(O) nasmlib.$(O) insnsd.$(O)
|
||||
|
||||
what: .SYMBOLIC
|
||||
@echo Please build "dos", "win32" or "os2"
|
||||
|
||||
dos: .SYMBOLIC
|
||||
$(MAKE) /f $(__MAKEFILES__) all TARGET=DOS4G
|
||||
|
||||
win32: .SYMBOLIC
|
||||
$(MAKE) /f $(__MAKEFILES__) all TARGET=NT
|
||||
|
||||
os2: .SYMBOLIC
|
||||
$(MAKE) /f $(__MAKEFILES__) all TARGET=OS2V2
|
||||
|
||||
all: nasm$(X) ndisasm$(X) .SYMBOLIC
|
||||
rem cd rdoff && $(MAKE) all
|
||||
|
||||
nasm$(X): $(NASM)
|
||||
$(LD) $(LDFLAGS) -fe=nasm$(X) $(NASM) $(LIBS)
|
||||
|
||||
ndisasm$(X): $(NDISASM)
|
||||
$(LD) $(LDFLAGS) -fe=ndisasm$(X) $(NDISASM) $(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.
|
||||
|
||||
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
|
||||
|
||||
# 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 standard.mac version.mac
|
||||
$(PERL) $(srcdir)/macros.pl $(srcdir)/standard.mac version.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
|
||||
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
|
||||
|
||||
# This target generates all files that require perl.
|
||||
# This allows easier generation of distribution (see dist target).
|
||||
PERLREQ = macros.c insnsa.c insnsd.c insnsi.h insnsn.c &
|
||||
regs.c regs.h regflags.c regdis.c regvals.c tokhash.c tokens.h &
|
||||
version.h version.mac pptok.h pptok.c
|
||||
perlreq: $(PERLREQ)
|
||||
|
||||
clean: .SYMBOLIC
|
||||
-del /f *.$(O)
|
||||
-del /f *.s
|
||||
-del /f *.i
|
||||
-del /f output\*.$(O)
|
||||
-del /f output\*.s
|
||||
-del /f output\*.i
|
||||
-del /f nasm$(X)
|
||||
-del /f ndisasm$(X)
|
||||
rem cd rdoff && $(MAKE) clean
|
||||
|
||||
distclean: clean .SYMBOLIC
|
||||
-del /f config.h
|
||||
-del /f config.log
|
||||
-del /f config.status
|
||||
-del /f Makefile
|
||||
-del /f *~
|
||||
-del /f *.bak
|
||||
-del /f *.lst
|
||||
-del /f *.bin
|
||||
-del /f output\*~
|
||||
-del /f output\*.bak
|
||||
-del /f test\*.lst
|
||||
-del /f test\*.bin
|
||||
-del /f test\*.$(O)
|
||||
-del /f test\*.bin
|
||||
-del /f/s autom4te*.cache
|
||||
rem cd rdoff && $(MAKE) distclean
|
||||
|
||||
cleaner: clean .SYMBOLIC
|
||||
-del /f $(PERLREQ)
|
||||
-del /f *.man
|
||||
-del /f nasm.spec
|
||||
rem cd doc && $(MAKE) clean
|
||||
|
||||
spotless: distclean cleaner .SYMBOLIC
|
||||
-del /f doc\Makefile
|
||||
-del doc\*~
|
||||
-del doc\*.bak
|
||||
|
||||
strip: .SYMBOLIC
|
||||
$(STRIP) *.exe
|
||||
|
||||
rdf:
|
||||
# cd rdoff && $(MAKE)
|
||||
|
||||
doc:
|
||||
# cd doc && $(MAKE) all
|
||||
|
||||
everything: all doc rdf
|
||||
|
||||
#-- Magic hints to mkdep.pl --#
|
||||
# @object-ending: ".$(O)"
|
||||
# @path-separator: "\"
|
||||
# @continuation: "&"
|
||||
#-- 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 regflags.c regs.h regvals.c tokens.h &
|
||||
version.h
|
||||
crc64.$(O): crc64.c
|
||||
disasm.$(O): disasm.c compiler.h config.h disasm.h insns.h insnsi.h insnsn.c &
|
||||
names.c nasm.h nasmlib.h regdis.c regs.c regs.h sync.h tokens.h version.h
|
||||
eval.$(O): eval.c compiler.h config.h eval.h float.h insnsi.h labels.h &
|
||||
nasm.h nasmlib.h regs.h version.h
|
||||
exprlib.$(O): exprlib.c compiler.h config.h insnsi.h nasm.h nasmlib.h regs.h &
|
||||
version.h
|
||||
float.$(O): float.c compiler.h config.h insnsi.h nasm.h nasmlib.h regs.h &
|
||||
version.h
|
||||
hashtbl.$(O): hashtbl.c compiler.h config.h hashtbl.h insnsi.h nasm.h &
|
||||
nasmlib.h regs.h version.h
|
||||
insnsa.$(O): insnsa.c compiler.h config.h insns.h insnsi.h nasm.h nasmlib.h &
|
||||
regs.h tokens.h version.h
|
||||
insnsd.$(O): insnsd.c compiler.h config.h insns.h insnsi.h nasm.h nasmlib.h &
|
||||
regs.h tokens.h version.h
|
||||
insnsn.$(O): insnsn.c
|
||||
labels.$(O): labels.c compiler.h config.h hashtbl.h insnsi.h nasm.h &
|
||||
nasmlib.h regs.h version.h
|
||||
listing.$(O): listing.c compiler.h config.h insnsi.h listing.h nasm.h &
|
||||
nasmlib.h regs.h version.h
|
||||
macros.$(O): macros.c
|
||||
names.$(O): names.c insnsn.c regs.c
|
||||
nasm.$(O): nasm.c assemble.h compiler.h config.h eval.h insns.h insnsi.h &
|
||||
labels.h listing.h nasm.h nasmlib.h outform.h parser.h pptok.h preproc.h &
|
||||
regs.h stdscan.h tokens.h version.h
|
||||
nasmlib.$(O): nasmlib.c compiler.h config.h insns.h insnsi.h nasm.h &
|
||||
nasmlib.h regs.h tokens.h version.h
|
||||
ndisasm.$(O): ndisasm.c compiler.h config.h disasm.h insns.h insnsi.h nasm.h &
|
||||
nasmlib.h regs.h sync.h tokens.h version.h
|
||||
outform.$(O): outform.c compiler.h config.h insnsi.h nasm.h nasmlib.h &
|
||||
outform.h regs.h version.h
|
||||
output\outaout.$(O): output\outaout.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h stdscan.h version.h
|
||||
output\outas86.$(O): output\outas86.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h version.h
|
||||
output\outbin.$(O): output\outbin.c compiler.h config.h eval.h insnsi.h &
|
||||
labels.h nasm.h nasmlib.h outform.h regs.h stdscan.h version.h
|
||||
output\outcoff.$(O): output\outcoff.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h version.h
|
||||
output\outdbg.$(O): output\outdbg.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h version.h
|
||||
output\outelf32.$(O): output\outelf32.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h stdscan.h version.h
|
||||
output\outelf64.$(O): output\outelf64.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h stdscan.h version.h
|
||||
output\outieee.$(O): output\outieee.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h version.h
|
||||
output\outmacho.$(O): output\outmacho.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h version.h
|
||||
output\outobj.$(O): output\outobj.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h stdscan.h version.h
|
||||
output\outrdf.$(O): output\outrdf.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h regs.h version.h
|
||||
output\outrdf2.$(O): output\outrdf2.c compiler.h config.h insnsi.h nasm.h &
|
||||
nasmlib.h outform.h rdoff\rdoff.h regs.h version.h
|
||||
parser.$(O): parser.c compiler.h config.h float.h insns.h insnsi.h nasm.h &
|
||||
nasmlib.h parser.h regflags.c regs.h stdscan.h tokens.h version.h
|
||||
pptok.$(O): pptok.c compiler.h config.h nasmlib.h pptok.h preproc.h
|
||||
preproc.$(O): preproc.c compiler.h config.h hashtbl.h insnsi.h macros.c &
|
||||
nasm.h nasmlib.h pptok.h preproc.h regs.h version.h
|
||||
regdis.$(O): regdis.c
|
||||
regflags.$(O): regflags.c
|
||||
regs.$(O): regs.c
|
||||
regvals.$(O): regvals.c
|
||||
stdscan.$(O): stdscan.c compiler.h config.h insns.h insnsi.h nasm.h &
|
||||
nasmlib.h regs.h stdscan.h tokens.h version.h
|
||||
sync.$(O): sync.c compiler.h config.h nasmlib.h sync.h
|
||||
tokhash.$(O): tokhash.c compiler.h config.h insns.h insnsi.h nasm.h &
|
||||
nasmlib.h regs.h tokens.h version.h
|
5
mkdep.pl
5
mkdep.pl
@ -93,6 +93,7 @@ sub insert_deps($) {
|
||||
my($line,$parm,$val);
|
||||
my($obj) = '.o'; # Defaults
|
||||
my($sep) = '/';
|
||||
my($cont) = "\\";
|
||||
my($maxline) = 78; # Seems like a reasonable default
|
||||
|
||||
while ( defined($line = <IN>) ) {
|
||||
@ -104,6 +105,8 @@ sub insert_deps($) {
|
||||
$sep = $val;
|
||||
} elsif ( $parm eq 'line-width' ) {
|
||||
$maxline = $val+0;
|
||||
} elsif ( $parm eq 'continuation' ) {
|
||||
$cont = $val;
|
||||
}
|
||||
} elsif ( $line eq $barrier ) {
|
||||
last; # Stop reading input at barrier line
|
||||
@ -127,7 +130,7 @@ sub insert_deps($) {
|
||||
$str = convert_file($dep,$sep);
|
||||
$sl = length($str)+1;
|
||||
if ( $len+$sl > $maxline-2 ) {
|
||||
print OUT " \\\n ", $str;
|
||||
print OUT ' ', $cont, "\n ", $str;
|
||||
$len = $sl;
|
||||
} else {
|
||||
print OUT ' ', $str;
|
||||
|
Loading…
Reference in New Issue
Block a user