Merge branch 'master' of git://github.com/jquery/jquery into fixedbuild
[jquery.git] / Makefile
index 0d54c96..6927dbf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,30 @@
 SRC_DIR = src
+TEST_DIR = test
 BUILD_DIR = build
 
 PREFIX = .
-TEST_DIR = ${PREFIX}/test
 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\
+       ${SRC_DIR}/attributes.js\
        ${SRC_DIR}/event.js\
-       ${SRC_DIR}/support.js\
        ${SRC_DIR}/selector.js\
        ${SRC_DIR}/traversing.js\
-       ${SRC_DIR}/attributes.js\
        ${SRC_DIR}/manipulation.js\
        ${SRC_DIR}/css.js\
        ${SRC_DIR}/ajax.js\
-       ${SRC_DIR}/fx.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
 
@@ -26,50 +35,86 @@ MODULES = ${SRC_DIR}/intro.js\
 JQ = ${DIST_DIR}/jquery.js
 JQ_MIN = ${DIST_DIR}/jquery.min.js
 
-JQ_VER = `cat version.txt`
-VER = sed s/@VERSION/${JQ_VER}/
+SIZZLE_DIR = ${SRC_DIR}/sizzle
+
+GIT_VER = $(shell git describe --tags --always --dirty)
+VER = sed "s/@VERSION/${GIT_VER}/"
 
-MINJAR = java -jar ${BUILD_DIR}/yuicompressor-2.4.2.jar
+DATE=$(shell git log -1 --pretty=format:%ad)
 
-DATE=`git log -1 | grep Date: | sed 's/[^:]*: *//'`
+all: update_submodules core
 
-all: jquery test min
+core: jquery min lint
        @@echo "jQuery build complete."
 
 ${DIST_DIR}:
        @@mkdir -p ${DIST_DIR}
 
-jquery: ${DIST_DIR} ${JQ}
+jquery: ${JQ}
 
-${JQ}: ${MODULES}
+${JQ}: ${MODULES} | ${DIST_DIR}
        @@echo "Building" ${JQ}
 
-       @@mkdir -p ${DIST_DIR}
        @@cat ${MODULES} | \
-               sed 's/Date:./&'"${DATE}"'/' | \
+               sed 's/.function..jQuery...{//' | \
+               sed 's/}...jQuery..;//' | \
+               sed 's/@DATE/'"${DATE}"'/' | \
                ${VER} > ${JQ};
 
-       @@echo ${JQ} "Built"
-       @@echo
-
-min: ${JQ_MIN}
-
-${JQ_MIN}: ${JQ}
-       @@echo "Building" ${JQ_MIN}
+${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
 
-       @@echo " - Compressing using Minifier"
-       @@${MINJAR} ${JQ} > ${JQ_MIN}
+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
 
-       @@echo ${JQ_MIN} "Built"
-       @@echo
+min: ${JQ_MIN}
 
-test: ${JQ}
-       @@echo "Building Test Suite"
-       @@echo "Test Suite Built"
-       @@echo
-       git submodule init
-       git submodule update
+${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}
        @@rm -rf ${DIST_DIR}
+
+       @@echo "Removing built copy of Sizzle"
+       @@rm -f src/selector.js
+
+distclean: clean
+       @@echo "Removing submodules"
+       @@rm -rf test/qunit src/sizzle
+
+# 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