NODE-GYP ?= node_modules/.bin/node-gyp
|
|
|
|
# Sick of changing this. Do a check and try to use python 2 if it doesn't work
|
|
PYTHON_VERSION_FULL := $(wordlist 2,4,$(subst ., ,$(shell python --version 2>&1)))
|
|
PYTHON_VERSION_MAJOR := $(word 1,${PYTHON_VERSION_FULL})
|
|
|
|
ifeq ($(PYTHON_VERSION_MAJOR), 2)
|
|
PYTHON = python
|
|
else
|
|
PYTHON = python2
|
|
endif
|
|
|
|
NODE ?= node
|
|
CPPLINT ?= cpplint.py
|
|
BUILDTYPE ?= Release
|
|
TESTS = "test/**/*.js"
|
|
E2E_TESTS = $(wildcard e2e/*.spec.js)
|
|
TEST_REPORTER =
|
|
TEST_OUTPUT =
|
|
CONFIG_OUTPUTS = \
|
|
build/bindings.target.mk \
|
|
build/Makefile \
|
|
build/binding.Makefile build/config.gypi
|
|
|
|
CPPLINT_FILES = $(wildcard src/*.cc src/*.h)
|
|
CPPLINT_FILTER = -legal/copyright
|
|
JSLINT_FILES = lib/*.js test/*.js e2e/*.js
|
|
|
|
PACKAGE = $(shell node -pe 'require("./package.json").name.split("/")[1]')
|
|
VERSION = $(shell node -pe 'require("./package.json").version')
|
|
|
|
GYPBUILDARGS=
|
|
ifeq ($(BUILDTYPE),Debug)
|
|
GYPBUILDARGS=--debug
|
|
endif
|
|
|
|
.PHONY: all clean lint test lib docs e2e ghpages check
|
|
|
|
all: lint lib test e2e
|
|
|
|
lint: cpplint jslint
|
|
|
|
cpplint:
|
|
@$(PYTHON) $(CPPLINT) --filter=$(CPPLINT_FILTER) $(CPPLINT_FILES)
|
|
|
|
jslint: node_modules/.dirstamp
|
|
@./node_modules/.bin/jshint --verbose $(JSLINT_FILES)
|
|
|
|
lib: node_modules/.dirstamp $(CONFIG_OUTPUTS)
|
|
@PYTHONHTTPSVERIFY=0 $(NODE-GYP) build $(GYPBUILDARGS)
|
|
|
|
node_modules/.dirstamp: package.json
|
|
@npm update --loglevel warn
|
|
@touch $@
|
|
|
|
$(CONFIG_OUTPUTS): node_modules/.dirstamp binding.gyp
|
|
@$(NODE-GYP) configure
|
|
|
|
test: node_modules/.dirstamp
|
|
@./node_modules/.bin/mocha $(TEST_REPORTER) $(TESTS) $(TEST_OUTPUT)
|
|
|
|
check: node_modules/.dirstamp
|
|
@$(NODE) util/test-compile.js
|
|
|
|
e2e: $(E2E_TESTS)
|
|
@./node_modules/.bin/mocha --exit $(TEST_REPORTER) $(E2E_TESTS) $(TEST_OUTPUT)
|
|
|
|
define release
|
|
NEXT_VERSION=$(shell node -pe 'require("semver").inc("$(VERSION)", "$(1)")')
|
|
node -e "\
|
|
var j = require('./package.json');\
|
|
j.version = \"$$NEXT_VERSION\";\
|
|
var s = JSON.stringify(j, null, 2);\
|
|
require('fs').writeFileSync('./package.json', s);" && \
|
|
git commit -m "release $$NEXT_VERSION" -- package.json && \
|
|
git tag "$$NEXT_VERSION" -m "release $$NEXT_VERSION"
|
|
endef
|
|
|
|
docs: node_modules/.dirstamp
|
|
@rm -rf docs
|
|
@./node_modules/jsdoc/jsdoc.js --destination docs \
|
|
--recurse -R ./README.md \
|
|
-t "./node_modules/toolkit-jsdoc/" \
|
|
--tutorials examples ./lib
|
|
|
|
gh-pages: node_modules/.dirstamp
|
|
@./make_docs.sh
|
|
|
|
release-patch:
|
|
@$(call release,patch)
|
|
|
|
clean: node_modules/.dirstamp
|
|
@rm -f deps/librdkafka/config.h
|
|
@$(NODE-GYP) clean
|