#----------------------------------------------------------------------------
#       $Id: Release 89957 2010-04-22 07:53:43Z johnnyw $
#
#       Top-level Makefile for the ACE toolkit libraries, tests, and
#       applications
#----------------------------------------------------------------------------

#### NOTE:  The following comments describe how to create kits.
####        It's intended for use by ACE+TAO developers and
####        maintainers only.  ACE+TAO users need not be concerned
####        with creating kits, just unpacking and using them.

#### The "release" and "releaseall" targets can be used to create
#### the ACE and ACE+TAO kits.  By default, each creates a new beta
#### release.  To create a new minor or major release, add REL=minor
#### or REL=major, respectively, to the make invocation.
####
#### NOTE: the REL modifier applies to _both_ ACE and TAO in
#### releaseall!
####
#### To create a new ACE minor release and a TAO beta release:
####   % make release REL=minor
####   % cd TAO
####   % make release
####
#### There are some other release/releaseall options [default value is in
#### brackets]:
####   ACE_TAG [ACE version in your workspace]: prepend tag with -ta
####   TAO_TAG [TAO version in your workspace]: prepend tag with -tt
####
####   NOTE: the ACE and TAO versions will be updated automatically
####   by release/releaseall.  ACE_TAG and TAO_TAG can be overridden
####   to kit a particular version.
####
####   APPLY_NEW_TAG [enabled]: set to null to disable
####   CHECK [disabled]: set to -n to see what make_release will do, but not
####     do it
####   INSTALL_KIT [enabled]: set to null to not install in public
####     ftp/http directory on host ace
####   REL [beta]: set to minor or major, optionally, when applying a new tag
####   ZIP_FILES [enabled]: set to -z to disable creation of .zip files
####
#### Example creation of ACE-only kit, version ACE-5_0_1 from current
#### workspace:
#### make release ACE_TAG='-ta ACE-5_0_1' APPLY_NEW_TAG= \
####   INSTALL_KIT= ZIP_FILES=-z


CONTROLLED_FILES = \
        ACE-INSTALL.html \
        ASNMP \
        AUTHORS \
        COPYING \
        ChangeLog* \
        FAQ \
        Release \
        NEWS \
        ACE.mwc \
        Makefile.am \
        PROBLEM-REPORT-FORM \
        README \
        THANKS \
        VERSION \
	ACEXML \
        ace \
        apps \
        bin \
	configure.ac \
        debian \
        lib \
	MPC \
        docs \
        etc \
        examples \
        include \
        m4 \
        netsvcs \
        performance-tests \
        rpmbuild \
        tests \
	Kokyu \
	protocols \
	websvcs \
	contrib

RELEASE_FILES = \
        $(addprefix ACE_wrappers/,$(CONTROLLED_FILES)) \
        ACE_wrappers/GNUmake* \
        ACE_wrappers/*.sln \
        ACE_wrappers/*.bmak \
        ACE_wrappers/*.vcw \
	ACE_wrappers/Makefile.in \
	ACE_wrappers/configure \
	ACE_wrappers/aclocal.m4 \
	ACE_wrappers/aux_config


ALL_RELEASE_FILES = \
	$(RELEASE_FILES) \
        ACE_wrappers/TAO

RELEASE_LIB_FILES = \
        ACE_wrappers/VERSION \
        ACE_wrappers/ace \
        ACE_wrappers/bin \
        ACE_wrappers/lib \
        ACE_wrappers/etc \
        ACE_wrappers/include \
        ACE_wrappers/m4 \
        ACE_wrappers/netsvcs \
        ACE_wrappers/tests \
        ACE_wrappers/websvcs

# Files that should get tagged at release time but shouldn't be in any
# of the release file lists since they may already be in a directory
# found in those lists.
RELEASE_TAG_FILES = \
        html

.PHONY: tag ACE TAO CIAO acesources taosources ciaosources
.PHONY: allsources manpages all

# Some useful defines which are used to create the release bundle.
ACE_TAG_VALUE = $(shell head -1 VERSION | perl -ne \
                's/.* ([\d\.]+),.*\n/$$1/; tr/./_/; print "ACE-$$_";')
ACE_TAG       = -ta $(ACE_TAG_VALUE)
TAO_TAG_VALUE = $(shell head -1 TAO/VERSION | perl -ne \
                's/.* ([\d\.]+),.*\n/$$1/; tr/./_/; print "TAO-$$_";')
TAO_TAG       = -tt $(TAO_TAG_VALUE)
CIAO_TAG_VALUE = $(shell head -1 TAO/CIAO/VERSION | perl -ne \
                's/.* ([\d\.]+),.*\n/$$1/; tr/./_/; print "CIAO-$$_";')
CIAO_TAG       = -tc $(CIAO_TAG_VALUE)
APPLY_NEW_TAG      = tag
CHECK              =
INSTALL_KIT        = -i
REL                = beta
MAKE	 	   = make -f Release
ZIP_FILES          =

tag:
	@$(ACE_ROOT)/bin/make_release $(CHECK) -k ace -v $(REL) -u

#### The allsources target:
allsources: $(APPLY_NEW_TAG)
	@cd TAO  &&  $(MAKE) -s allsources REL=$(REL)

### Generate man pages
manpages:
	@$(ACE_ROOT)/bin/generate_rel_manpages

#### Generate everything in one shot -- not recommended
all: allsources manpages

#################################################################
#### The following targets in the following block are used by the
#### targets defined above. Please do not invoke them directly.
#################################################################

#### The release target creates the ACE (only) kit. This is not supposed
#### to be used directly. Use make -f Release ACE instead.
acesources: $(APPLY_NEW_TAG)
	@$(ACE_ROOT)/bin/make_release -k ace $(ACE_TAG) \
         $(INSTALL_KIT) $(ZIP_FILES) $(CHECK)

#### The following target is for use by the TAO Release target. It
#### should not be called directly from the command line.  This is
#### invoked by the TAO target this Release file.
taosources:
	@$(ACE_ROOT)/bin/make_release -k ace+tao $(ACE_TAG) $(TAO_TAG) \
         $(INSTALL_KIT) $(ZIP_FILES) $(CHECK)

#### The following target is for use by the TAO Release target. It
#### should not be called directly from the command line.  This is
#### invoked by the TAO target this Release file.
ciaosources:
	@$(ACE_ROOT)/bin/make_release -k ace+tao+ciao $(ACE_TAG) $(TAO_TAG) $(CIAO_TAG) \
         $(INSTALL_KIT) $(ZIP_FILES) $(CHECK)

#########################################################################
## The following targets are a matter of convinience. We don't
## believe that we ever will release ACE+TAO+CIAO seperately. If that
## happens then we have these to help us out.
#########################################################################
# First, CIAO standalone
CIAO: $(allsources)

# TAO standalone
TAO: $(APPLY_NEW_TAG)
	@cd TAO  &&  $(MAKE) -s TAO REL=$(REL)

# ACE standalone
ACE: $(APPLY_NEW_TAG)
	$(MAKE) -s acesources  REL=$(REL)


.PHONY: show_controlled_files show_release_files show_release_lib_files
.PHONY: show_release_tag_files

show_controlled_files:
	@echo $(CONTROLLED_FILES)

show_release_files:
	@echo $(RELEASE_FILES)

show_release_lib_files:
	@echo $(RELEASE_LIB_FILES)

show_release_tag_files:
	@echo $(RELEASE_TAG_FILES)

