+++ /dev/null
-REPO = git@github.com:mozilla/pdf.js.git
-BUILD_DIR := build
-BUILD_TARGET := $(BUILD_DIR)/pdf.js
-DEFAULT_BROWSERS := resources/browser_manifests/browser_manifest.json
-DEFAULT_TESTS := test_manifest.json
-DEFAULT_PYTHON := python2.7
-
-EXTENSION_SRC := ./extensions/
-EXTENSION_BASE_VERSION := f0f0418a9c6637981fe1182b9212c2d592774c7d
-FIREFOX_EXTENSION_NAME := pdf.js.xpi
-FIREFOX_AMO_EXTENSION_NAME := pdf.js.amo.xpi
-CHROME_EXTENSION_NAME := pdf.js.crx
-
-all: bundle
-
-# Let folks define custom rules for their clones.
--include local.mk
-
-# JS files needed for pdf.js.
-PDF_JS_FILES = \
- core.js \
- util.js \
- api.js \
- canvas.js \
- obj.js \
- function.js \
- charsets.js \
- cidmaps.js \
- colorspace.js \
- crypto.js \
- evaluator.js \
- fonts.js \
- glyphlist.js \
- image.js \
- metrics.js \
- parser.js \
- pattern.js \
- stream.js \
- worker.js \
- ../external/jpgjs/jpg.js \
- jpx.js \
- bidi.js \
- metadata.js \
- $(NULL)
-
-# make server
-#
-# This target starts a local web server at localhost:8888. This can be
-# used for testing all browsers.
-server:
- @cd test; $(DEFAULT_PYTHON) test.py --port=8888;
-
-# make test
-#
-# This target runs all the tests excluding the unit-test. This can be used for
-# testing all browsers.
-test: shell-test browser-test
-
-#
-# Create production output (pdf.js, and corresponding changes to web files)
-#
-production: | bundle
- @echo "Preparing web/viewer-production.html"; \
- cd web; \
- sed '/PDFJSSCRIPT_REMOVE_CORE/d' viewer.html > viewer-1.tmp; \
- sed '/PDFJSSCRIPT_INCLUDE_BUILD/ r viewer-snippet.html' viewer-1.tmp > viewer-production.html; \
- rm -f *.tmp; \
- cd ..
-
-#
-# Bundle pdf.js
-#
-bundle: | $(BUILD_DIR)
- @echo "Bundling source files into $(BUILD_TARGET)"
- @cd src; \
- cat $(PDF_JS_FILES) > all_files.tmp; \
- sed '/PDFJSSCRIPT_INCLUDE_ALL/ r all_files.tmp' pdf.js > ../$(BUILD_TARGET); \
- cp ../$(BUILD_TARGET) ../$(BUILD_TARGET).bak; \
- sed "s/PDFJSSCRIPT_BUNDLE_VER/`git log --format="%h" -n 1`/" ../$(BUILD_TARGET).bak > ../$(BUILD_TARGET); \
- rm -f ../$(BUILD_TARGET).bak; \
- rm -f *.tmp; \
- cd ..
-
-# make unit-test
-#
-# This target runs in-browser unit tests with our test framework and the
-# jasmine unit test framework.
-unit-test:
- cd test; \
- $(DEFAULT_PYTHON) test.py --unitTest \
- --browserManifestFile=$(PDF_BROWSERS)
-
-# make browser-test
-#
-# This target runs in-browser tests using two primary arguments: a
-# test manifest file, and a browser manifest file. Both are simple
-# JSON formats, and examples can be found in the test/ directory. The
-# target will inspect the environment for the PDF_TESTS and
-# PDF_BROWSERS variables, and use those if found. Otherwise, the
-# defaults at the top of this file are used.
-ifeq ($(PDF_TESTS),)
-PDF_TESTS := $(DEFAULT_TESTS)
-endif
-ifeq ($(PDF_BROWSERS),)
-PDF_BROWSERS := $(DEFAULT_BROWSERS)
-endif
-
-browser-test:
- @if [ ! -f "test/$(PDF_BROWSERS)" ]; then \
- echo "Browser manifest file $(PDF_BROWSERS) does not exist."; \
- echo "Try copying one of the examples" \
- "in test/resources/browser_manifests/"; \
- exit 1; \
- fi;
-
- cd test; \
- $(DEFAULT_PYTHON) test.py --reftest \
- --browserManifestFile=$(PDF_BROWSERS) \
- --manifestFile=$(PDF_TESTS)
-
-# # make shell-test
-# #
-# # This target runs all of the tests that can be run in a JS shell.
-# # The shell used is taken from the JS_SHELL environment variable. If
-# # that variable is not defined, the script will attempt to use the copy
-# # of Rhino that comes with the Closure compiler used for producing the
-# # website.
-# SHELL_TARGET = $(NULL)
-# ifeq ($(JS_SHELL),)
-# JS_SHELL := "java -cp $(BUILD_DIR)/compiler.jar"
-# JS_SHELL += "com.google.javascript.jscomp.mozilla.rhino.tools.shell.Main"
-# SHELL_TARGET = compiler
-# endif
-#
-# shell-test: shell-msg $(SHELL_TARGET) font-test
-# shell-msg:
-# ifeq ($(SHELL_TARGET), compiler)
-# @echo "No JS_SHELL env variable present."
-# @echo "The default is to find a copy of Rhino and try that."
-# endif
-# @echo "JS shell command is: $(JS_SHELL)"
-#
-# font-test:
-# @echo "font test stub."
-
-# make lint
-#
-# This target runs the Closure Linter on most of our JS files.
-# To install gjslint, see:
-#
-# <http://code.google.com/closure/utilities/docs/linter_howto.html>
-SRC_DIRS := src utils web test examples/helloworld extensions/firefox \
- extensions/firefox/components extensions/chrome test/unit
-GJSLINT_FILES = $(foreach DIR, $(SRC_DIRS), $(wildcard $(DIR)/*.js))
-lint:
- gjslint --nojsdoc $(GJSLINT_FILES)
-
-# make web
-#
-# This target produces the website for the project, by checking out
-# the gh-pages branch underneath the build directory, and then move
-# the various viewer files into place.
-#
-# TODO: Use the Closure compiler to optimize the pdf.js files.
-#
-GH_PAGES = $(BUILD_DIR)/gh-pages
-web: | production extension compiler pages-repo
- @cp $(BUILD_TARGET) $(GH_PAGES)/$(BUILD_TARGET)
- @cp -R web/* $(GH_PAGES)/web
- @cp web/images/* $(GH_PAGES)/web/images
- @cp $(FIREFOX_BUILD_DIR)/$(FIREFOX_EXTENSION_NAME) \
- $(FIREFOX_BUILD_DIR)/$(FIREFOX_AMO_EXTENSION_NAME) \
- $(FIREFOX_BUILD_DIR)/update.rdf \
- $(GH_PAGES)/$(EXTENSION_SRC)/firefox/
- @cp $(GH_PAGES)/web/index.html.template $(GH_PAGES)/index.html;
- @mv -f $(GH_PAGES)/web/viewer-production.html $(GH_PAGES)/web/viewer.html;
- @cd $(GH_PAGES); git add -A;
- @echo
- @echo "Website built in $(GH_PAGES)."
- @echo "Don't forget to cd into $(GH_PAGES)/ and issue 'git commit' to push changes."
-
-# make pages-repo
-#
-# This target clones the gh-pages repo into the build directory. It
-# deletes the current contents of the repo, since we overwrite
-# everything with data from the master repo. The 'make web' target
-# then uses 'git add -A' to track additions, modifications, moves,
-# and deletions.
-pages-repo: | $(BUILD_DIR)
- @if [ ! -d "$(GH_PAGES)" ]; then \
- git clone --depth 1 -b gh-pages $(REPO) $(GH_PAGES); \
- rm -rf $(GH_PAGES)/*; \
- fi;
- @mkdir -p $(GH_PAGES)/web;
- @mkdir -p $(GH_PAGES)/web/images;
- @mkdir -p $(GH_PAGES)/build;
- @mkdir -p $(GH_PAGES)/$(EXTENSION_SRC)/firefox;
-
-# # make compiler
-# #
-# # This target downloads the Closure compiler, and places it in the
-# # build directory. This target is also useful when the user doesn't
-# # have a JS shell available--we can have them use the Rhino shell that
-# # comes with Closure.
-# COMPILER_URL = http://closure-compiler.googlecode.com/files/compiler-latest.zip
-#
-# compiler: $(BUILD_DIR)/compiler.zip
-# $(BUILD_DIR)/compiler.zip: | $(BUILD_DIR)
-# curl $(COMPILER_URL) > $(BUILD_DIR)/compiler.zip;
-# cd $(BUILD_DIR); unzip compiler.zip compiler.jar;
-
-# make extension
-#
-# This target produce a restartless firefox extension containing a
-# copy of the pdf.js source.
-CONTENT_DIR := content
-BUILD_NUMBER := `git log --format=oneline $(EXTENSION_BASE_VERSION).. | wc -l | awk '{print $$1}'`
-PDFJSSCRIPT_VERSION := 0.3.$(BUILD_NUMBER)
-EXTENSION_WEB_FILES = \
- web/images \
- web/viewer.css \
- web/viewer.js \
- web/viewer.html \
- web/viewer-production.html \
- web/debugger.js \
- $(NULL)
-
-FIREFOX_BUILD_DIR := $(BUILD_DIR)/firefox
-FIREFOX_BUILD_CONTENT := $(FIREFOX_BUILD_DIR)/$(CONTENT_DIR)/
-FIREFOX_CONTENT_DIR := $(EXTENSION_SRC)/firefox/$(CONTENT_DIR)/
-FIREFOX_EXTENSION_FILES_TO_COPY = \
- *.js \
- *.rdf \
- *.png \
- install.rdf.in \
- README.mozilla \
- components \
- ../../LICENSE \
- $(NULL)
-FIREFOX_EXTENSION_FILES = \
- bootstrap.js \
- install.rdf \
- icon.png \
- icon64.png \
- components \
- content \
- LICENSE \
- $(NULL)
-FIREFOX_MC_EXTENSION_FILES = \
- bootstrap.js \
- icon.png \
- icon64.png \
- components \
- content \
- LICENSE \
- $(NULL)
-
-CHROME_BUILD_DIR := $(BUILD_DIR)/chrome
-CHROME_CONTENT_DIR := $(EXTENSION_SRC)/chrome/$(CONTENT_DIR)/
-CHROME_BUILD_CONTENT := $(CHROME_BUILD_DIR)/$(CONTENT_DIR)/
-CHROME_EXTENSION_FILES = \
- extensions/chrome/*.json \
- extensions/chrome/*.html \
- $(NULL)
-extension: | production
- # Clear out everything in the firefox extension build directory
- @rm -Rf $(FIREFOX_BUILD_DIR)
- @mkdir -p $(FIREFOX_BUILD_CONTENT)
- @mkdir -p $(FIREFOX_BUILD_CONTENT)/$(BUILD_DIR)
- @mkdir -p $(FIREFOX_BUILD_CONTENT)/web
- @cd extensions/firefox; cp -r $(FIREFOX_EXTENSION_FILES_TO_COPY) ../../$(FIREFOX_BUILD_DIR)/
- # Copy a standalone version of pdf.js inside the content directory
- @cp $(BUILD_TARGET) $(FIREFOX_BUILD_CONTENT)/$(BUILD_DIR)/
- @cp -r $(EXTENSION_WEB_FILES) $(FIREFOX_BUILD_CONTENT)/web/
- @rm $(FIREFOX_BUILD_CONTENT)/web/viewer-production.html
- # Copy over the firefox extension snippet so we can inline pdf.js in it
- @cp web/viewer-snippet-firefox-extension.html $(FIREFOX_BUILD_CONTENT)/web/
- # Modify the viewer so it does all the extension only stuff.
- @cd $(FIREFOX_BUILD_CONTENT)/web; \
- cp viewer-snippet-firefox-extension.html viewer-snippet-firefox-extension.html.bak; \
- sed '/PDFJSSCRIPT_INCLUDE_BUNDLE/ r ../build/pdf.js' viewer-snippet-firefox-extension.html.bak > viewer-snippet-firefox-extension.html; \
- cp viewer.html viewer.html.bak; \
- sed '/PDFJSSCRIPT_REMOVE_CORE/d' viewer.html.bak > viewer.html; \
- cp viewer.html viewer.html.bak; \
- sed '/PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION/d' viewer.html.bak > viewer.html; \
- cp viewer.html viewer.html.bak; \
- sed '/PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION/ r viewer-snippet-firefox-extension.html' viewer.html.bak > viewer.html; \
- rm -f *.bak;
- # We don't need pdf.js anymore since its inlined
- @rm -Rf $(FIREFOX_BUILD_CONTENT)/$(BUILD_DIR)/;
- # Update the build version number
- cp $(FIREFOX_BUILD_DIR)/install.rdf $(FIREFOX_BUILD_DIR)/install.rdf.bak
- @sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/install.rdf.bak > $(FIREFOX_BUILD_DIR)/install.rdf
- cp $(FIREFOX_BUILD_DIR)/install.rdf.in $(FIREFOX_BUILD_DIR)/install.rdf.in.bak
- @sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/install.rdf.in.bak > $(FIREFOX_BUILD_DIR)/install.rdf.in
- cp $(FIREFOX_BUILD_DIR)/update.rdf $(FIREFOX_BUILD_DIR)/update.rdf.bak
- @sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/update.rdf.bak > $(FIREFOX_BUILD_DIR)/update.rdf
- cp $(FIREFOX_BUILD_DIR)/README.mozilla $(FIREFOX_BUILD_DIR)/README.mozilla.bak
- @sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/README.mozilla.bak > $(FIREFOX_BUILD_DIR)/README.mozilla
- @rm -f $(FIREFOX_BUILD_DIR)/*.bak
- @find $(FIREFOX_BUILD_DIR) -name ".*" -delete
- # Create the xpi
- @cd $(FIREFOX_BUILD_DIR); zip -r $(FIREFOX_EXTENSION_NAME) $(FIREFOX_EXTENSION_FILES)
- @echo "extension created: " $(FIREFOX_EXTENSION_NAME)
- # Build the amo extension too (remove the updateUrl)
- cp $(FIREFOX_BUILD_DIR)/install.rdf $(FIREFOX_BUILD_DIR)/install.rdf.bak
- @sed "/updateURL/d" $(FIREFOX_BUILD_DIR)/install.rdf.bak > $(FIREFOX_BUILD_DIR)/install.rdf
- @rm -f $(FIREFOX_BUILD_DIR)/*.bak
- @cd $(FIREFOX_BUILD_DIR); zip -r $(FIREFOX_AMO_EXTENSION_NAME) $(FIREFOX_EXTENSION_FILES)
- @echo "AMO extension created: " $(FIREFOX_AMO_EXTENSION_NAME)
- # List all files for mozilla-central
- @cd $(FIREFOX_BUILD_DIR); find $(FIREFOX_MC_EXTENSION_FILES) -type f > extension-files
-
- # Clear out everything in the chrome extension build directory
- @rm -Rf $(CHROME_BUILD_DIR)
- @mkdir -p $(CHROME_BUILD_CONTENT)
- @mkdir -p $(CHROME_BUILD_CONTENT)/$(BUILD_DIR)
- @mkdir -p $(CHROME_BUILD_CONTENT)/web
- @cp -R $(CHROME_EXTENSION_FILES) $(CHROME_BUILD_DIR)/
- # Copy a standalone version of pdf.js inside the content directory
- @cp $(BUILD_TARGET) $(CHROME_BUILD_CONTENT)/$(BUILD_DIR)/
- @cp -r $(EXTENSION_WEB_FILES) $(CHROME_BUILD_CONTENT)/web/
- @mv -f $(CHROME_BUILD_CONTENT)/web/viewer-production.html $(CHROME_BUILD_CONTENT)/web/viewer.html
-
- # Create the crx
- #TODO
-
-
-
-# Make sure there's a build directory.
-$(BUILD_DIR):
- mkdir -p $(BUILD_DIR)
-
-clean:
- rm -rf $(BUILD_DIR)
-
-# make help
-#
-# This target just prints out a message to read these comments. :)
-help:
- @echo "Read the comments in the Makefile for guidance.";
-
-.PHONY:: production test browser-test font-test shell-test \
- shell-msg lint clean web compiler help server