# 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/.

DEPTH = @DEPTH@
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@

include $(DEPTH)/config/autoconf.mk

PYTHON_UNIT_TESTS := \
  test.py \
  $(NULL)

include $(topsrcdir)/config/rules.mk

# Harness packages from the srcdir
MOZBASE_PACKAGES = \
  manifestdestiny \
  mozcrash \
  mozfile \
  mozhttpd \
  mozinfo \
  mozinstall \
  mozlog \
  mozprocess \
  mozprofile \
  mozrunner \
  mozdevice \
  moznetwork \
  mozsystemmonitor \
  moztest \
  $(NULL)

MOZBASE_EXTRAS = \
  setup_development.py \
  $(NULL)

_DEST_DIR = $(DEPTH)/_tests/mozbase
libs:: $(MOZBASE_PACKAGES)
	$(PYTHON) $(topsrcdir)/config/nsinstall.py $^ $(_DEST_DIR)
libs:: $(MOZBASE_EXTRAS)
	$(PYTHON) $(topsrcdir)/config/nsinstall.py $^ $(_DEST_DIR)

stage-package: PKG_STAGE = $(DIST)/test-package-stage
stage-package:
	$(NSINSTALL) -D $(PKG_STAGE)/mozbase
	@(cd $(srcdir) && tar $(TAR_CREATE_FLAGS) - $(MOZBASE_PACKAGES)) | (cd $(PKG_STAGE)/mozbase && tar -xf -)
	@(cd $(srcdir) && tar $(TAR_CREATE_FLAGS) - $(MOZBASE_EXTRAS)) | (cd $(PKG_STAGE)/mozbase && tar -xf -)
