📄 msdos.notes
字号:
$Header:$Notes on Porting flex to MS-DOS-------------------------------[These notes were last revised 30Dec89 for flex release 2.2.]Previous releases of flex have been successfully built using Microsoft C andthe following options: /AL, /stack:10000, -LARGE, -Ml, -Mt128, -DSYS_VOther folks report that the following work for MSC 5.1 under DOS and OS/2: CFLAGS=-ALu -F 8000 -Gt16000 -Ox -DMS_DOS -DSYS_V -D__RUNTIME_YYMAXDEPTH LINKFLAGS=/E /FAR /PAC /NOIWhere you may want to adjust -F up in order to increase available stacksize (though it may not be necessary) and you may want to increase -Gtto some number that puts just enought of the big data items in their owndata segments. (The default for -Gt is items of 32k. This is too high forflex.) __RUNTIME_YYMAXDEPTH is useful if you have a parse.c that'sbeen generated by a yacc that understands how to do this; otherwise, it's ano-op.Jeffrey R. Jones (jjones@angate.att.com) writes [this has been edited -vp]:.... The port was accomplished with: AT&T 6312 WGS (12 Mhz AT class machine) Microsoft C compiler Version 5.0 'make' utility from Aztec-C package (subset of unix-make)The re-done makefile is included .... Do what you wish with it.[note that this Makefile is now slightly out of date and has not been tested with flex 2.2]# This makefile is used to port the flex 2.1 build to a PC. The compiler is# Microsoft-C Version 5.0 while the 'make' utility came with Aztec-C, which# is VERY compatible with Unix's make. There are a few things that Aztec-C's# 'make' can't do that unix does so I have made a few minor changes.# At the least you can manually compile each file and then link.# The linker and library utilities are alos Microsoft's.## Additionally, after building with the large model, the flex.map reveals that# code-size is less than 64K, therefore, in favor of a little more execution# efficiency, I built with the compact model. I've used the default compiler# optimization (no /O switches).## The linker must be told to increase the run-time stack space. The default# stack space is 2048. Flexing scan.l with the default stack-space results in# a run-time stack overflow, hence the stack was increase to 4096.## NOTE: I have MKS-Toolkit's yacc and was able to use it with virtually no# modifications to anything. If you don't have yacc for a PC, you can try# yaccing on a unix system and downloading the resulting files to the PC.## Jeffrey R. Jones# jjones@angate!att.com# make file for "flex" tool# @(#) $Header: Makefile,v 2.3 89/06/20 17:27:12 vern Exp $ (LBL)# Porting considerations:## For System V Unix machines, add -DSYS_V to CFLAGS.# For Vax/VMS, add -DSYS_V to CFLAGS.# For MS-DOS, add "-DMS_DOS -DSYS_V" to CFLAGS. Create \tmp if not present.# You will also want to rename flex.skel to something with a three# character extension, change SKELETON_FILE below appropriately,# For Amiga, add "-DAMIGA -DSYS_V" to CFLAGS.# the first time around use "make first_flex"YACC=yaccSKELETON_DIR = c:/usr/contrib/libSKELETON_FILE = flex.skeSKELFLAGS = -DDEFAULT_SKELETON_FILE=\"$(SKELETON_DIR)/$(SKELETON_FILE)\"CFLAGS = -c -AC -DMS_DOS -DSYS_VLDFLAGS = /noi /cp:1 /stack:4096#this null definition prevents a returned error codeMFLAGS =FLEX_FLAGS =FLEX = flexCC = cl# redefine Aztec make's built-in rule.c.obj: $(CC) $(CFLAGS) $*.c# break obj-list into two because of 128 character command-line limit of# Microsoft's link and lib utilities.FLEXOBJS1 = ccl.obj dfa.obj ecs.obj gen.obj main.obj misc.obj nfa.obj parse.objFLEXOBJS2 = scan.obj sym.obj tblcmp.obj yylex.objFLEX_C_SOURCES = \ ccl.c \ dfa.c \ ecs.c \ gen.c \ main.c \ misc.c \ nfa.c \ parse.c \ scan.c \ sym.c \ tblcmp.c \ yylex.c# lib is used to get around the 128 character command-line limit of 'link'.flex.exe : $(FLEXOBJS1) $(FLEXOBJS2) lib tmplib $(FLEXOBJS1); link $(LDFLAGS) $(FLEXOBJS2),$*.exe,,tmplib; rm -f tmplib.lib# the second 'make flex.exe' causes scan.l to be RE-flexed. The resulting# scan.c is different from initscan.c in that \r\n are added instead of# just \n. Since \r\n is DOS language and this is targetted for PCs, and# since I don't know what would happen for all cases in DOS-land, I went# ahead and did it.first_flex: cp initscan.c scan.c make $(MFLAGS) flex.exe rm -f scan.c make flex.exeparse.obj: parse.c parse.hparse.h parse.c : parse.y $(YACC) -d parse.y @mv ytab.c parse.c @mv ytab.h parse.hscan.c : scan.l $(FLEX) -ist $(FLEX_FLAGS) scan.l > scan.cscan.obj : scan.c parse.hmain.obj : main.c $(CC) $(CFLAGS) $(SKELFLAGS) main.c####################don't have, or need, anything else except maybe the 'test' rule.## don't have nroff#flex.man : flex.1# nroff -man flex.1 >flex.man## don't have lint#lint : $(FLEX_C_SOURCES)# lint $(FLEX_C_SOURCES) > flex.lint##distrib :# mv scan.c initscan.c# chmod 444 initscan.c# $(MAKE) $(MFLAGS) clean##clean :# rm -f core errs flex *.o parse.c *.lint parse.h flex.man tags##tags :# ctags $(FLEX_C_SOURCES)##vms : flex.man# $(MAKE) $(MFLAGS) distrib## break this up into multiple lines...Aztec 'make' limitationtest : $(FLEX) -ist $(FLEX_FLAGS) scan.l > scan.tst diff scan.c scan.tst rm -f scan.tst
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -