include ../Make.defines
PROGS = client clientrst \
serv01 serv02 serv03 serv04 serv05 serv06 serv07 serv08
all: ${PROGS}
# The client to test the various servers.
client: client.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ client.o pr_cpu_time.o ${LIBS}
# A special client that sends an RST occasionally.
# Used to test the XTI server (should receive disconnect).
clientrst: clientrst.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ clientrst.o pr_cpu_time.o ${LIBS}
# serv00: traditional concurrent server: use as base level
serv00: serv00.o web_child.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ serv00.o web_child.o pr_cpu_time.o ${LIBS}
# serv01: one fork per client (traditional concurrent server).
serv01: serv01.o web_child.o sig_chld_waitpid.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ serv01.o web_child.o sig_chld_waitpid.o \
pr_cpu_time.o ${LIBS}
# serv02: prefork, no locking; works on BSD-derived systems
# but not on SVR4-derived systems.
serv02: serv02.o child02.o web_child.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ serv02.o child02.o web_child.o pr_cpu_time.o ${LIBS}
# serv02l: prefork, no locking, block in select instead of accept to see
# select collisions; works on BSD-derived systems but not on SVR4.
serv02l:serv02.o child02l.o web_child.o pr_cpu_time.o
${CC} ${CFLAGS} -o serv02l serv02.o child02l.o web_child.o \
pr_cpu_time.o ${LIBS}
# serv02m: prefork, no locking; works on BSD-derived systems.
# This version is "metered" to see #clients/child serviced.
serv02m:serv02m.o child02m.o web_child.o pr_cpu_time.o meter.o
${CC} ${CFLAGS} -o serv02m serv02m.o child02m.o web_child.o \
pr_cpu_time.o meter.o ${LIBS}
# serv03: prefork, file locking using fcntl(). Similar to Apache server.
serv03: serv03.o child03.o lock_fcntl.o web_child.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ serv03.o child03.o lock_fcntl.o web_child.o \
pr_cpu_time.o ${LIBS}
# serv03m: prefork, file locking using fcntl(), metered.
serv03m: serv03m.o child03m.o lock_fcntl.o web_child.o pr_cpu_time.o meter.o
${CC} ${CFLAGS} -o $@ serv03m.o child03m.o lock_fcntl.o web_child.o \
pr_cpu_time.o meter.o ${LIBS}
# serv04: prefork, file locking using pthread locking.
serv04: serv04.o child04.o lock_pthread.o web_child.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ serv04.o child04.o lock_pthread.o \
web_child.o pr_cpu_time.o ${LIBS}
# serv05: prefork, descrptor passing to children. Similar to NSCA server.
serv05: serv05.o child05.o lock_fcntl.o web_child.o pr_cpu_time.o
${CC} ${CFLAGS} -o $@ serv05.o child05.o lock_fcntl.o web_child.o \
pr_cpu_time.o ${LIBS}
# Thread versions must call a reentrant version of readline().
# serv06: one thread per client.
serv06: serv06.o web_child.o pr_cpu_time.o readline.o
${CC} ${CFLAGS} -o $@ serv06.o web_child.o pr_cpu_time.o \
readline.o ${LIBS}
# serv07: prethread with mutex locking around accept().
serv07: serv07.o pthread07.o web_child.o pr_cpu_time.o readline.o
${CC} ${CFLAGS} -o $@ serv07.o pthread07.o web_child.o pr_cpu_time.o \
readline.o ${LIBS}
# serv08: prethread with only main thread doing accept().
serv08: serv08.o pthread08.o web_child.o pr_cpu_time.o readline.o
${CC} ${CFLAGS} -o $@ serv08.o pthread08.o web_child.o pr_cpu_time.o \
readline.o ${LIBS}
# serv09: prethread with no locking around accept().
serv09: serv09.o pthread09.o web_child.o pr_cpu_time.o readline.o
${CC} ${CFLAGS} -o $@ serv09.o pthread09.o web_child.o pr_cpu_time.o \
readline.o ${LIBS}
clean:
rm -f ${PROGS} ${CLEANFILES}
syntax highlighted by Code2HTML, v. 0.9.1