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 $@