# ===========================================================================
#
#                            PUBLIC DOMAIN NOTICE
#               National Center for Biotechnology Information
#
#  This software/database is a "United States Government Work" under the
#  terms of the United States Copyright Act.  It was written as part of
#  the author's official duties as a United States Government employee and
#  thus cannot be copyrighted.  This software/database is freely available
#  to the public for use. The National Library of Medicine and the U.S.
#  Government have not placed any restriction on its use or reproduction.
#
#  Although all reasonable efforts have been taken to ensure the accuracy
#  and reliability of the software and data, the NLM and the U.S.
#  Government do not and cannot warrant the performance or results that
#  may be obtained by using this software or data. The NLM and the U.S.
#  Government disclaim all warranties, express or implied, including
#  warranties of performance, merchantability or fitness for any particular
#  purpose.
#
#  Please cite the author in any work or product based on this material.
#
# ===========================================================================

# defines make targets commonly used in non-leaf directories:
#   default
#   all
#   std
#   clean
#   buildtests
#   runtests
#   slowtests
#
# requires $(SUBDIRS) to be defined
#
# to control which subdirectories are affected by a specific target, define
# SUBDIRS_CLEAN, SUBDIRS_RUNTESTS, etc., like this:
#   SUBDIRS_CLEAN = $(addsuffix _clean, du4r1 dir2 dir3)
#

default: $(SUBDIRS) 

#-------------------------------------------------------------------------------
# all
#
SUBDIRS_ALL ?= $(addsuffix _all,$(SUBDIRS))

all: $(SUBDIRS_ALL)

$(SUBDIRS_ALL):
	@ $(MAKE) -C $(subst _all,,$@) all

.PHONY: all $(SUBDIRS_ALL)

#-------------------------------------------------------------------------------
# std
#
SUBDIRS_STD = $(addsuffix _std,$(SUBDIRS))

std: $(SUBDIRS_STD)

$(SUBDIRS_STD): 
	@ $(MAKE) -C $(subst _std,,$@) std

.PHONY: std $(SUBDIRS_STD)

#-------------------------------------------------------------------------------
# clean
#
SUBDIRS_CLEAN ?= $(addsuffix _clean,$(SUBDIRS))

clean: $(SUBDIRS_CLEAN)

$(SUBDIRS_CLEAN):
	@ $(MAKE) -s -C $(subst _clean,,$@) clean

.PHONY: clean $(SUBDIRS_CLEAN)

#-------------------------------------------------------------------------------
# runtests
#
SUBDIRS_RUNTESTS ?= $(addsuffix _runtests,$(SUBDIRS))

runtests: std $(SUBDIRS_RUNTESTS)

$(SUBDIRS_RUNTESTS):
	@ $(MAKE) -s -C $(subst _runtests,,$@) runtests

.PHONY: runtests $(SUBDIRS_RUNTESTS)

#-------------------------------------------------------------------------------
# buildtests
#
SUBDIRS_BUILDTESTS ?= $(addsuffix _buildtests, $(SUBDIRS))

buildtests: std $(SUBDIRS_BUILDTESTS)

$(SUBDIRS_BUILDTESTS):
	@ $(MAKE) -C $(subst _buildtests,,$@) buildtests

.PHONY: buildtests $(SUBDIRS_BUILDTESTS)

#-------------------------------------------------------------------------------
# slowtests
#
SUBDIRS_SLOWTESTS ?= $(addsuffix _slowtests, $(SUBDIRS))

slowtests: $(SUBDIRS_SLOWTESTS)

$(SUBDIRS_SLOWTESTS):
	@ $(MAKE) -C $(subst _slowtests,,$@) slowtests

.PHONY: slowtests $(SUBDIRS_SLOWTESTS)

