@@ -536,49 +536,68 @@ endif
536
536
# generated .html files
537
537
DOCS_ANALYTICS ?=
538
538
539
+ apidoc_dirs = out/doc out/doc/api out/doc/api/assets
539
540
apidoc_sources = $(wildcard doc/api/* .md)
540
- apidocs_html = $(apidoc_dirs ) $(apiassets ) $(addprefix out/,$(apidoc_sources:.md=.html ) )
541
- apidocs_json = $(apidoc_dirs ) $(apiassets ) $(addprefix out/,$(apidoc_sources:.md=.json ) )
542
-
543
- apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
541
+ apidocs_html = $(addprefix out/,$(apidoc_sources:.md=.html ) )
542
+ apidocs_json = $(addprefix out/,$(apidoc_sources:.md=.json ) )
544
543
545
544
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/* ) ) )
546
545
547
- doc-targets : $(apidocs_html ) $(apidocs_json )
548
- doc-only : | install-yaml doc-targets
546
+ # This uses the locally built node if available, otherwise uses the global node
547
+ doc-only : $(apidoc_dirs ) $(apiassets )
548
+ # If it's a source tarball, assets are already in doc/api/assets,
549
+ # no need to install anything, we have already copied the docs over
550
+ if [ ! -d doc/api/assets ]; then \
551
+ $(MAKE) tools/doc/node_modules/js-yaml/package.json; \
552
+ fi;
553
+ @$(MAKE) -s $(apidocs_html) $(apidocs_json)
554
+
549
555
doc : $(NODE_EXE ) doc-only
550
556
551
- $(apidoc_dirs ) :
552
- @mkdir -p $@
557
+ out/doc :
558
+ mkdir -p $@
559
+
560
+ # If it's a source tarball, doc/api already contains the generated docs.
561
+ # Just copy everything under doc/api over.
562
+ out/doc/api : doc/api
563
+ mkdir -p $@
564
+ cp -r doc/api out/doc
553
565
566
+ # If it's a source tarball, assets are already in doc/api/assets
567
+ out/doc/api/assets :
568
+ mkdir -p $@
569
+ if [ -d doc/api/assets ]; then cp -r doc/api/assets out/doc/api; fi ;
570
+
571
+ # If it's not a source tarball, we need to copy assets from doc/api_assets
554
572
out/doc/api/assets/% : doc/api_assets/% out/doc/api/assets
555
573
@cp $< $@
556
574
557
- out/doc/% : doc/%
558
- @cp -r $< $@
575
+ # Use -e to double check in case it's a broken link
576
+ # Use $(PWD) so we can cd to anywhere before calling this
577
+ available-node = \
578
+ if [ -x $(PWD ) /$(NODE ) ] && [ -e $(PWD ) /$(NODE ) ]; then \
579
+ $(PWD ) /$(NODE ) $(1 ) ; \
580
+ elif [ -x ` which node ` ] && [ -e ` which node ` ]; then \
581
+ ` which node ` $(1 ) ; \
582
+ else \
583
+ echo "No available node, cannot run \"node $(1 ) \""; \
584
+ exit 1; \
585
+ fi;
586
+
587
+ run-npm-install = $(PWD ) /$(NPM ) install
588
+
589
+ tools/doc/node_modules/js-yaml/package.json :
590
+ cd tools/doc && $(call available-node,$(run-npm-install ) )
559
591
560
- # check if ./node is actually set, else use user pre-installed binary
561
592
gen-json = tools/doc/generate.js --format=json $< > $@
562
593
gen-html = tools/doc/generate.js --node-version=$(FULLVERSION ) --format=html \
563
594
--template=doc/template.html --analytics=$(DOCS_ANALYTICS ) $< > $@
564
595
565
- install-yaml :
566
- [ -e tools/doc/node_modules/js-yaml/package.json ] || \
567
- [ -e tools/eslint/node_modules/js-yaml/package.json ] || \
568
- if [ -x $( NODE) ]; then \
569
- cd tools/doc && ../../$(NODE ) ../../$(NPM ) install; \
570
- else \
571
- cd tools/doc && node ../../$(NPM ) install; \
572
- fi ;
573
-
574
- gen-doc = [ -x $(NODE ) ] && $(NODE ) $(1 ) || node $(1 )
575
-
576
596
out/doc/api/% .json : doc/api/% .md
577
- @ $(call gen-doc , $(gen-json ) )
597
+ $(call available-node , $(gen-json ) )
578
598
579
- # check if ./node is actually set, else use user pre-installed binary
580
599
out/doc/api/% .html : doc/api/% .md
581
- @ $(call gen-doc , $(gen-html ) )
600
+ $(call available-node , $(gen-html ) )
582
601
583
602
docopen : $(apidocs_html )
584
603
@$(PYTHON ) -mwebbrowser file://$(PWD ) /out/doc/api/all.html
@@ -1157,7 +1176,6 @@ lint-clean:
1157
1176
install \
1158
1177
install-bin \
1159
1178
install-includes \
1160
- install-yaml \
1161
1179
lint \
1162
1180
lint-clean \
1163
1181
lint-ci \
0 commit comments