
SUBDIRS = srclib os server modules support
CLEAN_SUBDIRS = test

PROGRAM_NAME         = $(progname)
PROGRAM_SOURCES      = modules.c
PROGRAM_LDADD        = $(EXTRA_LDFLAGS) $(HTTPD_LDFLAGS) \
                       $(PROGRAM_DEPENDENCIES) $(EXTRA_LIBS)
PROGRAM_DEPENDENCIES = \
  $(BUILTIN_LIBS) \
  $(MPM_LIB) \
  server/libmain.la \
  os/$(OS_DIR)/libos.la \
  $(AP_LIBS)

PROGRAMS        = $(PROGRAM_NAME)
TARGETS         = $(PROGRAMS) $(shared_build) $(other_targets)
PHONY_TARGETS   = $(srcdir)/buildmark.c
INSTALL_TARGETS = install-conf install-htdocs install-icons install-other \
	install-cgi install-include install-suexec

DISTCLEAN_TARGETS  = include/ap_config_auto.h include/ap_config_path.h \
	modules.c config.cache config.log config.status config_vars.mk
EXTRACLEAN_TARGETS = configure include/ap_config_auto.h.in generated_lists

include $(top_srcdir)/build/rules.mk
include $(top_srcdir)/build/program.mk

install-conf:
	@echo Installing configuration files
	@test -d $(sysconfdir) || $(MKINSTALLDIRS) $(sysconfdir)
	@cd docs/conf; \
	for i in mime.types magic; do \
		$(INSTALL_DATA) $$i $(sysconfdir); \
	done; \
	for i in *-std*; do \
		sed -e 's#@@ServerRoot@@#$(prefix)#g' \
		    -e 's#@@Port@@#$(PORT)#g' \
			< $$i > $(sysconfdir)/$$i; \
		chmod 0644 $(sysconfdir)/$$i; \
		file=`echo $$i|sed s/-std//`; \
		if [ "$$file" = "httpd.conf" ]; then \
			file=`echo $$file|sed s/.*.conf/$(PROGRAM_NAME).conf/`; \
		fi; \
		if test "$$file" != "$$i" && test ! -f $(sysconfdir)/$$file; then \
			$(INSTALL_DATA) $(sysconfdir)/$$i $(sysconfdir)/$$file; \
		fi; \
	done

htdocs-srcdir = docs/docroot

docs::
	mkdir -p ./docs/api
	srclib/apr/build/scandoc.pl -i./build/default.pl -p./docs/api/ ./include/*.h

dox::
	doxygen docs/doxygen.conf

install-htdocs:
	@echo Installing HTML documents
	@test -d $(htdocsdir) || $(MKINSTALLDIRS) $(htdocsdir)
	@test -d $(htdocs-srcdir) && (cd $(htdocs-srcdir) && cp -rp * $(htdocsdir))
	@test -d $(htdocsdir)/manual || $(MKINSTALLDIRS) $(htdocsdir)/manual
	@test -d docs/manual && (cd docs/manual && cp -rp * $(htdocsdir)/manual)
	@(cd $(htdocsdir) && find . -name "CVS" -print | xargs rm -rf {} \;)

install-icons:
	@echo Installing icons
	@test -d $(iconsdir) || $(MKINSTALLDIRS) $(iconsdir)
	@(cd docs/icons && cp -rp * $(iconsdir))
	@(cd $(iconsdir) && find . -name "CVS" -print | xargs rm -rf {} \;)

install-cgi:
	@echo Installing CGIs
	@test -d $(cgidir) || $(MKINSTALLDIRS) $(cgidir)
	@(cd docs/cgi-examples && cp -rp * $(cgidir))
	@(cd $(cgidir) && find . -name "CVS" -print | xargs rm -rf {} \;)

install-other:
	@test -d $(logfiledir) || $(MKINSTALLDIRS) $(logfiledir)
	@for ext in dll x; do \
		file=apachecore.$$ext; \
		if test -f $$file; then \
			cp -p $$file $(bindir); \
		fi; \
	done; \
	file=httpd.dll; \
	if test -f $$file; then \
		cp -p $$file $(bindir); \
	fi;

install-include:
	@echo Installing header files
	@test -d $(includedir)     || $(MKINSTALLDIRS) $(includedir)
	@cp -p include/*.h $(srcdir)/include/*.h $(includedir)
	@cp -p $(srcdir)/os/$(OS_DIR)/os.h $(includedir)
	@if test -f $(srcdir)/os/$(OS_DIR)/os-inline.c; then \
            cp -p $(srcdir)/os/$(OS_DIR)/os-inline.c $(includedir); \
        fi;
	@cp -p $(srcdir)/server/mpm/$(MPM_NAME)/*.h $(includedir)
	@cp -p $(srcdir)/modules/dav/main/mod_dav.h $(includedir)
	@cp -p $(srcdir)/modules/filters/mod_include.h $(includedir)
	@cp -p $(srcdir)/srclib/pcre/*.h $(includedir)
	@cp -p $(srcdir)/srclib/apr/include/*.h $(includedir)
	@cp -p $(srcdir)/srclib/apr-util/include/*.h $(includedir)
	@cp -p $(srcdir)/os/$(OS_DIR)/*.h $(includedir)
	@chmod 644 $(includedir)/*.h

install-suexec:
	@if test -f $(builddir)/support/suexec; then \
            test -d $(sbindir) || $(MKINSTALLDIRS) $(sbindir); \
            cp -p $(srcdir)/support/suexec $(sbindir); \
            chmod 4755 $(sbindir)/suexec; \
	fi

suexec:
	cd support && make suexec

include $(top_srcdir)/os/os2/core.mk
