Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
blob: 2e7a45f2a8489353531534e1678b22a8b763e1e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
## liza Makefile.am for automake
#
#  Copyright (C) 2010-2019 R-T Specialty, LLC.
#
#  This file is part of liza.
#
#  This program is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
##

path_src  = $(top_builddir)/src
path_test = $(top_builddir)/test

namespaces=$(shell find src -type d)
nsindex=$(addsuffix /index.js, $(namespaces))

tsout = tsconfig.tsbuildinfo

SUBDIRS = doc
EXTRA_DIST = $(path_src) package.json index.js $(path_src)/version.js \
			 tools autogen.sh README.md $(path_test) \
			 bin/server bin/server.js tsconfig.json \
			 bin/delta-processor bin/delta-processor.js

.PHONY: FORCE todo

all-am: modindex

dist-hook: check

# used to force typescript compilation (it handles its own incremental
# compilation and dependency discovery)
$(tsout): FORCE $(path_src)/.gitignore $(path_test)/.gitignore
	node_modules/.bin/tsc

modindex: $(nsindex)
%/index.js: FORCE $(tsout)
	./tools/gen-index "$*" > "$@"

# ignore compiled JS files (this can be removed once all files are TS)
%/.gitignore: FORCE
	@echo "# THIS FILE IS GENERATED; DO NOT MODIFY!" > $@
	( cd $*/ && find . -name '*.ts' -printf "%P\n" | sed 's/\.ts$$/.js/' ) >> $@

# tsc handles its own incremental builds, and in the past has gotten into
# states where it did not recognize missing files as needing to be
# built.  Since those files are not part of _our_ dependency graph here, we
# need to double-check.
check-ts-out:
	find $(path_src) $(path_test) -name '*.ts' -a ! -name '*.d.ts' \
	  | while read f; do \
	      test -f "$${f%%.ts}.js" || { \
	        echo "error: missing tsc output for $$f" >&2; \
	        exit 1; \
	      }; \
	    done

test: check
check: $(tsout) check-ts-out
	PATH="$(PATH):$(CURDIR)/node_modules/.bin" \
		@CODE_COV@ mocha @NODE_DESTRUCTURE@ \
		      --require $(path_test)/pre.js \
		      --recursive \
		      @COV_ARGS@ \
		      $(TESTARGS)

FORCE: