164 lines
3.5 KiB
Makefile
164 lines
3.5 KiB
Makefile
|
###############################################################################
|
||
|
# Makefile for flex 2.5.0.6 (beta) with Borland C/C++ version 4.02
|
||
|
#
|
||
|
# This will probably need to be adjusted for your existing lexer/parser
|
||
|
# generators. See definitions for FLEX and YACC near the bottom of the
|
||
|
# makefile.
|
||
|
#
|
||
|
# This makefile builds initflex.exe and flex.exe by default. It
|
||
|
# removes initflex.exe after making flex.exe. After that, you may
|
||
|
# choose to try alternate compression options for your everyday flex
|
||
|
# executable.
|
||
|
#
|
||
|
# This will build flex with the large model. Don't use huge, but if you
|
||
|
# feel like experimenting with other models, post your success stories to
|
||
|
# comp.compilers, OK?
|
||
|
#
|
||
|
# This makefile does *not* implement the big testing found in "makefile.in".
|
||
|
#
|
||
|
# I also assume the availability of sed and the gnu file utilities on the
|
||
|
# system - they're readily available, so if you don't have them, why not?
|
||
|
# <grin>
|
||
|
#
|
||
|
# The resulting generated lexer (the real goal, right?) will compile
|
||
|
# (and run nicely, too) as a .c file, as well as being included such as
|
||
|
# extern "C" { #include "lexyyc" } in a .cplusplus file.
|
||
|
#
|
||
|
###############################################################################
|
||
|
|
||
|
DEBUG = 1
|
||
|
|
||
|
.autodepend
|
||
|
|
||
|
all: initflex.exe flex.exe
|
||
|
rm initflex.exe initflex.map
|
||
|
|
||
|
###############################################################################
|
||
|
#
|
||
|
# standard utilitities? ha.
|
||
|
#
|
||
|
|
||
|
CC = bcc
|
||
|
CPP = bcc
|
||
|
|
||
|
###############################################################################
|
||
|
#
|
||
|
|
||
|
MODEL = l
|
||
|
|
||
|
!if $(DEBUG) == 1
|
||
|
!message Building with debug.
|
||
|
debugCompile = -v
|
||
|
debugLink = /v
|
||
|
!else
|
||
|
!message Building without debug.
|
||
|
debugCompile =
|
||
|
debugLink =
|
||
|
!endif
|
||
|
|
||
|
LOADER = c0$(MODEL).obj
|
||
|
LIBS = c$(MODEL).lib
|
||
|
LINKFLAGS = $(debugLink)
|
||
|
|
||
|
DATASEG = -dc -Ff
|
||
|
SizeOPT = -Os -G-
|
||
|
Defines =
|
||
|
|
||
|
COMMON = -A -c -m$(MODEL) $(SizeOPT) $(DATASEG) $(Defines) $(debugCompile)
|
||
|
CFLAGS = -o$@ $(COMMON)
|
||
|
CCFLAGS = -o$@ $(COMMON) -Pcc
|
||
|
|
||
|
###############################################################################
|
||
|
|
||
|
.SUFFIXES: .cc
|
||
|
|
||
|
.cc.obj:
|
||
|
$(CPP) $(CCFLAGS) $<
|
||
|
|
||
|
.c.obj:
|
||
|
$(CPP) $(CFLAGS) $<
|
||
|
|
||
|
###############################################################################
|
||
|
#
|
||
|
# source & object files
|
||
|
#
|
||
|
|
||
|
BASESRC = ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.c \
|
||
|
sym.c tblcmp.c yylex.c skel.c
|
||
|
|
||
|
INITSRC = $(BASESRC) initscan.c
|
||
|
|
||
|
INITOBJS = $(INITSRC:.c=.obj)
|
||
|
|
||
|
SRC = $(BASESRC) scan.c
|
||
|
|
||
|
OBJS = $(SRC:.c=.obj)
|
||
|
|
||
|
objects: $(OBJS)
|
||
|
@echo $(OBJS)
|
||
|
|
||
|
###############################################################################
|
||
|
#
|
||
|
# Executable
|
||
|
#
|
||
|
|
||
|
initflex.exe: $(INITOBJS)
|
||
|
tlink $(LINKFLAGS) @&&!
|
||
|
$(LOADER) $**
|
||
|
$&.exe
|
||
|
|
||
|
$(LIBS)
|
||
|
!
|
||
|
|
||
|
flex.exe: $(OBJS)
|
||
|
tlink $(LINKFLAGS) @&&!
|
||
|
$(LOADER) $**
|
||
|
$&.exe
|
||
|
|
||
|
$(LIBS)
|
||
|
!
|
||
|
|
||
|
#
|
||
|
###############################################################################
|
||
|
#
|
||
|
# Lex files
|
||
|
#
|
||
|
|
||
|
FLEX = .\initflex
|
||
|
FLEX_FLAGS = -ist
|
||
|
|
||
|
scan.c: scan.l
|
||
|
$(FLEX) $(FLEX_FLAGS) scan.l >scan.tmp
|
||
|
sed s,\"$(srcdir)/scan.l\",\"scan.l\", <scan.tmp >scan.c
|
||
|
@rm scan.tmp
|
||
|
|
||
|
###############################################################################
|
||
|
#
|
||
|
# YACC files
|
||
|
#
|
||
|
|
||
|
YACC = .\bison
|
||
|
YFLAGS = -vdyl
|
||
|
|
||
|
parse.c: parse.y
|
||
|
$(YACC) -ydl parse.y
|
||
|
@sed "/extern char.*malloc/d" <y_tab.c >parse.c
|
||
|
@rm -f y_tab.c
|
||
|
@mv y_tab.h parse.h
|
||
|
|
||
|
###############################################################################
|
||
|
#
|
||
|
# cleanup
|
||
|
#
|
||
|
|
||
|
clean:
|
||
|
-rm *.obj *.map initflex.exe
|
||
|
|
||
|
realclean: clean
|
||
|
-rm flex.exe
|
||
|
|
||
|
#
|
||
|
# end Makefile
|
||
|
#
|
||
|
###############################################################################
|