HOW	:= DEBUG
#HOW	= OPTIM
#HOW	= PROF

#CONFIG	:= -DTIME_SYSCALLS
#CONFIG := -DDONT_POLL

SUBDIRS	= lib gen stat
OS	= $(shell uname -s)

# some default settings:
export RANLIB = @echo >/dev/null

ifeq ($(OS),HP-UX)
 CFLAGSOPTIM = +O3 +ESlit -Ae
 CFLAGSDEBUG = -g +ESlit -Ae
 CFLAGSPROF  = $(CFLAGSOPTIM) -G
 LDFLAGSDEBUG = -g
 LDFLAGSOPTIM = -g
 LDFLAGSPROF = -g -G
 EXTRA	 = lib/getopt lib/getopt1
 CPPFLAGS := -Ilib $(CPPFLAGS)
else
 # assume gcc-based system
 CFLAGSOPTIM = -g -O2 -Wall
 CFLAGSDEBUG = -g -O -Wall
 CFLAGSPROF = $(CFLAGSOPTIM) -pg
 LDFLAGSDEBUG = -g
 LDFLAGSOPTIM = -g
 LDFLAGSPROF = -g -pg
 ifneq ($(OS),Linux)
  # according to Stephane, both FreeBSD and NetBSD need this:
  EXTRA  = lib/getopt lib/getopt1
  RANLIB = ranlib
 endif
endif

CPPDEBUG := -DDEBUG $(CPPDEBUG)
CPPOPTIM := -DNDEBUG $(CPPOPTIM)

CPPFLAGS = -I. -Ilib $(CPP$(HOW))
CFLAGS = $(CONFIG) $(CFLAGS$(HOW))
LDFLAGS = $(LDFLAGS$(HOW))

HTTPERF = httperf object call conn sess core event http timer $(EXTRA)

HTTPERFSRC  = $(addsuffix .c,$(HTTPERF))
HTTPERFOBJS = $(addsuffix .o,$(HTTPERF))

all: $(SUBDIRS) httperf

$(SUBDIRS):
	$(MAKE) -C $@ CPPFLAGS="$(CPPFLAGS) -I.. -I../lib -I../gen" \
		CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"

httperf: $(HTTPERFOBJS) gen/libgen.a stat/libstat.a -lm

ttest: ttest.o timer.o

clean:
	rm -f *.o httperf
	@for d in $(SUBDIRS); do \
	  $(MAKE) -C $$d clean; \
	done

distclean: clean
	rm -f *~ $(addsuffix /*~,$(SUBDIRS))

.PHONY: $(SUBDIRS) clean depend
