CLASSPATH=lib/guava-libraries/guava.jar:lib/jsr305/jsr305.jar TEST_CLASSPATH=lib/guava-libraries/guava.jar:lib/htmlparser-1.3/htmlparser-1.3.jar:lib/junit/junit.jar:lib/commons-codec-1.4/commons-codec-1.4.jar JAVAC_FLAGS=-source 1.5 -target 1.5 -Xlint default: javadoc runtests findbugs clean: rm -rf out out: mkdir -p out classes: out/classes.tstamp out/classes.tstamp: out src/main/org/owasp/html/*.java javac -g ${JAVAC_FLAGS} -classpath ${CLASSPATH} -d out \ $$(echo $^ | tr ' ' '\n' | egrep '\.java$$') touch out/classes.tstamp examples: out/examples.tstamp out/examples.tstamp: out/classes.tstamp src/main/org/owasp/html/examples/*.java javac -g ${JAVAC_FLAGS} -classpath ${CLASSPATH}:out -d out \ $$(echo $^ | tr ' ' '\n' | egrep '\.java$$') touch out/examples.tstamp # Depends on all java files under tests. tests: out/tests.tstamp out/org/owasp/html/alltests out/tests.tstamp: out out/classes.tstamp src/tests/org/owasp/html/*.java javac -g ${JAVAC_FLAGS} -classpath out:${TEST_CLASSPATH} -d out \ $$(echo $^ | tr ' ' '\n' | egrep '\.java$$') touch out/tests.tstamp out/org/owasp/html/alltests: src/tests/org/owasp/html/*Test.java echo $^ | tr ' ' '\n' | perl -pe 's#^src/tests/|\.java$$##g; s#/#.#g;' > $@ runtests: tests java -classpath out:src/tests:${TEST_CLASSPATH} junit.textui.TestRunner org.owasp.html.AllTests # Runs findbugs to identify problems. findbugs: out/findbugs.txt cat $^ out/findbugs.txt: out/tests.tstamp find out/org -type d | \ xargs tools/findbugs-1.3.9/bin/findbugs -textui -effort:max \ -auxclasspath ${TEST_CLASSPATH} > $@ # Runs a benchmark that compares performance. benchmark: out/tests.tstamp java -cp ${TEST_CLASSPATH}:out org.owasp.html.Benchmark benchmark-data/Yahoo\!.html # Profiles the benchmark. profile: out/java.hprof.txt out/java.hprof.txt: out/tests.tstamp java -cp ${TEST_CLASSPATH}:out -agentlib:hprof=cpu=times,format=a,file=out/java.hprof.txt,lineno=y,doe=y org.owasp.html.Benchmark benchmark-data/Yahoo\!.html s # Builds the documentation. javadoc: out/javadoc.tstamp out/javadoc.tstamp: src/main/org/owasp/html/*.java src/main/org/owasp/html/examples/*.java mkdir -p out/javadoc javadoc -locale en -d out/javadoc \ -classpath ${CLASSPATH} \ -use -splitIndex \ -windowtitle 'OWASP Java HTML Sanitizer' \ -doctitle 'OWASP Java HTML Sanitizer' \ -header 'code.google.com home' \ -J-Xmx250m -nohelp -sourcetab 8 -docencoding UTF-8 -protected \ -encoding UTF-8 -author -version $^ \ && touch out/javadoc.tstamp # Packages the documentation, and libraries in the distrib directory, # and creates a script containing svn commands to commit those changes. distrib: out/run_me_before_committing_release.sh out/run_me_before_committing_release.sh: clean out/staging.tstamp tools/update_tree_in_svn.py out/staging distrib > $@ chmod +x $@ out/staging.tstamp: out/javadoc.tstamp out/classes.tstamp mkdir -p out/staging echo Copying Javadoc rm -rf out/staging/javadoc cp -r out/javadoc out/staging/javadoc echo Suppressing spurious Javadoc diffs for doc_html in $$(find out/staging/javadoc -name \*.html); do \ perl -i -pe 's///; s///' "$$doc_html"; \ done echo Linking required jars mkdir -p out/staging/lib for jar in $$(echo ${CLASSPATH} | tr : ' '); do \ cp "$$jar" out/staging/lib/; \ cp "$$(dirname $$jar)"/COPYING out/staging/lib/"$$(basename $$jar .jar)"-COPYING; \ done echo Bundling compiled classes jar cf out/staging/lib/owasp-java-html-sanitizer.jar -C out org echo Bundling sources for f in $$(find src/main -name \*.java); do \ mkdir -p out/staging/"$$(dirname $$f)"; \ cp "$$f" out/staging/"$$f"; \ done jar cf out/staging/lib/owasp-java-html-sanitizer-src.jar -C out/staging/src/main org rm -rf out/staging/src cp COPYING out/staging/lib/owasp-java-html-sanitizer-COPYING touch $@