# Makefile for SCIX. Johan Ihren.

# $Header: Makefile,v 1.6 90/03/29 03:34:47 johani Exp $

# This Makefile is rather ugly. Someday I must take the time to do this
# properly.

.SUFFIXES:

.SUFFIXES:	.sc .c .o

SCC	  = scc

.sc.o: ;	-$(SCC) -c $(SCCFLAGS) $*.sc

.c.o: ;		-$(SCC) -c $(SCCFLAGS) $*.c

SCIXDEMOS = -m scixdemo ../demo/scixdemos.o

SCIXSRC   = Xlibsocket.c fast-types.c rwsock.c util.sc \
	    global.sc lowlevel.sc types.sc msg-handler.sc requests.sc \
	    hash-object.sc masks.sc objects.sc font-object.sc cursor-object.sc\
	    screen-object.sc lw-objects.sc graphic-objects.sc view-object.sc \
	    create-event.sc dpy-object.sc window-object.sc gc-object.sc \
	    cmap-object.sc

SCIXOBJ   = Xlibsocket.o fast-types.o rwsock.o util.o global.o\
	    lowlevel.o types.o msg-handler.o requests.o hash-object.o masks.o \
	    objects.o lw-objects.o create-event.o dpy-object.o window-object.o\
	    gc-object.o cmap-object.o

SCIXMAKE  = Xlibsocket.o fast-types.o rwsock.o -m util util.o \
	    -m global global.o -m lowlevel lowlevel.o -m types types.o \
	    -m msghandler msg-handler.o -m requests requests.o \
	    -m hash hash-object.o -m masks masks.o -m objects objects.o \
	    -m lwobjects lw-objects.o -m createevent create-event.o \
            -m display dpy-object.o -m window window-object.o \
	    -m gc gc-object.o -m colormap cmap-object.o

LIBS      = -L.. -lscixt

../scix:	$(SCIXOBJ) Makefile
		$(SCC) -i -o Xscix $(SCIXMAKE) $(SCIXDEMOS) $(LIBS)
		mv Xscix ../scix

../rawscix:	$(SCIXOBJ) Makefile
		$(SCC) -i -o Xscix $(SCIXMAKE)
		mv Xscix ../rawscix

../libscix.a:	$(SCIXOBJ)
		rm -f ../libscix.a
		ar q ../libscix.a $(SCIXOBJ)
		ranlib ../libscix.a

clean: ;	rm -f core *.o *~ *object*.c SC-TO-C* create-event.c global.c \
		      lowlevel.c masks.c msg-handler.c requests.c types.c \
		      util.c

# For the following two rules replace /usr/include/X11 with wherever the
# X11 include files are located if you need to recreate opcodes.sc or atoms.sc
# for some reason.
opcodes.sc:	opcodes.awk # /usr/include/X11/Xproto.h
		rm -f opcodes.sc
		awk -f opcodes.awk /usr/include/X11/Xproto.h | \
		sed -e 's/X_//' > opcodes.sc

atoms.sc:	atoms.awk # /usr/include/X11/Xatom.h
		rm -f atoms.sc
		awk -f atoms.awk /usr/include/X11/Xatom.h | \
		sed -e 's/XA_//' -e '/LAST_PRE/d' > atoms.sc

rwsock.o:	rwsock.c
		$(SCC) -O2 -c $(SCCFLAGS) rwsock.c

fast-types.o:	fast-types.c
		$(SCC) -O2 -c $(SCCFLAGS) fast-types.c

CONNTYPES = -DTCPCONN -DUNIXCONN # -DSTREAMSCONN -DDNETCONN

Xlibsocket.o:	Xlibsocket.c
		$(SCC) -O $(CONNTYPES) -c Xlibsocket.c

# Dependencies. I have removed some ".sch" dependencies for "stable stuff" to
# avoid unnecessary recompilation. /Johan

# create-event loses if we try to optimize (on pmaxes with standard cc).
# Haven't had time to find out why.
create-event.o:	create-event.sc ../include/types.sch
		$(SCC) -c create-event.sc

formats.o:	formats.sc ../include/util.sch
global.o:	global.sc atoms.sc
hash-object.o:	hash-object.sc
lowlevel.o:	lowlevel.sc ../include/util.sch
masks.o:	../macros/extend-syntax.sc ../macros/mask-object.sc masks.sc \
		../include/util.sch ../include/types.sch
replies.o:	replies.sc ../include/util.sch
requests.o:	requests.sc ../include/opcodes.sch ../include/types.sch
types.o:	types.sc ../macros/extend-syntax.sc ../macros/mask-object.sc
util.o:		util.sc mktext.sc mkatom.sc ../include/types.sch
msg-handler.o:	msg-handler.sc mkevent.sc mkerror.sc mkreply.sc replies.sc \
		formats.sc ../include/types.sch

# Objects.
lw-objects.o:	lw-objects.sc graphic-objects.sc view-object.sc \
		../include/types.sch
objects.o:	../macros/extend-syntax.sc ../macros/define-class.sc \
		../include/lw-objects.sch ../include/requests.sch \
		../include/msg-handler.sch screen-object.sc font-object.sc \
		cursor-object.sc
cmap-object.o:	cmap-object.sc ../macros/extend-syntax.sc \
		../macros/define-class.sc 
dpy-object.o:	dpy-object.sc ../macros/extend-syntax.sc \
		../macros/define-class.sc
gc-object.o:	gc-object.sc ../macros/extend-syntax.sc \
		../macros/define-class.sc
window-object.o:	window-object.sc ../macros/extend-syntax.sc \
			../macros/define-class.sc
