# Partially based off of: # http://nefariousdesigns.co.uk/website-builds-using-make.html # if a mod is specified but doesn't exist, raise an error err:=$(shell if [ ! -z '$(mod)' ] && [ ! -d 'mods/$(mod)' ]; then echo 'Mod [$(mod)] not found!'; fi) ifneq '$(err)' '' $(error $(err)) endif mod-dir=$(shell if [ -z '$(mod)' ]; then echo 'default'; else echo $(mod); fi) err:=$(shell if [ ! -f 'mods/$(mod-dir)/intro.js' ]; then echo 'File mods/$(mod-dir)/intro.js not found!'; fi) ifneq '$(err)' '' $(error $(err)) endif js-target = scripts/build/untrusted.js js-target-min = scripts/build/untrusted.min.js js-modules = scripts/util.js \ mods/$(mod-dir)/intro.js\ scripts/_head.js \ scripts/game.js \ scripts/codeEditor.js \ scripts/display.js \ scripts/dynamicObject.js \ scripts/inventory.js \ scripts/map.js \ scripts/objects.js \ scripts/player.js \ scripts/reference.js \ scripts/sound.js \ scripts/validate.js \ scripts/ui.js \ levels/levels.js \ scripts/_launcher_release.js \ scripts/_tail.js js-modules-debug = scripts/util.js \ mods/$(mod-dir)/intro.js\ scripts/_head.js \ scripts/game.js \ scripts/codeEditor.js \ scripts/display.js \ scripts/dynamicObject.js \ scripts/inventory.js \ scripts/map.js \ scripts/objects.js \ scripts/player.js \ scripts/reference.js \ scripts/sound.js \ scripts/validate.js \ scripts/ui.js \ levels/levels.js \ scripts/_launcher_debug.js \ scripts/_tail.js yui-jar = tools/yuicompressor-2.4.8pre.jar # `make` or `make debug` merges scripts (using debug launcher) debug: @echo "Building level file…\t\t\t\c" @./compile_levels.sh $(mod-dir) @echo "[ Done ]" @echo "Merging JS files…\t\t\t\c" @cat $(js-modules-debug) > $(js-target) @./parse_target.sh $(js-target) $(mod-dir) @echo "[ Done ]" # `make release` merges and compresses scripts (using release launcher) release: @rm -f $(js-target-min) @echo "Building level file…\t\t\t\c" @./compile_levels.sh $(mod-dir) @echo "[ Done ]" @echo "Merging JS files…\t\t\t\c" @cat $(js-modules) > $(js-target) @./parse_target.sh $(js-target) $(mod-dir) @echo "[ Done ]" @echo "Compressing merged JS…\t\t\t\c" @java -jar $(yui-jar) -o $(js-target-min) $(js-target) @echo "[ Done ]" # `make clean` removes built scripts clean: @rm -f $(js-target) $(js-target-min) # to use `make deploy` to deploy Untrusted to your own server, create # a deploy.sh script (ncftpput is helpful for uploading via FTP). deploy: release @echo "Deploying to server…\t\t\t\c" @rm -rf _site @mkdir _site @cp -R levels scripts styles images sound index.html _site @./deploy.sh /untrusted _site @rm -rf _site @echo "[ Done ]" # `make deploy-full` also deploys music and libs deploy-full: release @echo "Deploying to server…\t\t\t\c" @rm -rf _site @mkdir _site @cp -R levels scripts styles images sound music lib index.html _site @./deploy.sh /untrusted _site @rm -rf _site @echo "[ Done ]" # `make deploy-debug` deploys the debug version to /debug deploy-debug: debug @echo "Deploying to server…\t\t\t\c" @rm -rf _site @mkdir _site @cp -R levels scripts styles images sound index.html _site @./deploy.sh /untrusted/debug _site @rm -rf _site @echo "[ Done ]" # `make deploy-debug` deploys the debug version to /debug deploy-debug-full: debug @echo "Deploying to server…\t\t\t\c" @rm -rf _site @mkdir _site @cp -R levels scripts styles images sound music lib index.html _site @./deploy.sh /untrusted/debug _site @rm -rf _site @echo "[ Done ]" deploy-github: @git checkout gh-pages && git merge master --no-commit && make release && git commit -am "build" && git push origin gh-pages; git checkout master && make # run-local will start a mini python webserver and host a local # instance of the game will run on an available port # the option -c-1 disables caching runlocal: debug @echo "Running local instance" ./node_modules/http-server/bin/http-server -c-1