+build/java/org/ibex/%.java: src/org/ibex/%.java build/class/org/ibex/util/Preprocessor.class
+ @echo -e "\033[1mpreprocessing .java -> .java: $<\033[0m"
+ @mkdir -p `dirname $@`; java -cp build/class:upstream/gnu.regexp-1.1.4/src/src org.ibex.util.Preprocessor < $< > $@
+
+upstream/org.ibex.crypto/%.java:; @make -s .download_org.ibex.crypto &>/dev/null
+upstream/org.ibex.nestedvm/%.java:; @make -s .download_org.ibex.nestedvm &>/dev/null
+link_upstream = build/java/$(1): $(2)/$(1);
+link_upstream += @echo -e "\033[1mlinking .java -> .java: $$< -> $$@\033[0m";
+link_upstream += mkdir -p $$(@D);
+link_upstream += ln -fs `echo $$(@D)/ | sed 's_[^/]*//*_../_g'`/$$< $$@
+$(call link_upstream,org/xwt/mips/%.java,upstream/org.ibex.nestedvm/src,.download_org.ibex.nestedvm)
+$(call link_upstream,org/ibex/crypto/%.java,upstream/org.ibex.crypto/src,.download_org.ibex.crypto)
+$(call link_upstream,org/ibex/net/ssl/%.java,upstream/org.ibex.crypto/src,.download_org.ibex.crypto)
+$(call link_upstream,org/ibex/net/SSL.java,upstream/org.ibex.crypto/src,.download_org.ibex.crypto)
+$(call link_upstream,gnu/regexp/%.java,upstream/gnu.regexp-1.1.4/src/src)
+$(call link_upstream,%.java,src)
+$(call link_upstream,%.cc,src)