it: sysdeps.h sysdeps socket.lib util.lib

clean: EXPORT INTERNAL
	rm -f `cat EXPORT INTERNAL`


chkshsgr.o: chkshsgr.c compile
	./compile chkshsgr.c

chkshsgr: chkshsgr.o load
	./load chkshsgr 


sysdeps: compile load systype sysdeps.h socket.lib util.lib
	rm -f sysdeps
	cat systype compile load socket.lib util.lib >> sysdeps
	grep -h sysdep: sysdeps.h >> sysdeps

sysdeps.h: hasdevtcp.h hasdevptc.h hasdevptmx.h hasdevr.h hasdevur.h \
hasdirent.h haseproto.h hasflock.h hasgetpt.h \
hasgpeid.h hasmalloc0.h hasmkffo.h hasnpbg1.h \
haspollh.h hassyspollh.h haspoll.h hassgact.h hassgprm.h \
hasshsgr.h hassysel.h hasrevoke.h haswaitp.h hasulong32.h hasulong64.h \
hasutilh.h haslibutilh.h hasptyh.h hasunixh.h has_getpty.h hasopenpty.h \
hasstreams.h haslendian.h hasbendian.h hasegd.h hastiocr.h hasposixglob.h \
hasstdinth.h hasinttypesh.h hasoksyssocket.h
	@echo '/* Public domain. */' > sysdeps.h
	@echo >> sysdeps.h
	@echo '#ifndef SYSDEPS_H' >> sysdeps.h
	@echo '#define SYSDEPS_H' >> sysdeps.h
	@echo >> sysdeps.h
	cat hasdevtcp.h hasdevptc.h hasdevptmx.h hasdevr.h hasdevur.h \
	hasdirent.h haseproto.h hasflock.h hasgetpt.h \
	hasgpeid.h hasmalloc0.h hasmkffo.h hasnpbg1.h \
	haspollh.h hassyspollh.h haspoll.h hassgact.h hassgprm.h \
	hasshsgr.h hassysel.h hasrevoke.h haswaitp.h hasulong32.h hasulong64.h \
	hasutilh.h haslibutilh.h hasptyh.h has_getpty.h hasopenpty.h hasunixh.h \
	hasstreams.h haslendian.h hasbendian.h hasegd.h hastiocr.h hasposixglob.h \
	hasstdinth.h hasinttypesh.h hasoksyssocket.h >> sysdeps.h
	@echo >> sysdeps.h
	@echo '#endif' >> sysdeps.h

socket.lib: compile load trylsock.c
	echo > socket.lib
	./compile trylsock.c && ( ./load trylsock 2>/dev/null || ( ./load trylsock -lsocket -lnsl 2>/dev/null && echo -lsocket -lnsl > socket.lib ) ) || true
	rm -f trylsock.o trylsock

util.lib: compile load trylutil.c
	echo > util.lib
	./compile trylutil.c && ( ./load trylutil 2>/dev/null || ( ./load trylutil -lutil 2>/dev/null && echo -lutil > util.lib ) ) || true
	rm -f trylutil.o trylutil

hasdevtcp.h: systype hasdevtcp.h1 hasdevtcp.h2
	( case "`cat systype`" in \
	  sunos-5.*) cat hasdevtcp.h2 ;; \
	  *) cat hasdevtcp.h1 ;; \
	esac ) > hasdevtcp.h

hasdevptc.h: choose compile load trydevptc.c hasdevptc.h1 hasdevptc.h2
	./choose clr trydevptc hasdevptc.h1 hasdevptc.h2 > hasdevptc.h

hasdevptmx.h: choose compile load trydevptmx.c hasdevptmx.h1 hasdevptmx.h2
	./choose clr trydevptmx hasdevptmx.h1 hasdevptmx.h2 > hasdevptmx.h

hasdevr.h: choose compile load trydevr.c hasdevr.h1 hasdevr.h2 warn-trydevr
	@cat < warn-trydevr
	./choose clr trydevr hasdevr.h1 hasdevr.h2 > hasdevr.h

hasdevur.h: choose compile load trydevur.c hasdevur.h1 hasdevur.h2
	./choose clr trydevur hasdevur.h1 hasdevur.h2 > hasdevur.h

hasdirent.h: choose compile hasdirent.h1 hasdirent.h2 trydrent.c
	./choose c trydrent hasdirent.h1 hasdirent.h2 > hasdirent.h

haseproto.h: choose compile haseproto.h1 haseproto.h2 tryeproto.c
	./choose c tryeproto haseproto.h1 haseproto.h2 > haseproto.h

hasflock.h: choose compile hasflock.h1 hasflock.h2 load tryflock.c
	./choose cl tryflock hasflock.h1 hasflock.h2 > hasflock.h

hasgetpt.h: choose compile hasgetpt.h1 hasgetpt.h2 load trygetpt.c
	./choose cl trygetpt hasgetpt.h1 hasgetpt.h2 > hasgetpt.h

hasgpeid.h: choose compile load hasgpeid.h0 hasgpeid.h1 hasgpeid.h2 \
trysopc.c trygpeid.c
	./choose cl trygpeid hasgpeid.h0 hasgpeid.h1 > hasgpeid.tmp
	./choose c trysopc hasgpeid.tmp hasgpeid.h2 > hasgpeid.h
	rm -f hasgpeid.tmp

hasmalloc0.h: choose compile load hasmalloc0.h1 hasmalloc0.h2 trymalloc0.c
	./choose clr trymalloc0 hasmalloc0.h1 hasmalloc0.h2 > hasmalloc0.h

hasmkffo.h: choose compile hasmkffo.h1 hasmkffo.h2 load trymkffo.c
	./choose cl trymkffo hasmkffo.h1 hasmkffo.h2 > hasmkffo.h

