Repository: couchdb Updated Branches: refs/heads/master 212ac60e5 -> 47a65c0c7
Add Windows Makefile, bump docs repo to match Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/47a65c0c Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/47a65c0c Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/47a65c0c Branch: refs/heads/master Commit: 47a65c0c7b745c433c6c66720c46d7e0ec7e7a64 Parents: 212ac60 Author: Joan Touzet <woh...@atypical.net> Authored: Fri Jul 15 18:12:47 2016 -0400 Committer: Joan Touzet <woh...@atypical.net> Committed: Fri Jul 15 18:12:47 2016 -0400 ---------------------------------------------------------------------- Makefile.win | 320 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 320 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb/blob/47a65c0c/Makefile.win ---------------------------------------------------------------------- diff --git a/Makefile.win b/Makefile.win new file mode 100644 index 0000000..bf41d57 --- /dev/null +++ b/Makefile.win @@ -0,0 +1,320 @@ +# 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)$(COUCHDB_VERSION_SUFFIX) + +DESTDIR= + +# Rebar options +apps= +skip_deps=folsom,lager,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) eunit + @$(MAKE) 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 > \dev\null 2>&1 # make full erlang release + +ifeq ($(with_fauxton), 1) + -@mkdir rel\couchdb\share + @robocopy /E share\www rel\couchdb\share +endif + +ifeq ($(with_docs), 1) +ifeq ($(IN_RELEASE), true) + -@mkdir rel\couchdb\share\www\docs + -@mkdir rel\couchdb\share\docs + @robocopy /E share\docs\html\* rel\couchdb\share\www\docs + @copy share\docs\pdf\CouchDB.pdf rel\couchdb\share\docs\CouchDB.pdf + @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 + -@mkdir rel\couchdb\share\docs + @robocopy /E src\docs\build\html\ rel\couchdb\share\www\docs + @copy src\docs\build\latex\CouchDB.pdf rel\couchdb\share\docs\CouchDB.pdf + @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 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 " robocopy /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\grunt-cli\bin\grunt couchdb +endif