#**************************************************************************
#*                                                                        *
#*                                 OCaml                                  *
#*                                                                        *
#*            Xavier Leroy, projet Cristal, INRIA Rocquencourt            *
#*                                                                        *
#*   Copyright 1999 Institut National de Recherche en Informatique et     *
#*     en Automatique.                                                    *
#*                                                                        *
#*   All rights reserved.  This file is distributed under the terms of    *
#*   the GNU Lesser General Public License version 2.1, with the          *
#*   special exception on linking described in the file LICENSE.          *
#*                                                                        *
#**************************************************************************

# Makefile for the parser generator.

ROOTDIR = ..

include $(ROOTDIR)/Makefile.config

OC_CPPFLAGS += -I$(ROOTDIR)/runtime

ocamlyacc_SOURCES := $(addsuffix .c,\
  closure error lalr lr0 main mkpar output reader skeleton symtab verbose \
  warshall)

ocamlyacc_OBJECTS := $(ocamlyacc_SOURCES:.c=.$(O))

generated_files := ocamlyacc$(EXE) $(ocamlyacc_OBJECTS)  version.h

all: ocamlyacc$(EXE)

ifeq ($(TOOLCHAIN),cc)
MKEXE_ANSI=$(MKEXE)
endif

ocamlyacc$(EXE): $(ocamlyacc_OBJECTS)
	$(MKEXE_ANSI) -o $@ $^ $(EXTRALIBS)

version.h : $(ROOTDIR)/VERSION
	echo "#define OCAML_VERSION \"`sed -e 1q $< | tr -d '\r'`\"" > $@

clean:
	rm -f $(generated_files)

depend:

closure.$(O): defs.h
error.$(O): defs.h
lalr.$(O): defs.h
lr0.$(O): defs.h
main.$(O): defs.h version.h
mkpar.$(O): defs.h
output.$(O): defs.h
reader.$(O): defs.h
skeleton.$(O): defs.h
symtab.$(O): defs.h
verbose.$(O): defs.h
warshall.$(O): defs.h

# The following rule is similar to make's default one, except that it
# also works for .obj files.

%.$(O): %.c
	$(CC) -c $(OC_CFLAGS) $(OC_CPPFLAGS) $(OUTPUTOBJ)$@ $<
