# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#   http:\\www.apache.org\licenses\LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

include version.mk

REBAR?=$(shell where rebar.cmd)
IN_RELEASE = $(shell if not exist .git echo true)
ifeq ($(IN_RELEASE), true)
COUCHDB_VERSION_SUFFIX = -$(shell git rev-parse --short --verify HEAD)
else
COUCHDB_VERSION_SUFFIX = 
endif
COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch)

DESTDIR=

# Rebar options
apps=
skip_deps=folsom,meck,mochiweb,proper,snappy
suites=
tests=

# no sed on Windows, hard code since apps\suites\tests are empty
EUNIT_OPTS=skip_deps=$(skip_deps)
DIALYZE_OPTS=skip_deps=$(skip_deps)

################################################################################
# Main commands
################################################################################


.PHONY: all
# target: all - Build everything
all: couch fauxton docs


################################################################################
# Building
################################################################################


.PHONY: couch
# target: couch - Build CouchDB core
couch: config.erl
	@set COUCHDB_VERSION=$(COUCHDB_VERSION) && $(REBAR) compile
	@copy src\couch\priv\couchjs.exe bin


.PHONY: docs
# target: docs - Build documentation
ifeq ($(IN_RELEASE), true)
docs: share\docs\html
else
docs: src\docs\build
endif

.PHONY: fauxton
# target: fauxton - Build Fauxton web UI
fauxton: share\www


################################################################################
# Testing
################################################################################


.PHONY: check
# target: check - Test everything
check: all
	@$(MAKE) -f Makefile.win eunit
	@$(MAKE) -f Makefile.win javascript


.PHONY: eunit
# target: eunit - Run EUnit tests, use EUNIT_OPTS to provide custom options
eunit: export ERL_AFLAGS = $(shell echo "-config rel/files/eunit.config")
eunit: export BUILDDIR = $(shell echo %cd%)
eunit:
	@$(REBAR) setup_eunit 2> nul
	@$(REBAR) -r eunit $(EUNIT_OPTS)


.PHONY: javascript
# target: javascript - Run JavaScript test suites or specific ones defined by suites option
javascript:
	-@mkdir share\www\script\test
ifeq ($(IN_RELEASE), true)
	@copy test\javascript\tests\lorem*.txt share\www\script\test
else
	-@mkdir src\fauxton\dist\release\test
	@copy test\javascript\tests\lorem*.txt src\fauxton\dist\release\test
endif
	-@rmdir /s/q dev\lib
	@python dev\run -n 1 -q --with-admin-party-please python test\javascript\run $(suites)


.PHONY: check-qs
# target: check-qs - Run query server tests (ruby and rspec required!)
check-qs:
	@QS_LANG=js rspec test\view_server\query_server_spec.rb


################################################################################
# Developing
################################################################################


.PHONY: build-plt
# target: build-plt - Build project-specific PLT
build-plt:
	@$(REBAR) -r build-plt $(DIALYZE_OPTS)


.PHONY: check-plt
# target: check-plt - Check the PLT for consistency and rebuild it if it is not up-to-date
check-plt:
	@$(REBAR) -r check-plt $(DIALYZE_OPTS)


.PHONY: dialyze
# target: dialyze - Analyze the code for discrepancies
dialyze: .rebar
	@$(REBAR) -r dialyze $(DIALYZE_OPTS)


.PHONY: docker-image
# target: docker-image - Build Docker image
docker-image:
	@docker build --rm -t couchdb\dev-cluster .


.PHONY: docker-start
# target: docker-start - Start CouchDB in Docker container
docker-start:
	@docker run -d -P -t couchdb\dev-cluster > .docker-id


.PHONY: docker-stop
# target: docker-stop - Stop Docker container
docker-stop:
	@docker stop `cat .docker-id`


.PHONY: introspect
# target: introspect - Check for commits difference between rebar.config and repository
introspect:
	@$(REBAR) -r update-deps
	@escript .\introspect


################################################################################
# Distributing
################################################################################


.PHONY: dist
# target: dist - Make release tarball
dist: all
	@.\build-aux\couchdb-build-release.sh $(COUCHDB_VERSION)

	@copy -r share\www apache-couchdb-$(COUCHDB_VERSION)\share
	@mkdir apache-couchdb-$(COUCHDB_VERSION)\share\docs\html
	@copy -r src\docs\build\html apache-couchdb-$(COUCHDB_VERSION)\share\docs
	@mkdir apache-couchdb-$(COUCHDB_VERSION)\share\docs\pdf
	@copy src\docs\build\latex\CouchDB.pdf apache-couchdb-$(COUCHDB_VERSION)\share\docs\pdf

	@mkdir apache-couchdb-$(COUCHDB_VERSION)\share\docs\man
	@copy src\docs\build\man\apachecouchdb.1 apache-couchdb-$(COUCHDB_VERSION)\share\docs\man
	@mkdir apache-couchdb-$(COUCHDB_VERSION)\share\docs\info
	@copy src\docs\build\texinfo\CouchDB.info apache-couchdb-$(COUCHDB_VERSION)\share\docs\info

	@tar czf apache-couchdb-$(COUCHDB_VERSION).tar.gz apache-couchdb-$(COUCHDB_VERSION)
	@echo "Done: apache-couchdb-$(COUCHDB_VERSION).tar.gz"


