Merge branch 'master' of git://github.com/jquery/jquery into fixedbuild
[jquery.git] / Makefile
index 146b5e3..6927dbf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,3 @@
-V ?= 0
-
 SRC_DIR = src
 TEST_DIR = test
 BUILD_DIR = build
@@ -9,8 +7,10 @@ DIST_DIR = ${PREFIX}/dist
 
 JS_ENGINE ?= `which node nodejs`
 COMPILER = ${JS_ENGINE} ${BUILD_DIR}/uglify.js --unsafe
+POST_COMPILER = ${JS_ENGINE} ${BUILD_DIR}/post-compile.js
 
 BASE_FILES = ${SRC_DIR}/core.js\
+       ${SRC_DIR}/deferred.js\
        ${SRC_DIR}/support.js\
        ${SRC_DIR}/data.js\
        ${SRC_DIR}/queue.js\
@@ -36,44 +36,21 @@ JQ = ${DIST_DIR}/jquery.js
 JQ_MIN = ${DIST_DIR}/jquery.min.js
 
 SIZZLE_DIR = ${SRC_DIR}/sizzle
-QUNIT_DIR = ${TEST_DIR}/qunit
 
-JQ_VER = $(shell cat version.txt)
-VER = sed "s/@VERSION/${JQ_VER}/"
+GIT_VER = $(shell git describe --tags --always --dirty)
+VER = sed "s/@VERSION/${GIT_VER}/"
 
 DATE=$(shell git log -1 --pretty=format:%ad)
 
-all: init jquery min lint
+all: update_submodules core
+
+core: jquery min lint
        @@echo "jQuery build complete."
 
 ${DIST_DIR}:
        @@mkdir -p ${DIST_DIR}
 
-ifeq ($(strip $(V)),0)
-verbose = --quiet
-else ifeq ($(strip $(V)),1)
-verbose =
-else
-verbose = --verbose
-endif
-
-define clone_or_pull
--@@if test ! -d $(strip ${1})/.git; then \
-               echo "Cloning $(strip ${1})..."; \
-               git clone $(strip ${verbose}) --depth=1 $(strip ${2}) $(strip ${1}); \
-       else \
-               echo "Pulling $(strip ${1})..."; \
-               git --git-dir=$(strip ${1})/.git pull $(strip ${verbose}) origin master; \
-       fi
-
-endef
-
-init:
-       $(call clone_or_pull, ${QUNIT_DIR}, git://github.com/jquery/qunit.git)
-       $(call clone_or_pull, ${SIZZLE_DIR}, git://github.com/jeresig/sizzle.git)
-
 jquery: ${JQ}
-jq: ${JQ}
 
 ${JQ}: ${MODULES} | ${DIST_DIR}
        @@echo "Building" ${JQ}
@@ -88,16 +65,26 @@ ${SRC_DIR}/selector.js: ${SIZZLE_DIR}/sizzle.js
        @@echo "Building selector code from Sizzle"
        @@sed '/EXPOSE/r src/sizzle-jquery.js' ${SIZZLE_DIR}/sizzle.js | grep -v window.Sizzle > ${SRC_DIR}/selector.js
 
-lint: ${JQ}
-       @@echo "Checking jQuery against JSLint..."
-       @@${JS_ENGINE} build/jslint-check.js
+lint: jquery
+       @@if test ! -z ${JS_ENGINE}; then \
+               echo "Checking jQuery against JSLint..."; \
+               ${JS_ENGINE} build/jslint-check.js ${JQ}; \
+       else \
+               echo "You must have NodeJS installed in order to test jQuery against JSLint."; \
+       fi
 
 min: ${JQ_MIN}
 
-${JQ_MIN}: ${JQ}
-       @@echo "Building" ${JQ_MIN}
-       @@${COMPILER} ${JQ} > ${JQ_MIN}
-       @@sed -i '$ s#^\( \*/\)\(.\+\)#\1\n\2;#' ${JQ_MIN}
+${JQ_MIN}: jquery
+       @@if test ! -z ${JS_ENGINE}; then \
+               echo "Minifying jQuery" ${JQ_MIN}; \
+               ${COMPILER} ${JQ} > ${JQ_MIN}.tmp; \
+               ${POST_COMPILER} ${JQ_MIN}.tmp > ${JQ_MIN}; \
+               rm -f ${JQ_MIN}.tmp; \
+       else \
+               echo "You must have NodeJS installed in order to minify jQuery."; \
+       fi
+       
 
 clean:
        @@echo "Removing Distribution directory:" ${DIST_DIR}
@@ -106,7 +93,28 @@ clean:
        @@echo "Removing built copy of Sizzle"
        @@rm -f src/selector.js
 
-       @@echo "Removing cloned directories"
+distclean: clean
+       @@echo "Removing submodules"
        @@rm -rf test/qunit src/sizzle
 
-.PHONY: all jquery lint min init jq clean
+# change pointers for submodules and update them to what is specified in jQuery
+# --merge  doesn't work when doing an initial clone, thus test if we have non-existing
+#  submodules, then do an real update
+update_submodules:
+       @@if [ -d .git ]; then \
+               if git submodule status | grep -q -E '^-'; then \
+                       git submodule update --init --recursive; \
+               else \
+                       git submodule update --init --recursive --merge; \
+               fi; \
+       fi;
+
+# update the submodules to the latest at the most logical branch
+pull_submodules:
+       @@git submodule foreach "git pull origin \$$(git branch --no-color --contains \$$(git rev-parse HEAD) | grep -v \( | head -1)"
+       @@git submodule summary
+
+pull: pull_submodules
+       @@git pull ${REMOTE} ${BRANCH}
+
+.PHONY: all jquery lint min clean distclean update_submodules pull_submodules pull core