summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoan Touzet <wohali@atypical.net>2016-07-15 18:12:47 -0400
committerJoan Touzet <wohali@atypical.net>2016-07-15 18:12:47 -0400
commit47a65c0c7b745c433c6c66720c46d7e0ec7e7a64 (patch)
tree3b8bfb7933581d5fd31afcf8f0f994880dfb80b9
parent212ac60e59ab5d2384b6b10f223e42a2ad280924 (diff)
downloadcouchdb-47a65c0c7b745c433c6c66720c46d7e0ec7e7a64.tar.gz
Add Windows Makefile, bump docs repo to match
-rw-r--r--Makefile.win320
1 files changed, 320 insertions, 0 deletions
diff --git a/Makefile.win b/Makefile.win
new file mode 100644
index 000000000..bf41d573b
--- /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