+# These hacks have interdependencies with others, so we can't build without
+# including them or there are link errors:
+#
+ANDROID_BASE_HACKS= \
+ apple2 \
+ bubble3d \
+ pacman \
+ polyhedra \
+ sonar \
+ sproingies \
+
+# These are the ones that currently work, at least to some degree:
+#
+export ANDROID_HACKS= \
+ $(ANDROID_BASE_HACKS) \
+ abstractile \
+ anemone \
+ anemotaxis \
+ apollonian \
+ attraction \
+ atunnel \
+ blaster \
+ blinkbox \
+ blocktube \
+ boing \
+ bouncingcow \
+ boxed \
+ boxfit \
+ braid \
+ bsod \
+ cage \
+ ccurve \
+ cloudlife \
+ companioncube \
+ compass \
+ coral \
+ crystal \
+ cubestorm \
+ cwaves \
+ cynosure \
+ dangerball \
+ decayscreen \
+ deco \
+ demon \
+ discrete \
+ distort \
+ dnalogo \
+ drift \
+ energystream \
+ engine \
+ epicycle \
+ eruption \
+ euler2d \
+ fadeplot \
+ fiberlamp \
+ fireworkx \
+ flame \
+ flipflop \
+ flow \
+ fluidballs \
+ flyingtoasters \
+ fuzzyflakes \
+ galaxy \
+ gears \
+ geodesic \
+ geodesicgears \
+ glcells \
+ glknots \
+ glmatrix \
+ glschool \
+ glsnake \
+ gltext \
+ grav \
+ greynetic \
+ helix \
+ hexadrop \
+ hilbert \
+ hopalong \
+ hypnowheel \
+ ifs \
+ imsmap \
+ interference \
+ intermomentary \
+ julia \
+ kaleidescope \
+ kaleidocycle \
+ klein \
+ kumppa \
+ lament \
+ lavalite \
+ loop \
+ m6502 \
+ maze \
+ memscroller \
+ menger \
+ metaballs \
+ moebiusgears \
+ moire \
+ morph3d \
+ nerverot \
+ noof \
+ penetrate \
+ penrose \
+ petri \
+ piecewise \
+ pinion \
+ polytopes \
+ pong \
+ popsquares \
+ providence \
+ pyro \
+ quasicrystal \
+ raverhoop \
+ rd-bomb \
+ ripples \
+ romanboy \
+ rorschach \
+ rotzoomer \
+ rubik \
+ rubikblocks \
+ sballs \
+ shadebobs \
+ sierpinski \
+ sierpinski3d \
+ slidescreen \
+ squiral \
+ stairs \
+ starfish \
+ stonerview \
+ strange \
+ substrate \
+ superquadrics \
+ swirl \
+ tangram \
+ thornbird \
+ timetunnel \
+ topblock \
+ triangle \
+ tronbit \
+ twang \
+ unknownpleasures \
+ vermiculate \
+ voronoi \
+ wander \
+ whirlwindwarp \
+ winduprobot \
+ wormhole \
+ xflame \
+ xlyap \
+ xspirograph \
+
+
+# These don't work well enough to turn on by default:
+#
+ANDROID_TODO= \
+ antinspect \
+ antmaze \
+ antspotlight \
+ atlantis \
+ barcode \
+ binaryring \
+ blitspin \
+ bouboule \
+ bumps \
+ carousel \
+ celtic \
+ circuit \
+ cityflow \
+ crackberg \
+ cube21 \
+ cubenetic \
+ cubicgrid \
+ deluxe \
+ dymaxionmap \
+ endgame \
+ flipscreen3d \
+ fliptext \
+ fontglide \
+ gflux \
+ glblur \
+ gleidescope \
+ glhanoi \
+ glplanet \
+ glslideshow \
+ goop \
+ halftone \
+ halo \
+ hypertorus \
+ interaggregate \
+ jigglypuff \
+ jigsaw \
+ juggler3d \
+ mirrorblob \
+ moebius \
+ moire2 \
+ molecule \
+ mountain \
+ munch \
+ noseguy \
+ pedal \
+ phosphor \
+ photopile \
+ pipes \
+ polyominoes \
+ projectiveplane \
+ pulsar \
+ qix \
+ queens \
+ rocks \
+ skytentacles \
+ slip \
+ speedmine \
+ spheremonics \
+ splitflap \
+ spotlight \
+ starwars \
+ surfaces \
+ tessellimage \
+ testx11 \
+ truchet \
+ unicrud \
+ xanalogtv \
+ xjack \
+ xmatrix \
+ xrayswarm \
+ zoom \
+
+
+# Download and resize images from jwz.org.
+# This saves us having to include 4MB of images in the tar file
+# that will only be used by a vast minority of people building
+# from source.
+# Android actually wants these to be 160x160 but our source is 200x150.
+
+URL = https://www.jwz.org/xscreensaver/screenshots/
+WGET = wget -q -U xscreensaver-build-android
+CVT = -thumbnail '150x150^' -gravity center -extent 150x150 \
+ \( +clone -alpha extract \
+ -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \
+ \( +clone -flip \) -compose Multiply -composite \
+ \( +clone -flop \) -compose Multiply -composite \
+ \) -alpha off -compose CopyOpacity -composite \
+ -colorspace sRGB \
+ -strip \
+ -quality 95 \
+ +dither -colors 128
+
+
+project/xscreensaver/res/drawable/%.png:
+ @\
+ FILE1=`echo "$@" | sed 's!^.*/\([^/]*\)\.png$$!\1.jpg!'` ; \
+ FILE2="$@" ; \
+ FILE1=`echo "$$FILE1" | sed s/rdbomb/rd-bomb/` ; \
+ FILE2=`echo "$$FILE2" | sed s/rd-bomb/rdbomb/` ; \
+ URL="$(URL)$$FILE1" ; \
+ echo "converting $$URL..." ; \
+ rm -f "$$FILE2" ; \
+ $(WGET) -O- "$$URL" | \
+ convert jpg:- $(CVT) "$$FILE2" ; \
+ if [ ! -s "$$FILE2" ]; then \
+ echo "$$FILE2 failed" >&2 ; \
+ exit 1 ; \
+ fi
+
+thumbs::
+ @for f in $(ANDROID_HACKS) $(ANDROID_TODO) ; do \
+ $(MAKE) project/xscreensaver/res/drawable/$$f.png ; \
+ done
+
+clean_thumbs::
+ @\
+ for f in $(ANDROID_HACKS) $(ANDROID_TODO) ; do \
+ rm -f project/xscreensaver/res/drawable/$$f.png ; \
+ done
+distclean:: clean_thumbs
+
+
+EXTRA_TARFILES = project/xscreensaver/res/drawable/thumbnail.png \