SmallCC / src / Makefile

TARGET			=	../scc

LEX					= ocamllex
YACC				= ocamlyacc
OCAML				=	ocamlopt

CFLAGS			=
LDFLAGS			= -ccopt -L. unix.cmxa

SRCSLEX			=	lexer.mll
SRCSYACC		=	parser.mly

SRCS				= node.ml $(SRCSLEX:.mll=.ml) $(SRCSYACC:.mly=.ml)
SRCS				+= option.ml visitor.ml prettyprint.ml
SRCS				+= wrapper.ml compiler.ml main.ml

OBJS				= $(SRCS:.ml=.cmx)

FILES				= ast.cmi $(SRCSLEX:.mll=.ml) $(SRCSYACC:.mly=.ml) $(OBJS)

ifeq ($(V), 1)
		MAKEFLAGS	=
		echo			=
else
		MAKEFLAGS	= --silent --no-print-directory
		echo			=	echo -e $(1)
endif

all: $(TARGET)

$(TARGET): $(FILES)
	$(call echo, "LD\t$@")
	$(OCAML) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@

%.cmi: %.mli
	$(call echo, "OCAML\t$@")
	$(OCAML) $(CFLAGS) -c $< -o $@

%.cmx: %.ml
	$(call echo, "OCAML\t$@")
	$(OCAML) $(CFLAGS) -c $< -o $@

%.ml: %.mly
	$(call echo, "YACC\t$@")
	$(YACC) $<
	$(OCAML) $(CFLAGS) -c $@i

%.ml: %.mll
	$(call echo, "LEX\t$@")
	$(LEX) $<

clean:
	$(call echo, "RM\t$(FILES) parser.mli")
	rm -rf $(FILES) parser.mli *.o *.cmi

distclean: clean
	$(call echo, "RM\t$(TARGET)")
	rm -rf $(TARGET)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.