Admin/website/build/main.mak
author haftmann
Tue, 28 Jun 2005 12:03:43 +0200
changeset 16579 094a538d8813
parent 16575 15d5f8e729fe
child 17671 e9e341bc7d42
permissions -rw-r--r--
some minor improvements

# isaweb makefile
# $Id$

# force shell
SHELL=bash

# some global variables
CONF=conf/localconf.mak

# configuration switch
ifeq ($(phase), init)

# allocate configuration
init:
	mkdir -p conf
	case $$HOSTNAME in sunbroy*) ARCH=sun;; *) ARCH=at;; esac; \
	sed 's/# $$Id.*//g' build/localconf.$$ARCH.template.mak > $(CONF)
	$$EDITOR $(CONF)
	@false
.PHONY: init

else

# default target
default: project

# check configuration
include $(CONF)
$(CONF):
	@if [ ! -e $(CONF) ]; \
	then \
		echo 'Framework not configured yet; set EDITOR environment variable'; \
		echo 'to your favorite editor and type'; \
		echo; \
		echo '    make phase=init'; \
		echo; \
		echo 'to configure it'; \
		false; \
	else \
		:; \
	fi

# tidy handling
ifeq ($(DISABLE_TIDY),)
TIDYCMD=$(TIDY) -q -i -asxhtml --output-xhtml true \
                --doctype auto \
                --literal-attributes true \
                --wrap 0 \
                --indent auto --indent-spaces 2 \
                --input-encoding utf8 --output-encoding latin1 \
                --logical-emphasis yes --gnu-emacs yes --write-back yes
else
TIDYCMD=:
endif

# dependencies
DEP_FILE=conf/depends.mak
site: $(DEP_FILE) allsite
.PHONY: site

# import dependencies
include $(DEP_FILE)
endif

# pypager iso-8859-1 hack
ifneq ($(FORCE_ISO_8859_1),)
FORCE_ENC_CMD=--encodinghtml "iso-8859-1"
else
FORCE_ENC_CMD=
endif

# import project-specific dependencies
include build/project.mak

# build dependencies
$(DEP_FILE): $(CONF)
	rm -f $(DEP_FILE); \
	touch $(DEP_FILE); \
	echo '# This is a generated file; do not edit' >> $(DEP_FILE); \
	echo >> $(DEP_FILE); \
	allstatic=''; \
	for dir in $(STATICDIRS); \
	do \
		for file in `$(FIND) $$dir -follow -type f -a ! -path "*/CVS/*"`; \
		do \
			outputfile=$(OUTPUTROOT)/$$file; \
			outputdir=`dirname $$outputfile`; \
			echo "$$outputfile: $$file" >> $(DEP_FILE); \
			echo "	mkdir -p $$outputdir" >> $(DEP_FILE); \
			echo "	-chmod $(TARGET_UMASK_DIR) $$outputdir" >> $(DEP_FILE); \
			echo '	cp $$< $$@' >> $(DEP_FILE); \
			echo '	chmod $(TARGET_UMASK_FILE) $$@' >> $(DEP_FILE); \
			allstatic="$$allstatic$$outputfile "; \
			echo >> $(DEP_FILE); \
		done; \
	done; \
	echo "DEP_ALLSTATIC=$$allstatic" >> $(DEP_FILE); \
	echo >> $(DEP_FILE); \
	echo 'DEP_HTML=$$(DEP_ALLSTATIC) $$(DEP_SYMLINKS) include/documentationdist.include.html $(DEP_FILE) $(CONF)' >> $(DEP_FILE); \
	echo >> $(DEP_FILE); \
	allhtml=''; \
	for html in `$(FIND) . -name "*.html" -a ! -name "*.include.html"`; \
	do \
		outputfile=$(OUTPUTROOT)/$$html; \
		outputdir=`dirname $$outputfile`; \
		echo "$$outputfile: $$html"' $$(DEP_HTML)' >> $(DEP_FILE); \
		echo "	mkdir -p $$outputdir" >> $(DEP_FILE); \
		echo "	-chmod $(TARGET_UMASK_DIR) $$outputdir" >> $(DEP_FILE); \
		echo '	$(PYTHON) build/pypager.py --dtd="dtd/" $(FORCE_ENC_CMD) --srcroot="." --dstroot="$(OUTPUTROOT)" distname="$(DISTNAME)" $$< $$@' >> $(DEP_FILE); \
		echo '	-$(TIDYCMD) $$@' >> $(DEP_FILE); \
		echo '	chmod $(TARGET_UMASK_FILE) $$@' >> $(DEP_FILE); \
		allhtml="$$allhtml$$outputfile "; \
		echo >> $(DEP_FILE); \
	done; \
	echo "DEP_ALLHTML=$$allhtml" >> $(DEP_FILE); \
	echo >> $(DEP_FILE); \
	echo 'allsite: $$(DEP_ALLHTML) $$(DEP_ALLSTATIC)' >> $(DEP_FILE); \
	echo ".PHONY: allsite" >> $(DEP_FILE)

# build dependencies explicitly
depends:
	rm -f $(DEP_FILE)
	$(MAKE) $(DEP_FILE)
.PHONY: depends

# clean build files
clean:
	rm -f $(DEP_FILE)
.PHONY: clean