.PHONY: release
# target: release - Create an Erlang release including CouchDB!
-include install.mk
release: all
	@echo Installing CouchDB into rel\couchdb\ ...
	-@rmdir /s/q rel\couchdb
	@$(REBAR) generate
	@copy src\couch\priv\couchjs.exe rel\couchdb\bin

ifeq ($(with_fauxton), 1)
	-@mkdir rel\couchdb\share
	-@xcopy share\www rel\couchdb\share\www /E/I
endif

ifeq ($(with_docs), 1)
	-@mkdir rel\couchdb\share\www\docs
	-@mkdir rel\couchdb\share\docs
ifeq ($(IN_RELEASE), true)
	@xcopy share\docs\html rel\couchdb\share\www\docs /E /I
	@copy share\docs\man\apachecouchdb.1 rel\couchdb\share\docs\couchdb.1
	-@copy share\docs\info\CouchDB.info rel\couchdb\share\docs\CouchDB.info
else
	@xcopy src\docs\build\html rel\couchdb\share\www\docs /E /I
	@copy src\docs\build\man\apachecouchdb.1 rel\couchdb\share\docs\couchdb.1
	-@copy src\docs\build\texinfo\CouchDB.info rel\couchdb\share\docs\CouchDB.info
endif
endif

	@echo ... done
	@echo .
	@echo     You can now copy the rel\couchdb directory anywhere on your system.
	@echo     Start CouchDB with .\bin\couchdb.cmd from within that directory.
	@echo .

.PHONY: install
# target: install- install CouchDB :)
install:
	@echo .
	@echo Notice: There is no 'make install' command for CouchDB 2.0 yet.
	@echo .
	@echo     To install CouchDB into your system, copy the rel\couchdb
	@echo     to your desired installation location. For example:
	@echo     xcopy /E rel\couchdb \usr\local\lib
	@echo .

################################################################################
# Cleaning
################################################################################


.PHONY: clean
# target: clean - Remove build artifacts
clean:
	@$(REBAR) -r clean
	-@rmdir /s/q .rebar
	-@del /f/q bin\couchjs.exe
	-@rmdir /s/q src\*\ebin
	-@rmdir /s/q src\*\.rebar
	-@del /f/q/s src\*.dll
	-@del /f/q src\couch\priv\*.exe
	-@del /f/q share\server\main.js share\server\main-coffee.js
	-@rmdir /s/q tmp 
	-@rmdir /s/q dev\data
	-@rmdir /s/q dev\lib
	-@rmdir /s/q dev\logs
	-@del /f/q src\couch\priv\couch_js\config.h
	-@del /f/q dev\boot_node.beam dev\pbkdf2.pyc log\crash.log


.PHONY: distclean
# target: distclean - Remove build and release artifacts
distclean: clean
	-@del install.mk
	-@del config.erl
	-@del rel\couchdb.config
ifneq ($(IN_RELEASE), true)
# when we are in a release, don’t delete the
# copied sources, generated docs, or fauxton
	-@rmdir /s/q rel\couchdb
	-@rmdir /s/q share\www
	-@rmdir /s/q src\docs
endif


.PHONY: devclean
# target: devclean - Remove dev cluster artifacts
devclean:
	-@rmdir /s/q dev\lib\node1\data
	-@rmdir /s/q dev\lib\node2\data
	-@rmdir /s/q dev\lib\node3\data


.PHONY: uninstall
# target: uninstall - Uninstall CouchDB :-(
uninstall:
	-@rmdir /s/q $(DESTDIR)\$(install_dir)
	-@del $(DESTDIR)\$(bin_dir)\couchdb
	-@rmdir /s/q $(DESTDIR)\$(libexec_dir)
	-@rmdir /s/q $(DESTDIR)\$(sysconf_dir)
	-@rmdir /s/q $(DESTDIR)\$(data_dir)
	-@rmdir /s/q $(DESTDIR)\$(doc_dir)
	-@rmdir /s/q $(DESTDIR)\$(html_dir)
	-@rmdir /s/q $(DESTDIR)\$(pdf_dir)
	-@rmdir /s/q $(DESTDIR)\$(man_dir)
	-@rmdir /s/q $(DESTDIR)\$(info_dir)


################################################################################
# Misc
################################################################################


.rebar: build-plt

config.erl:
	@echo Apache CouchDB has not been configured.
	@echo Try "powershell -ExecutionPolicy Bypass .\configure.ps1 -?" for help.
	@echo You probably want "powershell -ExecutionPolicy Bypass .\configure.ps1 -WithCurl".
	@echo.
	@false


src\docs\build:
	@echo Building docs...
ifeq ($(with_docs), 1)
	@cd src\docs && make.bat html && make.bat texinfo && make.bat man
endif


share\www:
ifeq ($(with_fauxton), 1)
	@echo "Building Fauxton"
	@cd src\fauxton && npm install --production && .\node_modules\.bin\grunt couchdb
endif
