all: installbin cdimage

cdimage: packages.fwp binpackages.fwp winpackages.fwp winbinpackages.fwp

#
# This section generates one-file install binaries
#
tclish: installbin tclish-aix.bin tclish-hpux.bin tclish-linux.bin tclish-solaris.bin tclish-win.exe


tclish-aix.bin \
tclish-hpux.bin \
tclish-linux.bin \
tclish-solaris.bin: install.tcl http.fwp packages.fwp binpackages.fwp
	freewrap -w `echo $@ | sed 's/tclish-//'`/bin/freewrap \
                    install.tcl -f http.fwp -f packages.fwp -b binpackages.fwp \
	            http.fwp packages.fwp binpackages.fwp
	mv install $@

tclish-win.exe: install.tcl http.fwp winpackages.fwp winbinpackages.fwp
	freewrap -w `echo $@ | sed 's/tclish-//;s/.exe//'`/bin/freewrap.exe \
                    install.tcl -f http.fwp -f winpackages.fwp -b winbinpackages.fwp \
	            http.fwp winpackages.fwp winbinpackages.fwp
	mv install.exe $@

installbin: aix/bin/install \
            hpux/bin/install \
	    linux/bin/install \
	    solaris/bin/install \
	    win/bin/install.exe

aix/bin/install \
hpux/bin/install \
linux/bin/install \
solaris/bin/install: install.tcl http.fwp
	freewrap -w `echo $@ | sed 's/install//'`freewrap \
	            install.tcl -f http.fwp http.fwp
	mv install $@

win/bin/install.exe: http.fwp install.tcl
	freewrap -w `echo $@ | sed 's/install.exe//'`freewrap.exe \
	            install.tcl -f http.fwp http.fwp
	mv install.exe $@

EXCLUDES= img \
	  packages \
	  aix \
	  hpux \
	  linux \
	  solaris \
	  win \
	  examples/tclish_packages/tclish-src.tar.Z \
	  examples/tclish_packages/tclish-aix.tar.Z \
	  examples/tclish_packages/tclish-hpux.tar.Z \
	  examples/tclish_packages/tclish-linux.tar.Z \
	  examples/tclish_packages/tclish-solaris.tar.Z \
	  examples/tclish_packages/tclish-win.tar.Z \
	  examples/tclish_packages/tclish-src.tar.Z.manifest \
	  examples/tclish_packages/tclish-aix.tar.Z.manifest \
	  examples/tclish_packages/tclish-hpux.tar.Z.manifest \
	  examples/tclish_packages/tclish-linux.tar.Z.manifest \
	  examples/tclish_packages/tclish-solaris.tar.Z.manifest \
	  examples/tclish_packages/tclish-win.tar.Z.manifest \
	  examples/tclish_packages/tclish-src.exe \
	  examples/tclish_packages/tclish-aix.exe \
	  examples/tclish_packages/tclish-hpux.exe \
	  examples/tclish_packages/tclish-linux.exe \
	  examples/tclish_packages/tclish-solaris.exe \
	  examples/tclish_packages/tclish-win.exe \
	  install \
	  tclish-aix.bin \
	  tclish-hpux.bin \
	  tclish-linux.bin \
	  tclish-solaris.bin \
	  tclish-win.exe \
	  http.fwp \
	  packages.fwp \
	  binpackages.fwp \
	  winpackages.fwp \
	  winbinpackages.fwp

/tmp/excludes:
	find * -name CVS -print >> $@
	find * -name '*.tar.Z' -print >> $@
	find * -name '*.manifest' -print >> $@
	find examples packages -name '*.exe' -print >> $@
	for x in $(EXCLUDES); do \
	  echo $$x >> $@; \
	done

img: 
	rm -f img
	ln -s examples/tclish_img img

packages: 
	rm -f packages
	ln -s examples/tclish_packages packages

packages/tclish-src.tar.Z: /tmp/excludes
	tar cvfX - /tmp/excludes * | (compress; exit 0) > $@

packages/tclish-aix.tar.Z: aix/bin/install
	tar cvf - $< | (compress; exit 0) > $@

packages/tclish-hpux.tar.Z: hpux/bin/install
	tar cvf - $< | (compress; exit 0) > $@

packages/tclish-linux.tar.Z: linux/bin/install
	tar cvf - $< | (compress; exit 0) > $@

