aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorGravatar Trevor Elliott <trevor@galois.com>2013-05-16 14:28:25 -0700
committerGravatar Trevor Elliott <trevor@galois.com>2013-05-16 14:28:25 -0700
commitd316614847c16569da34a42e808dfb332fc6b6c9 (patch)
tree1d76a49c647c645d4513ab970b500f3c7b6a0cf1 /Makefile
parentb4f01ad9fa584c77fe6b2a6f55a9e5c00a701e58 (diff)
Remove google closure, and start reworking the build system
Squashed commit of the following: commit 446aae2afd089c28abd1d03a5fd20d4735837e16 Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:50:17 2013 -0700 stage-dir doesn't need to be cleaned Since everything goes into a common build tree now, cleaning just involves removing the entire build tree. commit d8f531ddf8ee1406ec915502c28dc0eb3912d0ee Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:47:10 2013 -0700 Switch to placing build artifacts in a build tree commit 9eedeec8d6a1012b1b7e466120260276b1e952d4 Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:35:01 2013 -0700 Remove the closure_compiler and closure_linter commit 5784158cf2cd55f0ffd01147ae014379ecc857fd Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:34:27 2013 -0700 Move the scripts in build to tools/bin commit 64a6a53ea0fd5e299e9d17c0e4f8fedf305272dc Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:27:55 2013 -0700 Build jsdoc Also, remove the old Makefiles that were in doc, as they're not necessary anymore. commit 1ef0d9e39cd4a24807ee6ca956fbc627fb851b9d Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:18:59 2013 -0700 Conditionally build the manual commit c326c58059e0d5035edecfd6261ee42797c49c2c Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:13:31 2013 -0700 Get the html manual building again commit 480fa132ffb0562eb3f61d45d79d3315b1d3cc29 Author: Trevor Elliott <trevor@galois.com> Date: Thu May 16 11:13:01 2013 -0700 Move doc specific .gitignore stuff to doc/.gitignore commit 8c108d4e0df848839bcd6b4c22d623053f590e95 Author: Trevor Elliott <trevor@galois.com> Date: Wed May 15 10:42:41 2013 -0700 Fix some path inconsistencies in the contexts build.mk commit ee53404be09cf26983365374da84ade564b92926 Author: Trevor Elliott <trevor@galois.com> Date: Wed May 15 10:37:40 2013 -0700 Preliminary build system changes * Chrome extension builds, but there are problems commit 474c6b88190787aeffd960ffb5855d31770e7141 Author: Trevor Elliott <trevor@galois.com> Date: Mon May 13 19:06:31 2013 -0700 Remove the closure toolkit
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile93
1 files changed, 46 insertions, 47 deletions
diff --git a/Makefile b/Makefile
index 89f9ffd..8b465ec 100644
--- a/Makefile
+++ b/Makefile
@@ -17,74 +17,73 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-REPO_ROOT=.
-CHROME_EXTDIR=contexts
-FF_EXTDIR=contexts
-TEST_RUNNER_DIR=testrunner
-HEADLESS_DIR=headless
-RSTESTER_DIR=rsTester
-DOC_DIR=doc
-MVN_EXE=`which mvn`
-define profile
-.PHONY: profile-$1
-profile-$1: $(REPO_ROOT)/profiles/$1/.token
+# Entry Point ##################################################################
-$(REPO_ROOT)/profiles/$1/.token: $(REPO_ROOT)/profiles/$1.tar
- $(MAKE) -C $(REPO_ROOT)/profiles $1
+.PHONY: all
+all:
-.PHONY: clean-profile-$1
-clean-profile-$1:
- $(MAKE) -C $(REPO_ROOT)/profiles clean-$1
+.PHONY: unpack
+unpack:
-clean: clean-profile-$1
-endef
+.PHONY: clean
+clean::
-# package/install various maven sub-projects
-define pkg
-.PHONY: pkg-$1
-pkg-$1:
- cd $1; xvfb-run -a $(MVN_EXE) install
+# Utilities ####################################################################
-endef
+topdir := $(CURDIR)
+path := .
-MVN_TEST_CMD=xvfb-run -a $(MVN_EXE) test
+include mk/util.mk
+include mk/subdir.mk
-all: chromeExtension
-ffExtension:
- @make -C $(FF_EXTDIR)
-chromeExtension:
- @make -C $(CHROME_EXTDIR)
+# Build Directory Staging ######################################################
+build-dir := $(topdir)/build
-cleanOSS:
- @make -C $(FF_EXTDIR) clean
- @make -C $(CHROME_EXTDIR) clean
- @make -C $(DOC_DIR) clean
+$(build-dir):
+ $(call cmd,mkdir)
+clean::
+ $(RM) -r $(build-dir)
-$(eval $(call profile,firefox))
-$(eval $(call profile,chrome))
+# Subdirs ######################################################################
-$(eval $(call pkg,rsTester))
+$(eval $(call subdir,contexts))
+$(eval $(call subdir,profiles))
+$(eval $(call subdir,doc))
+
+
+# Maven Packages ###############################################################
+
+# Don't try to run any of this if maven isn't installed
+MVN_EXE := $(shell which --skip-alias $i mvn 2>/dev/null)
+ifneq "$(MVN_EXE)" ""
+# package/install various maven sub-projects
+MVN_TEST_CMD := xvfb-run -a $(MVN_EXE) test
+
+define pkg
+.PHONY: pkg-$1
+pkg-$1:
+ cd $1 && xvfb-run -a $(MVN_EXE) install
+endef
+
+$(eval $(call pkg,rsTester))
$(eval $(call pkg,headless))
+TEST_RUNNER_DIR := testrunner
+HEADLESS_DIR := headless
+RSTESTER_DIR := rsTester
test: chromeExtension profile-chrome profile-firefox ffExtension pkg-rsTester
cd $(TEST_RUNNER_DIR) && $(MVN_TEST_CMD)
- cd $(RSTESTER_DIR) && $(MVN_TEST_CMD)
- cd $(HEADLESS_DIR) && $(MVN_TEST_CMD)
-
-.PHONY: doc
-doc: doc/jsdoc doc/manual
-doc/jsdoc:
- @make -C $(DOC_DIR)
+ cd $(RSTESTER_DIR) && $(MVN_TEST_CMD)
+ cd $(HEADLESS_DIR) && $(MVN_TEST_CMD)
-doc/manual:
- @make -C $(DOC_DIR) man
+endif
-clean: cleanOSS
+# Documentation ################################################################