############################################# # Copyright 2018, Nexedi SA # # This program is free software: you can Use, Study, Modify and Redistribute # it under the terms of the GNU General Public License version 3, or (at your # option) any later version, as published by the Free Software Foundation. # # You can also Link and Combine this program with other software covered by # the terms of any of the Free Software licenses or any of the Open Source # Initiative approved licenses and Convey the resulting work. Corresponding # source of such a combination shall include the source code for all other # software used. # # This program is distributed WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # See COPYING file for full licensing terms. # See https://www.nexedi.com/licensing for rationale and options. ############################################# include config.mk DISTDIR = dist SRCDIR = src LINTDIR = lint TESTDIR = test EXAMPLEDIR = examples EXTERNALDIR = external VERSION = 3.33.0 JIOVERSION = ${DISTDIR}/jio-v${VERSION}.js JIOLATEST = ${DISTDIR}/jio-latest.js JIONODEVERSION = ${DISTDIR}/jio-v${VERSION}-node.js JIONODELATEST = ${DISTDIR}/jio-latest-node.js all: fetch lint build ############################################# # Lint ############################################# LINTOPTS = --maxlen 80 --indent 2 --maxerr 3 --terse ${LINTDIR}/jio.storage/%.js: ${SRCDIR}/jio.storage/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --predef jIO --predef window $< @cat $< > $@ ${LINTDIR}/jio.js: ${SRCDIR}/jio.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --nomen true $< @cat $< > $@ ${LINTDIR}/jio.date/%.js: ${SRCDIR}/jio.date/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} $< @cat $< > $@ ${LINTDIR}/queries/query.js: ${SRCDIR}/queries/query.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} $< @cat $< > $@ ${LINTDIR}/${TESTDIR}/jio.storage/%.js: ${TESTDIR}/jio.storage/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --predef QUnit --predef RSVP --predef jIO $< @cat $< > $@ ${LINTDIR}/${TESTDIR}/queries/%.js: ${TESTDIR}/queries/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --predef QUnit --predef RSVP --predef jIO $< @cat $< > $@ ${LINTDIR}/${TESTDIR}/jio/%.js: ${TESTDIR}/jio/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --predef QUnit --predef RSVP --predef jIO $< @cat $< > $@ ${LINTDIR}/${EXAMPLEDIR}/%.js: ${EXAMPLEDIR}/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --predef RSVP --predef window --predef QUnit --predef jIO --predef rJS $< @cat $< > $@ ${LINTDIR}/node/%.js: ${SRCDIR}/node/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} --nomen true $< @cat $< > $@ ${LINTDIR}/${TESTDIR}/%.js: ${TESTDIR}/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} $< @cat $< > $@ ${LINTDIR}/${TESTDIR}/node/%.js: ${TESTDIR}/node/%.js @mkdir -p $(@D) ${JSLINT} ${LINTOPTS} $< @cat $< > $@ ############################################# # Check test files ############################################# lint: $(patsubst ${TESTDIR}/jio.storage/%.js, ${LINTDIR}/${TESTDIR}/jio.storage/%.js, $(wildcard ${TESTDIR}/jio.storage/*.js)) \ $(patsubst ${TESTDIR}/queries/%.js, ${LINTDIR}/${TESTDIR}/queries/%.js, $(wildcard ${TESTDIR}/queries/*.js)) \ $(patsubst ${TESTDIR}/jio/%.js, ${LINTDIR}/${TESTDIR}/jio/%.js, $(wildcard ${TESTDIR}/jio/*.js)) \ $(patsubst ${EXAMPLEDIR}/%.js, ${LINTDIR}/${EXAMPLEDIR}/%.js, $(wildcard ${EXAMPLEDIR}/*.js)) \ $(patsubst ${EXAMPLEDIR}/%.js, ${LINTDIR}/${EXAMPLEDIR}/%.js, $(wildcard ${EXAMPLEDIR}/*.js)) \ ${LINTDIR}/queries/query.js \ ${LINTDIR}/jio.date/jiodate.js \ ${LINTDIR}/jio.js \ ${LINTDIR}/node/jio.js \ ${LINTDIR}/${TESTDIR}/node.js \ ${LINTDIR}/${TESTDIR}/node/node-require.js \ $(patsubst ${SRCDIR}/jio.storage/%.js, ${LINTDIR}/jio.storage/%.js, $(wildcard ${SRCDIR}/jio.storage/*.js)) ############################################# # Build ############################################# build: ${JIOLATEST} ${JIONODELATEST} ${JIOLATEST}: ${JIOVERSION} @mkdir -p $(@D) cp $< $@ ${JIOVERSION}: ${EXTERNALDIR}/URI.js \ ${EXTERNALDIR}/uritemplate.js \ ${EXTERNALDIR}/lz-string.js \ ${EXTERNALDIR}/moment.js \ ${SRCDIR}/queries/parser-begin.js \ ${SRCDIR}/queries/build/parser.js \ ${SRCDIR}/queries/parser-end.js \ ${SRCDIR}/queries/query.js \ ${SRCDIR}/jio.date/jiodate.js \ ${SRCDIR}/jio.js \ ${EXTERNALDIR}/rusha.js \ ${SRCDIR}/jio.storage/replicatestorage.js \ ${SRCDIR}/jio.storage/shastorage.js \ ${SRCDIR}/jio.storage/uuidstorage.js \ ${SRCDIR}/jio.storage/memorystorage.js \ ${SRCDIR}/jio.storage/zipstorage.js \ ${SRCDIR}/jio.storage/parserstorage.js \ ${SRCDIR}/jio.storage/httpstorage.js \ ${SRCDIR}/jio.storage/dropboxstorage.js \ ${SRCDIR}/jio.storage/davstorage.js \ ${SRCDIR}/jio.storage/gdrivestorage.js \ ${SRCDIR}/jio.storage/unionstorage.js \ ${SRCDIR}/jio.storage/erp5storage.js \ ${SRCDIR}/jio.storage/querystorage.js \ ${SRCDIR}/jio.storage/drivetojiomapping.js \ ${SRCDIR}/jio.storage/documentstorage.js \ ${SRCDIR}/jio.storage/localstorage.js \ ${SRCDIR}/jio.storage/indexeddbstorage.js \ ${SRCDIR}/jio.storage/cryptstorage.js \ ${SRCDIR}/jio.storage/websqlstorage.js \ ${SRCDIR}/jio.storage/fbstorage.js \ ${SRCDIR}/jio.storage/cloudooostorage.js @mkdir -p $(@D) cat $^ > $@ ############################################# # Node ############################################# ${JIONODELATEST}: ${JIONODEVERSION} @mkdir -p $(@D) cp $< $@ ${JIONODEVERSION}: ${SRCDIR}/node/jio-start.js \ ${EXTERNALDIR}/rsvp-2.0.4.js \ ${EXTERNALDIR}/moment.js \ ${EXTERNALDIR}/URI.js \ ${EXTERNALDIR}/uritemplate.js \ ${EXTERNALDIR}/rusha.js \ ${SRCDIR}/node/jio-external.js \ ${EXTERNALDIR}/xhr2.js \ ${SRCDIR}/queries/parser-begin.js \ ${SRCDIR}/queries/build/parser.js \ ${SRCDIR}/queries/parser-end.js \ ${SRCDIR}/queries/query.js \ ${SRCDIR}/node/jio-compat.js \ ${SRCDIR}/jio.date/jiodate.js \ ${SRCDIR}/jio.js \ ${SRCDIR}/node/jio.js \ ${SRCDIR}/jio.storage/replicatestorage.js \ ${SRCDIR}/jio.storage/shastorage.js \ ${SRCDIR}/jio.storage/uuidstorage.js \ ${SRCDIR}/jio.storage/memorystorage.js \ ${SRCDIR}/jio.storage/dropboxstorage.js \ ${SRCDIR}/jio.storage/gdrivestorage.js \ ${SRCDIR}/jio.storage/unionstorage.js \ ${SRCDIR}/jio.storage/erp5storage.js \ ${SRCDIR}/jio.storage/querystorage.js \ ${SRCDIR}/jio.storage/drivetojiomapping.js \ ${SRCDIR}/jio.storage/documentstorage.js \ ${SRCDIR}/jio.storage/fbstorage.js \ ${SRCDIR}/node/jio-end.js @mkdir -p $(@D) cat $^ > $@ ############################################# # Jison ############################################# ${SRCDIR}/queries/build/parser.js: ${SRCDIR}/queries/core/parser.par @mkdir -p $(@D) ${JISON} -m js -o $@ $< ############################################# # Dependencies ############################################# fetch: ${EXTERNALDIR}/uritemplate.js \ ${EXTERNALDIR}/lz-string.js \ ${EXTERNALDIR}/moment.js \ ${EXTERNALDIR}/rusha.js \ ${EXTERNALDIR}/rsvp-2.0.4.js \ ${EXTERNALDIR}/qunit.css \ ${EXTERNALDIR}/qunit.js \ ${EXTERNALDIR}/sinon.js \ ${EXTERNALDIR}/renderjs-latest.js ${EXTERNALDIR}/uritemplate.js: @mkdir -p $(@D) curl -s -o $@ https://lab.nexedi.com/nexedi/uritemplate-js/raw/master/bin/uritemplate.js ${EXTERNALDIR}/lz-string.js: @mkdir -p $(@D) curl -s -o $@ https://raw.githubusercontent.com/pieroxy/lz-string/1.4.4/libs/lz-string.js ${EXTERNALDIR}/moment.js: @mkdir -p $(@D) curl -s -o $@ https://raw.githubusercontent.com/moment/moment/2.22.1/moment.js ${EXTERNALDIR}/rusha.js: @mkdir -p $(@D) curl -s -o $@ https://raw.githubusercontent.com/srijs/rusha/v0.8.2/rusha.js ${EXTERNALDIR}/rsvp-2.0.4.js: @mkdir -p $(@D) curl -s -o $@ https://lab.nexedi.com/nexedi/rsvp.js/raw/master/dist/rsvp-2.0.4.js ${EXTERNALDIR}/qunit.css: @mkdir -p $(@D) curl -s -o $@ https://code.jquery.com/qunit/qunit-1.12.0.css ${EXTERNALDIR}/qunit.js: @mkdir -p $(@D) curl -s -o $@ https://code.jquery.com/qunit/qunit-1.12.0.js ${EXTERNALDIR}/sinon.js: @mkdir -p $(@D) curl -s -o $@ https://sinonjs.org/releases/sinon-1.7.3.js ${EXTERNALDIR}/renderjs-latest.js: @mkdir -p $(@D) curl -s -o $@ https://lab.nexedi.com/nexedi/renderjs/raw/master/dist/renderjs-latest.js .PHONY: clean ${JIOVERSION} ${JIONODEVERSION} clean: rm -rf ${LINTDIR} forceclean: clean rm -rf ${EXTERNALDIR} ${SRCDIR}/queries/build/parser.js