packages/tclish-solaris.tar.Z: solaris/bin/install
	tar cvf - $< | (compress; exit 0) > $@

packages/tclish-win.tar.Z: win/bin/install.exe
	tar cvf - $< | (compress; exit 0) > $@

packages/freewrap-aix.tar.Z: aix/bin/freewrap
	tar cvf - $< | (compress; exit 0) > $@

packages/freewrap-hpux.tar.Z: hpux/bin/freewrap
	tar cvf - $< | (compress; exit 0) > $@

packages/freewrap-linux.tar.Z: linux/bin/freewrap
	tar cvf - $< | (compress; exit 0) > $@

packages/freewrap-solaris.tar.Z: solaris/bin/freewrap
	tar cvf - $< | (compress; exit 0) > $@

packages/freewrap-win.tar.Z: win/bin/freewrap.exe win/bin/unzipsfx.exe
	tar cvf - $^ | (compress; exit 0) > $@

%.tar.Z.manifest: %.tar.Z
	cat $^ | uncompress | tar tf - > $@

%.exe: %.tar.Z.manifest
	cat $^ | zip $@.zip -@
	cat win/bin/unzipsfx.exe $@.zip >> $@
	rm $@.zip

http.fwp: 
	find `pwd`/lib/http2.3 -type f | grep -v CVS > http.fwp
	find `pwd`/lib/uri -type f | grep -v CVS >> http.fwp

packages.fwp: packages img \
     packages/tclish-src.tar.Z.manifest \
     packages/tclish-aix.tar.Z.manifest \
     packages/tclish-hpux.tar.Z.manifest \
     packages/tclish-linux.tar.Z.manifest \
     packages/tclish-solaris.tar.Z.manifest \
     packages/tclish-win.tar.Z.manifest \
     packages/freewrap-aix.tar.Z.manifest \
     packages/freewrap-hpux.tar.Z.manifest \
     packages/freewrap-linux.tar.Z.manifest \
     packages/freewrap-solaris.tar.Z.manifest \
     packages/freewrap-win.tar.Z.manifest
	find img packages -follow -name '*.cfg' > packages.fwp; \
                find img packages -follow -name '*.manifest' >> packages.fwp; \
                find img packages -follow -name '*.pkg' >> packages.fwp

binpackages.fwp: packages img \
     packages/tclish-src.tar.Z \
     packages/tclish-aix.tar.Z \
     packages/tclish-hpux.tar.Z \
     packages/tclish-linux.tar.Z \
     packages/tclish-solaris.tar.Z \
     packages/tclish-win.tar.Z \
     packages/freewrap-aix.tar.Z \
     packages/freewrap-hpux.tar.Z \
     packages/freewrap-linux.tar.Z \
     packages/freewrap-solaris.tar.Z \
     packages/freewrap-win.tar.Z
	find img packages -follow -name '*.gif' > binpackages.fwp; \
                find img packages -follow -name '*.Z' >> binpackages.fwp

winpackages.fwp: packages img
	find img packages -follow -name '*.cfg' > winpackages.fwp; \
                find img packages -follow -name '*.pkg' >> winpackages.fwp

winbinpackages.fwp: packages img \
     packages/tclish-src.exe \
     packages/tclish-aix.exe \
     packages/tclish-hpux.exe \
     packages/tclish-linux.exe \
     packages/tclish-solaris.exe \
     packages/tclish-win.exe \
     packages/freewrap-aix.exe \
     packages/freewrap-hpux.exe \
     packages/freewrap-linux.exe \
     packages/freewrap-solaris.exe \
     packages/freewrap-win.exe
	find img packages -follow -name '*.gif' > winbinpackages.fwp; \
                find img packages -follow -name '*.exe' >> winbinpackages.fwp

clean:
	rm -f /tmp/excludes \
	      packages.fwp \
	      binpackages.fwp \
	      winpackages.fwp \
	      winbinpackages.fwp \
	      install \
	      install.exe \
	      core
	rm -f img packages
	find examples -name '*.tar.Z' -exec rm {} \;
	find examples -name '*.tar.Z.manifest' -exec rm {} \;
	find examples -name '*.exe' -exec rm {} \;
	find examples -name '*.zip' -exec rm {} \;
clobber: clean
	rm -f http.fwp
	rm -f tclish-*
