#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

PARSER_SRCS = \
  header.py \
  typelib.py \
  xpidl.py \
  $(NULL)

SDK_BINARY = \
  $(PARSER_SRCS) \
  $(IDL_PARSER_CACHE_DIR)/xpidllex.py \
  $(IDL_PARSER_CACHE_DIR)/xpidlyacc.py \
  $(NULL)

SDK_BINARY_TARGET = xpidl-parser

PLY_FILES = \
  $(topsrcdir)/other-licenses/ply/ply/__init__.py \
  $(topsrcdir)/other-licenses/ply/ply/lex.py \
  $(topsrcdir)/other-licenses/ply/ply/yacc.py \
  $(NULL)

PLY_DEST = $(SDK_BIN_DIR)/ply
INSTALL_TARGETS += PLY
PLY_TARGET = xpidl-parser

include $(topsrcdir)/config/rules.mk

# Generate the PLY lexer and parser.
$(IDL_PARSER_CACHE_DIR)/xpidllex.py: $(PARSER_SRCS) $(PLY_FILES)
	$(PYTHON_PATH) \
	  $(PLY_INCLUDE) \
	  $(srcdir)/header.py --cachedir=$(IDL_PARSER_CACHE_DIR) --regen

# generating xpidllex.py generates xpidlyacc.py too
$(IDL_PARSER_CACHE_DIR)/xpidlyacc.py: $(IDL_PARSER_CACHE_DIR)/xpidllex.py

check::
	$(PYTHON_PATH) \
	  $(PLY_INCLUDE) \
	  -I. \
	  $(srcdir)/runtests.py

garbage_files := \
  xpidllex.py \
  xpidllex.pyc \
  xpidlyacc.py \
  xpidlyacc.pyc \
  xpidl_debug \
  $(NULL)

GARBAGE += $(addprefix $(IDL_PARSER_CACHE_DIR)/,$(garbage_files))