hasnpbg1.h: choose compile hasnpbg1.h1 hasnpbg1.h2 load trynpbg1.c hasmkffo.h hassysel.h
	./choose clr trynpbg1 hasnpbg1.h1 hasnpbg1.h2 > hasnpbg1.h

haspollh.h: choose compile haspollh.h1 haspollh.h2 trypollh.c
	./choose c trypollh haspollh.h1 haspollh.h2 > haspollh.h

hassyspollh.h: choose compile hassyspollh.h1 hassyspollh.h2 trysyspollh.c
	./choose c trysyspollh hassyspollh.h1 hassyspollh.h2 > hassyspollh.h

haspoll.h: choose compile haspoll.h1 haspoll.h2 load trypoll.c haspollh.h hassyspollh.h
	./choose clr trypoll haspoll.h1 haspoll.h2 > haspoll.h

hassgact.h: choose compile hassgact.h1 hassgact.h2 load trysgact.c
	./choose cl trysgact hassgact.h1 hassgact.h2 > hassgact.h

hassgprm.h: choose compile hassgprm.h1 hassgprm.h2 load trysgprm.c
	./choose cl trysgprm hassgprm.h1 hassgprm.h2 > hassgprm.h

hasshsgr.h: chkshsgr choose compile hasshsgr.h1 hasshsgr.h2 load tryshsgr.c warn-shsgr
	./chkshsgr || ( cat warn-shsgr; exit 1 )
	./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h

hassysel.h: choose compile hassysel.h1 hassysel.h2 trysysel.c
	./choose c trysysel hassysel.h1 hassysel.h2 > hassysel.h

hasrevoke.h: choose compile hasrevoke.h1 hasrevoke.h2 load tryrevoke.c
	./choose cl tryrevoke hasrevoke.h1 hasrevoke.h2 > hasrevoke.h

haswaitp.h: choose compile haswaitp.h1 haswaitp.h2 load trywaitp.c
	./choose cl trywaitp haswaitp.h1 haswaitp.h2 > haswaitp.h

hasulong32.h: choose compile load tryulong32.c hasulong32.h1 hasulong32.h2
	./choose clr tryulong32 hasulong32.h1 hasulong32.h2 > hasulong32.h

hasulong64.h: choose compile load tryulong64.c hasulong64.h1 hasulong64.h2
	./choose clr tryulong64 hasulong64.h1 hasulong64.h2 > hasulong64.h

hasutilh.h: choose compile tryutilh.c hasutilh.h1 hasutilh.h2
	./choose c tryutilh hasutilh.h1 hasutilh.h2 > hasutilh.h

haslibutilh.h: choose compile trylibutilh.c haslibutilh.h1 haslibutilh.h2
	./choose c trylibutilh haslibutilh.h1 haslibutilh.h2 > haslibutilh.h

hasptyh.h: choose compile tryptyh.c hasptyh.h1 hasptyh.h2
	./choose c tryptyh hasptyh.h1 hasptyh.h2 > hasptyh.h

hasunixh.h: choose compile tryunixh.c hasunixh.h1 hasunixh.h2
	./choose c tryunixh hasunixh.h1 hasunixh.h2 > hasunixh.h

has_getpty.h: choose compile load try_getpty.c has_getpty.h1 has_getpty.h2
	./choose cl try_getpty has_getpty.h1 has_getpty.h2 > has_getpty.h

hasopenpty.h: choose compile load tryopenpty.c hasopenpty.h1 hasopenpty.h2 hasutilh.h haslibutilh.h hasptyh.h util.lib
	./choose cl tryopenpty hasopenpty.h1 hasopenpty.h2 `cat util.lib` > hasopenpty.h

hasstreams.h: choose compile trystreams.c hasstreams.h1 hasstreams.h2
	./choose c trystreams hasstreams.h1 hasstreams.h2 > hasstreams.h

haslendian.h: choose compile load trylendian.c haslendian.h1 haslendian.h2 hasulong32.h hasulong64.h
	./choose clr trylendian haslendian.h1 haslendian.h2 > haslendian.h

hasbendian.h: choose compile load trybendian.c hasbendian.h1 hasbendian.h2 hasulong32.h hasulong64.h
	./choose clr trybendian hasbendian.h1 hasbendian.h2 > hasbendian.h

hasegd.h: conf-egd hasegd.h1 hasegd.h2
	rm -f egd.h
	if test "x`head -n 1 conf-egd`" = "x" ; then cp hasegd.h1 hasegd.h ; \
	else sed "s|EGD_IPCPATH|`head -1 conf-egd`|" hasegd.h2 > hasegd.h ; \
	fi

hastiocr.h: choose compile trytiocr.c hastiocr.h1 hastiocr.h2
	./choose c trytiocr hastiocr.h1 hastiocr.h2 > hastiocr.h

hasposixglob.h: choose compile tryposixglob.c hasposixglob.h1 hasposixglob.h2
	./choose c tryposixglob hasposixglob.h1 hasposixglob.h2 > hasposixglob.h

hasstdinth.h: choose compile hasstdinth.h1 hasstdinth.h2 trystdinth.c
	./choose c trystdinth hasstdinth.h1 hasstdinth.h2 > hasstdinth.h

hasinttypesh.h: choose compile hasinttypesh.h1 hasinttypesh.h2 tryinttypesh.c
	./choose c tryinttypesh hasinttypesh.h1 hasinttypesh.h2 > hasinttypesh.h

hasoksyssocket.h: choose compile hasoksyssocket.h1 hasoksyssocket.h2 tryoksyssocket.c
	./choose c tryoksyssocket hasoksyssocket.h1 hasoksyssocket.h2 > hasoksyssocket.h
