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 SoS4.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.)

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

ch4ugly:        soslib $(OBJECTS); \
                /usr/lib/pc3 /usr/lib/pcexterns.o $(OBJECTS); \
                /bin/ld -dc -dp -e start -X  -o ch4 \
                        $(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
SoS4.o:         SoS4.c; \
                $(CC) SoS4.c

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