# Makefile.in
#
# Copyright © 2012, 2013 Brandon Invergo <brandon@invergo.net>
# Copyright © 2014, 2015 Christopher Allan Webber <cwebber@dustycloud.org>
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.

# List whatever files you want to include in your source distribution here.
# You can include whole directories but note that *everything* under that 
# directory will be included
DISTFILES = PKG-INFO Makefile.in configure setup.py install-sh

DESTDIR = 
VPATH = @srcdir@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_DISTNAME = ${PACKAGE_NAME}-${PACKAGE_VERSION}
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PYTHON = @PYTHON@
VIRTUALENV = @VIRTUALENV@
SHELL = @SHELL@
MKDIR_P = @MKDIR_P@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
prefix = @prefix@
srcdir = @srcdir@
abs_srcdir = @abs_srcdir@
datadir = @datadir@
datarootdir = @datarootdir@
pkgdatadir = $(datadir)/@PACKAGE_NAME@
pkgincludedir = $(includedir)/@PACKAGE_NAME@
PYTHONPATH = $(pythondir)$(PATH_SEPARATOR)$(DESTDIR)$(pythondir)
USE_PYTHON3 = @USE_PYTHON3@

EXTLIB_INSTALLS = extlib/jquery extlib/video.js extlib/leaflet extlib/tinymce

# pkgpythondir = @pkgpythondir@
# pkgpyexecdir = @pkgpyexecdir@
# pythondir = @pythondir@
# pyexecdir = @pyexecdir@
# SPHINXBUILD = @SPHINXBUILD@
# POSTGRES = @POSTGRES@


# Maybe add a virtualenv prefix to a command
ifneq ($(VIRTUALENV),no)
# virtualenv specified to be included by config (default)
#   ... we only use virtualenv for local development, we don't
#   auto-deploy to it.

maybe_venved = ./bin/
maybe_venved_python = ./bin/python
# Yes, build the virtualenv as a dependency!
maybe_venv_dep = virtualenv
# And to clean up!
maybe_venv_clean = clean-virtualenv

else
# --without-virtualenv must have been passed in... don't build
#   a local virtualenv or use such commands
maybe_venved =
maybe_venved_python = $(PYTHON)
# No need for commands to build virtualenv as a dependency!
maybe_venv_dep = 
# Nor to clean up!
maybe_venv_clean = 
endif

.PHONY: all install uninstall distclean info install-html html \
install-pdf pdf install-dvi dvi install-ps ps clean dist check \
installdirs i18n virtualenv docs extlib

# update postgresql

all: develop

docs:
ifneq ($(VIRTUALENV),no)
	source bin/activate && cd docs && make html
else
	cd docs && make html
endif

# In the future we may provide more options than just npm/bower here
# eg, we may support guix updating.
extlib:
	./devtools/update_extlib.sh

develop: $(maybe_venv_dep) i18n mediagoblin.ini

# NEVER clobber a user's mediagoblin.ini once they've defined it
mediagoblin.ini:
	cp -n mediagoblin.example.ini mediagoblin.ini

# base-configs: paste.ini mediagoblin.example.ini

install: installdirs
	$(maybe_venved_python) $(srcdir)/setup.py install --prefix=$(DESTDIR)$(prefix)


# In the future, maybe we can compile the individual .po files here?
i18n: $(maybe_venv_dep)
	./devtools/compile_translations.sh


ifneq ($(VIRTUALENV),no)
./bin/python:
	rm -f ./bin/python
	${VIRTUALENV} --system-site-packages --python=$(PYTHON) .
	./bin/python setup.py develop --upgrade

virtualenv: bin/python extlib

clean-virtualenv:
	rm -rf ./bin/
	rm -rf ./lib/
	rm -rf ./include/
endif

# setup.py doesn't (yet) support an uninstall command, so until it does, you 
# must manually remove everything that was installed here. The following example
# should remove a basic package installed via setup.py, but please double- and 
# triple-check it so that you don't remove something you shouldn't!
# Be sure to remove any extra files you install, such as binaries or documentation!
# 
# uninstall: 
# 	rm -rvf $(pkgpythondir)
# 	rm -v $(pythondir)/$(PACKAGE_DISTNAME)-*.egg-info
# 

# We don't know what this does yet.
# Originally:
## Just use the usual setup.py clean command
#clean:
#	$(maybe_venved_python) setup.py clean
clean:
	@echo "No rule to clean house, yet."
	@echo "distclean works but might do more than you want. :)"


# It's not obvious to me whether the virtualenv/bower/npm things should be
# auto-cleaned as part of distclean.  I'm leaning towards "yes" for now but
# I'm not really happy about that.

# Clean up the output of configure
distclean: $(maybe_venv_clean)
	rm -vf $(srcdir)/config.log
	rm -vf $(srcdir)/config.status
	rm -rvf $(srcdir)/autom4te.cache
	rm -vf $(srcdir)/aclocal.m4
	rm -rf $(EXTLIB_INSTALLS)
	rm -rf node_modules
	rm -vf $(srcdir)/Makefile

check:
	./runtests.sh

###########################################################################
# These things aren't really tested / supported yet.
###########################################################################


## NOTE: We don't use this yet, we use ./devtools/maketarball.sh
##   We can't switch out ./devtools/maketarball.sh in here because
##   it requires a git revision as a first argument, which
##   doesn't always work here

dist: $(maybe_venv_dep)
	$(maybe_venved_python) setup.py sdist

# setup.py might complain if a directory doesn't exist so just in case, make the directory
# here
installdirs:
	$(MKDIR_P) $(DESTDIR)$(prefix)

######################
# Needs to be updated?
######################

# The following show how to install documentation. In this example,
# docs are built from a separate Makefile contained in the docs
# directory which uses the SPHINXBUILD variable to store the location
# of the sphinx-build (Python doc tool) binary to use.

$(DESTDIR)$(infodir)/mediagoblin.info: docs/build/texinfo/mediagoblin.info
	$(POST_INSTALL)
	$(INSTALL_DATA) @< $(DESTDIR)$@
	if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then
		install-info --dir-file=$(DESTDIR)$(infodir)/dir \
				$(DESTDIR)$(infodir)/foo.info;
	else true; fi

info: docs/build/texinfo/mediagoblin.info

docs/build/texinfo/mediagoblin.info: $(wildcard docs/source/*)
ifneq ($(VIRTUALENV),no)
	source bin/activate && cd docs && make info
else
	cd docs && make info
endif


install-html: html installdirs
	$(INSTALL_DATA) docs/build/html/* $(DESTDIR)$(htmldir)

html: docs
