SoS = ../sos
CC = cc -c -I${SoS}
PC = pc -L -P -c

OBJECTS = ch.o ChOptions.o incid.o heap.o ChSoS.o utime.o SoS3.o

# NOTE: The top rule below does not work with all implementations of pc,
#       because some versions of pc don't know the -L<directory> option.
#       Therefore, the ugly workaround of the 'ch4ugly' rule, might not 
#       work on all machines.  (See also "pc -dryrun ${OBJECTS}", "man cc", 
#       and "man pc".  Actually, you probably don't need the "/usr/lib/Fcrt1.o
#       -L/usr/lib/fsoft" line.  Good luck.)

ch3:    soslib ${OBJECTS}; \
        pc ${OBJECTS} -L${SoS} -l_sos -o ch3

ch3ugly:        soslib $(OBJECTS); \
                /usr/lib/pc3 /usr/lib/pcexterns.o $(OBJECTS); \
                /bin/ld -dc -dp -e start -X  -o ch3 \
                        $(OBJECTS) /usr/lib/crt0.o  \
                        /usr/lib/Fcrt1.o -L/usr/lib/fsoft \
                        -L${SoS} -l_sos -lg -lpc -lm -lc

soslib:         ; \
                /bin/csh -f -c "pushd ../sos; make; popd"

ch.o:           ch.p ChConst.h ChType.h ChSoS.h incid.h heap.h utime.h; \
                $(PC) ch.p
ChOptions.o:    ChConst.h ChType.h ChOptions.h ChOptions.p; \
                $(PC) ChOptions.p
incid.o:        incid.p ChConst.h ChType.h ChSoS.h incid.h; \
                $(PC) incid.p
heap.o:         heap.p ChConst.h ChType.h ChSoS.h heap.h; \
                $(PC) heap.p
ChSoS.o:        ChSoS.p ChConst.h ChOptions.h ChType.h ChSoS.h; \
                $(PC) ChSoS.p
utime.o:        utime.c utime.h; \
                $(CC) utime.c
SoS3.o:         SoS3.c; \
                $(CC) SoS3.c

lint:; lint -I${SoS} *.c ${SoS}/*.c
