Merge branch 'master' of git://github.com/jquery/jquery into fixedbuild
[jquery.git] / Makefile
index 6b46c7d..6927dbf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,3 @@
-V ?= 0
-
 SRC_DIR = src
 TEST_DIR = test
 BUILD_DIR = build
@@ -7,13 +5,12 @@ BUILD_DIR = build
 PREFIX = .
 DIST_DIR = ${PREFIX}/dist
 
-RHINO ?= java -jar ${BUILD_DIR}/js.jar
-
-CLOSURE_COMPILER = ${BUILD_DIR}/google-compiler-20100917.jar
-
-MINJAR ?= java -jar ${CLOSURE_COMPILER}
+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\
@@ -24,6 +21,9 @@ BASE_FILES = ${SRC_DIR}/core.js\
        ${SRC_DIR}/manipulation.js\
        ${SRC_DIR}/css.js\
        ${SRC_DIR}/ajax.js\
+       ${SRC_DIR}/ajax/jsonp.js\
+       ${SRC_DIR}/ajax/script.js\
+       ${SRC_DIR}/ajax/xhr.js\
        ${SRC_DIR}/effects.js\
        ${SRC_DIR}/offset.js\
        ${SRC_DIR}/dimensions.js
@@ -36,71 +36,55 @@ 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}
+${JQ}: ${MODULES} | ${DIST_DIR}
        @@echo "Building" ${JQ}
 
        @@cat ${MODULES} | \
                sed 's/.function..jQuery...{//' | \
                sed 's/}...jQuery..;//' | \
-               sed 's/Date:./&'"${DATE}"'/' | \
+               sed 's/@DATE/'"${DATE}"'/' | \
                ${VER} > ${JQ};
 
 ${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..."
-       @@${RHINO} 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}
-
-       @@head -15 ${JQ} > ${JQ_MIN}
-       @@${MINJAR} --js ${JQ} --warning_level QUIET --js_output_file ${JQ_MIN}.tmp
-       @@cat ${JQ_MIN}.tmp >> ${JQ_MIN}
-       @@rm -f ${JQ_MIN}.tmp
+${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}
@@ -109,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