# ==============================================================================
# Makefile for newsreader
#
# Copyright (c) 2012-2013 by the developers. See the LICENSE file for details.
#
# Switch 'make' into POSIX conformant mode (must be the first non-comment line!)
.POSIX:

# Clear suffix list for inference rules
.SUFFIXES:


# ==============================================================================
# Main rules

# Complete build without documentation
all: build2.mk
	$(MAKE) -f build2.mk all

# Clean source tree
clean: mk/config.mk mk/prebuild.mk
	$(MAKE) -f mk/config.mk build1.mk
	$(MAKE) -f build1.mk $@

# Tests
test: build2.mk
	$(MAKE) -f build2.mk $@

# Installation
install: build2.mk
	$(MAKE) -f build2.mk $@

# Installation with stripped binaries
install-strip: build2.mk
	$(MAKE) -f build2.mk $@

# HTML and PDF documentation
documentation: build2.mk
	$(MAKE) -f build2.mk $@

# Map anything unknown (only works if build system is already created)
# (Dependencies are not allowed by POSIX for the default rule!)
.DEFAULT:
	@printf "%s\n" "Build requested element '$@' ..."
	@test -f build2.mk || \
           (printf "You must do 'make build2.mk' first!\n" ; false)
	$(MAKE) -f build2.mk $@


# ==============================================================================
# Sub rules

# Create first sublevel Makefile
build1.mk: mk/config.mk mk/prebuild.mk mk/rules.mk
	$(MAKE) -f mk/config.mk build1.mk

# Create second sublevel Makefile
build2.mk: build1.mk mk/config.mk mk/rules.mk
	$(MAKE) -f build1.mk build2.mk

# Some files cannot be generated
mk/config.mk: ;
mk/prebuild.mk: ;
mk/rules.mk: ;


# EOF
