aboutsummaryrefslogtreecommitdiffstats
path: root/pc/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'pc/Makefile')
-rw-r--r--pc/Makefile299
1 files changed, 299 insertions, 0 deletions
diff --git a/pc/Makefile b/pc/Makefile
new file mode 100644
index 00000000..cefd9c3d
--- /dev/null
+++ b/pc/Makefile
@@ -0,0 +1,299 @@
+# Makefile for gawk (GNU awk) 1 Sep 1995
+#
+# - for GNU C (djgpp) [executable for DOS (32-bit)]
+# - for GNU C (emx) [executable for OS/2 2.x or DOS (32-bit)]
+# - for Microsoft C 7 [ececutable for DOS (16-bit)]
+# - for Microsoft C 6.00A [executable for OS/2 or DOS (16-bit)]
+# - for Microsoft C 5.1 [executable for OS/2 or DOS (16-bit)]
+
+# Tested with ndmake and dmake-3.8 under DOS and dmake and
+# GNU make under OS/2. Compiling with dmake under DOS may require
+# the DOS-only version of dmake (so that swapping works).
+
+default:
+ @echo "Enter $(MAK) target "
+ @echo " where 'target' is chosen from "
+ @echo " djgpp ... DOS 32-bit exe [GNU C, Delorie, v1 or v2] "
+ @echo " emx ..... OS/2 32-bit exe [emx/gcc; uses emxlibc.dll] "
+ @echo " emxbnd .. OS/2 and DOS 32-bit exe [emx/gcc] "
+ @echo " msc ..... DOS exe [Microsoft C 7] "
+ @echo " msc6 .... DOS exe [Microsoft C 6.00a] "
+ @echo " msc6os2 . OS/2 exe [Microsoft C 6.00a] "
+ @echo " msc6bnd . OS/2 and DOS exe [Microsoft C 6.00a] "
+ @echo " ----------------------------------------------------- "
+ @echo " test .... Perform tests (see README_d/README.pc) "
+ @echo " install . Install gawk under $(prefix)/ "
+
+# Support dropped in 3.0
+# @echo " msc51 DOS exe [Microsoft C 5.1] "
+# @echo " msc51bnd OS/2 and DOS exe [Microsoft C 5.1] "
+
+#======================= Configuration ==================================
+RSPFILE = gawk.rsp
+#
+# Choose method for passing arguments to the linker.
+#
+# If compiling under OS/2 or if make can pass long lines
+#LDRSP = $(GAWKOBJS)
+#LINKRSP = $(LDRSP)
+#
+# else if make == dmake
+# Response files for linker: dmake allows the macro expansion
+# $(macro_name:modifier_list:modifier_list:...)
+# The macro mktmp creates a temporary file for the linker.
+# The 't' modifier is for tokenization.
+#LDRSP = @$(mktmp $(<:t"\n"))
+#LINKRSP = @$(mktmp $(<:t"+\n") ) # Space before final paren req
+#
+# else use brain-dead approach (emxbnd will need 'tr').
+RSP = $(RSPFILE)
+LDRSP = @$(RSP)
+LINKRSP = $(LDRSP)
+#------------------------------------------------------------------------
+# Some makes do not define MAKE (and ndmake does not allow a define).
+# Define MAK to be your make command.
+#MAK = $(MAKE) $(MAKEFILE)
+MAK = $(MAKE)
+#MAKEFILE = -f Makefile
+#MAK = make45 $(MAKEFILE)
+#------------------------------------------------------------------------
+# Define the base directory for the install. "make install" will install
+# in bin, lib/awk, man, and info under $(prefix)/. Most likely, you should
+# edit config.h so that $(prefix)/lib/awk appears as part of DEFPATH.
+#prefix =
+prefix = c:/gnu
+#
+# Define the install method. Method 1 is Unix-like (and requires cat,
+# cp, mkdir, sed, and sh); method 2 uses gawk and batch files.
+install = 1
+#========================================================================
+# End of general configuration. Some platform-specific configuration
+# notes appear below.
+
+
+#========================================================================
+#========================== DJGPP =======================================
+#========================================================================
+
+LDJG = $(CC) $(LF) -o gawk $(LDRSP) $(LF2)
+#BDJG = coff2exe -s /djgpp/bin/go32.exe gawk
+BDJG = coff2exe gawk
+
+djgpp:
+ $(MAK) all \
+ CC=gcc O=.o CF=-O \
+ LINK=LDJG LF=-s LF2=-lm \
+ BIND=BDJG
+
+djgpp-debug:
+ $(MAK) all \
+ CC=gcc O=.o CF=-g \
+ LINK=LDJG LF2=-lm \
+ BIND=BDJG
+
+#========================================================================
+#========================== EMX =========================================
+#========================================================================
+
+# Link command for OS/2 versions.
+LEMX = $(CC) $(LF) -o $@ $(GAWKOBJS) gawk.def -lbsd $(LF2)
+
+# Link and bind for DOS and OS/2 versions.
+# emx-09 needs '-p' emx option here or in EMXOPT environ var.
+LEMXBND = $(CC) $(LF) -o a.out $(LDRSP) gawk.def -lbsd $(LF2)
+BEMX = emxbind -b /emx/bin/emxl.exe a.out $@ -p
+#BEMX = emxbind -b /emx/bin/emx.exe a.out $@ -p
+
+emx:
+ $(MAK) all \
+ "CC=gcc -Zomf" O=.obj "CF=-O -DOS2" \
+ LINK=LEMX "LF=-s -Zcrtdll -Zstack 512" RSP=
+
+emxbnd:
+ $(MAK) all \
+ CC=gcc O=.o "CF=-O -DOS2 -DMSDOS" OBJ=popen.o \
+ LINK=LEMXBND LF=-s \
+ BIND=BEMX "P=|tr \" \" \"\n\""
+
+emxbnd-debug:
+ $(MAK) all \
+ CC=gcc O=.o CF="-g -DOS2 -DMSDOS" OBJ=popen.o \
+ LINK=LEMXBND \
+ BIND=BEMX "P=|tr \" \" \"\n\""
+
+#========================================================================
+#========================== MSC =========================================
+#========================================================================
+
+# stdargv, glob, and director are from Stewartson's sh. These provide
+# globbing and enhanced argument-passing. MSC setargv.obj is a
+# more limited alternative (and it will permit a bound version).
+#STDARGV = stdargv.obj glob.obj director.obj
+STDARGV = setargv.obj
+
+# Optimization and library options:
+# Os == optimize for size, Ot == optimize for speed, G2 == 286 or better
+#MSCOPT = -Os -G2
+MSCOPT = -Ot # -G2
+# Alternate lib, does not use math coprocessor.
+#MSCLIB = llibca
+#MSCCL = -FPa
+# Emulator lib, uses math coprocessor if present.
+MSCLIB = llibce
+MSCCL = -FPi
+#MSCCL = -FPc
+
+LMSC = link $(LF) $(LINKRSP) $(STDARGV)/NOE,$@,,/NOD:llibce $(MSCLIB)$(LF2)/STACK:0x6f00;
+
+# CLMSC-linking works when building under OS/2
+CLMSC = $(CC) -o $@ $(LF) $(GAWKOBJS) $(STDARGV) $(LF2) -link /NOE/NOI/STACK:0x6f00
+
+BMSC = bind $@ /n DOSMAKEPIPE DOSCWAIT
+
+# Ugly hack: config.h defines __STDC__ if not defined on command-line.
+# OS/2 versions can't use -Za in getid.c. MSC7 uses stub headers in pc/
+# due to ANSI conflicts. MSC 5.1 defines __STDC__=0 regardless of ANSI flag.
+
+# dmake-3.8 runs out of memory under DOS. Request that dmake
+# swap itself out on these targets. Note that this won't have
+# any affect on the bound OS/2 and DOS version of dmake-3.8.
+
+.SWAP: msc msc-debug msc6 msc6os2 msc6bnd msc51 check
+
+msc:
+ $(MAK) all \
+ "CC=cl -nologo $(MSCCL)" O=.obj "CF=-AL -Ze -Ipc/include $(MSCOPT)" \
+ OBJ=popen.obj \
+ LINK=LMSC P=+
+
+msc-debug:
+ $(MAK) all \
+ "CC=cl $(MSCCL)" O=.obj "CF=-AL -Ze -Ipc/include -W2 -Zi -Od" \
+ OBJ=popen.obj \
+ LINK=LMSC LF2=/CO P=+
+
+msc6:
+ $(MAK) all \
+ "CC=cl -nologo $(MSCCL)" O=.obj "CF=-AL -Za $(MSCOPT)" \
+ OBJ=popen.obj \
+ LINK=LMSC P=+
+
+msc6os2:
+ $(MAK) all \
+ "CC=cl $(MSCCL)" O=.obj "CF=-AL -DOS2 -UMSDOS $(MSCOPT)" \
+ LINK=LMSC "LF2=p,gawk.def" P=+
+
+msc6bnd:
+ $(MAK) all \
+ "CC=cl $(MSCCL)" O=.obj "CF=-AL -DOS2 $(MSCOPT)" \
+ OBJ=popen.obj \
+ LINK=LMSC "LF2=p,gawk.def" P=+ \
+ BIND=BMSC
+
+# Support dropped in 3.0
+#msc51:
+# $(MAK) all \
+# "CC=cl $(MSCCL)" O=.obj "CF=-AL -Za -D_MSC_VER=510 $(MSCOPT)" \
+# OBJ=popen.obj \
+# LINK=LMSC P=+
+#
+#msc51bnd:
+# $(MAK) all \
+# "CC=cl -AL ($MSCCL)" O=.obj "CF=-DOS2 -D_MSC_VER=510 $(MSCOPT)" \
+# OBJ=popen.obj \
+# LINK=CLMSC "LF=-Lp -Fb" "LF2=gawk.def"
+
+#========================================================================
+
+# Define BIND for BINDless compiles, otherwise $($(BIND)) may break.
+BIND = EMPTY
+EMPTY=
+
+CFLAGS = $(CF) -DGAWK -I. -DHAVE_CONFIG_H
+
+# object files
+AWKOBJS1 = array$O builtin$O eval$O field$O gawkmisc$O io$O main$O
+AWKOBJS2 = missing$O msg$O node$O re$O version$O
+AWKOBJS = $(AWKOBJS1) $(AWKOBJS2)
+
+ALLOBJS = $(AWKOBJS) awktab$O getid$O $(OBJ)
+
+# GNUOBJS
+# GNU stuff that gawk uses as library routines.
+GNUOBJS= getopt$O getopt1$O regex$O dfa$O
+
+GAWKOBJS = $(ALLOBJS) $(GNUOBJS)
+
+# clear out suffixes list
+# .SUFFIXES:
+.SUFFIXES: .c $O
+
+.c$O:
+ $(CC) -c $(CFLAGS) $<
+
+# rules to build gawk
+all : gawk.exe
+
+gawk.exe:: $(ALLOBJS) $(GNUOBJS) $(RSP)
+ $($(LINK))
+ $($(BIND))
+
+$(RSPFILE) : $(GAWKOBJS)
+ echo $(AWKOBJS1)$P > $@
+ echo $(AWKOBJS2)$P >> $@
+ echo awktab$O getid$O $(OBJ) $(GNUOBJS)$P >> $@
+
+$(ALLOBJS): awk.h dfa.h regex.h config.h
+
+gawkmisc$O: pc/gawkmisc.pc
+
+getopt$O: getopt.h
+
+getopt1$O: getopt.h
+
+main$O: patchlevel.h
+
+# A bug in ndmake requires the following rule
+awktab$O: awk.h awktab.c
+ $(CC) -c $(CFLAGS) awktab.c
+
+awktab.c: awk.y
+ bison -o $@ awk.y
+
+alloca$O: alloca.c
+
+#.PRECIOUS: install
+#.PHONY: install
+
+install: install$(install)
+
+install1:
+ echo extproc sh $(prefix)/bin/igawk.cmd > igawk.cmd
+ echo shift >> igawk.cmd
+ cat pc/awklib/igawk >> igawk.cmd
+ sed "s;igawk;$(prefix)/bin/igawk;" pc/awklib/igawk.bat > igawk.bat
+ sh mkinstal.sh $(prefix)/bin
+ sh mkinstal.sh $(prefix)/lib/awk $(prefix)/man/man1 $(prefix)/info
+ cp gawk.exe igawk.bat igawk.cmd pc/awklib/igawk $(prefix)/bin
+ cp awklib/eg/lib/* pc/awklib/igawk.awk $(prefix)/lib/awk
+ cp doc/*.1 $(prefix)/man/man1
+ cp doc/gawk.info $(prefix)/info
+
+# install2 is equivalent to install1, but doesn't require cp, sed, etc.
+install2:
+ gawk -v prefix=$(prefix) -f install.awk
+
+clean:
+ rm -rf gawk gawk.exe *.o *.obj core a.out $(RSPFILE)
+# cd doc && $(MAKE) clean
+# cd test && $(MAKE) clean
+# cd awklib && $(MAKE) clean
+
+awklib/eg: doc/gawk.texi
+ rm -fr awklib/eg
+ sh -c "cd awklib && ../gawk -f extract.awk ../doc/gawk.texi"
+
+check:
+ cd test && $(MAK) -k AWK=../gawk.exe
+
+test: check