#
# The Apache Software License, Version 1.1
#
# Copyright (c) 1999-2003 The Apache Software Foundation.  All rights
# reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# 3. The end-user documentation included with the redistribution,
#    if any, must include the following acknowledgment:
#       "This product includes software developed by the
#        Apache Software Foundation (http://www.apache.org/)."
#    Alternately, this acknowledgment may appear in the software itself,
#    if and wherever such third-party acknowledgments normally appear.
#
# 4. The names "Xerces" and "Apache Software Foundation" must
#    not be used to endorse or promote products derived from this
#    software without prior written permission. For written
#    permission, please contact apache\@apache.org.
#
# 5. Products derived from this software may not be called "Apache",
#    nor may "Apache" appear in their name, without prior written
#    permission of the Apache Software Foundation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# ====================================================================
#
# This software consists of voluntary contributions made by many
# individuals on behalf of the Apache Software Foundation, and was
# originally based on software copyright (c) 1999, International
# Business Machines, Inc., http://www.ibm.com .  For more information
# on the Apache Software Foundation, please see
# <http://www.apache.org/>.
#
#
# $Id: Makefile.in,v 1.37 2003/12/10 23:50:25 neilg Exp $
#

###################################################################
#                    IMPORTANT NOTE                               #
###################################################################
# If you are going to do the OS390BATCH build, make sure you have #
# the OS390BATCH environment variable set.                        #
#                                                                 #
#   export OS390BATCH=1                                           #
#                                                                 #
###################################################################

PLATFORM = @platform@
CC  = @cc@
CXX = @cxx@
GCC = @GCC@
GXX = @GXX@
PREFIX = @prefix@
LDFLAGS = @ldflags@
LIBS = @libs@
OSVER = @osver@
TRANSCODER = @transcoder@
MESSAGELOADER = @messageloader@
BITSTOBUILD = @bitstobuild@

include ../version.incl
include ../src/xercesc/Makefile.incl

LIB=${XERCESCROOT}/lib
## OS390BATCH
ifeq (${OS390BATCH},1)
BATCH_TARGET = "//'${LOADMOD}(IXM4C54)'"
endif
ifneq (${PLATFORM}, OS400)
ifeq (${PLATFORM}, CYGWIN)
CYGNAME=cygxerces-c
endif
LIBNAME=libxerces-c
else
LIBNAME=libxercesc
endif

ALL_OBJECTS=$(wildcard $(PLATFORM)/*.o)

#######################################################
#  HP-UX with CC compiler is awkward since it does    #
#  not instantiate templates automatically. To do so  #
#  you need to invoke the linker. So, just for this   #
#  compiler, we try to create a dummy executable      #
#  before we create the shared library.  This will    #
#  force all templates to be instantiated and the     #
#  shared library is created with all template        #
#  instantiations in place.                           #
#######################################################

ifeq (${PLATFORM},HPUX)
  ifeq (${CXX},CC)
    ######  Start HP-UX  CC compiler specific stuff #######

    DUMMYEXE=$(XML_LIB_DIR)/dummyExe
    TEMPLATESOBJS=$(wildcard $(TEMPLATESREPOSITORY)/*.o)

    all: $(DUMMYEXE) ${FQ_REAL_NAME}
	\rm -f $(DUMMYEXE)

    $(DUMMYEXE): $(ALL_OBJECTS)
	${MAKE_SHARED} -o ${@} $^ $(PLATFORM_LIBRARIES) $(ALLLIBS)

    ######  End HP-UX  CC compiler specific stuff #######
  else
    all: ${FQ_REAL_NAME}
  endif
else
   ## Start OS390BATCH ##
  ifeq (${OS390BATCH},1)
all: ${BATCH_TARGET}
   ## End OS390BATCH ##
  else
    ifeq (${PLATFORM},CYGWIN)
all: ${FQ_SO_NAME}
    else
all: ${FQ_REAL_NAME}
    endif
  endif
endif

########################################################
#                                                      #
# OS/390 works pretty much the same way as Windows NT  #
# as far as linking goes. The runtime library is       #
# called .dll, and the link-time libraries have a .x   #
# extension. You need the .x files to link             #
# your application at build time and need the .dll     #
# file to run it. So, we need to copy over the .x      #
# file to the lib directory as well, so that you can   #
# link your application.                               #
########################################################

ifeq (${PLATFORM},CYGWIN)
${FQ_SO_NAME}:	$(ALL_OBJECTS)
	@echo Building ${FQ_SO_NAME}
	${MAKE_SHARED} ${LD_SONAME} -o ${@} ${^} $(TEMPLATESOBJS) $(PLATFORM_LIBRARIES) $(EXTRA_LINK_OPTIONS) $(ALLLIBS)
	@echo symlink ${FQ_REAL_NAME}.a
	rm -rf ${FQ_REAL_NAME}.a   && ln -s ${XML_LIB_DIR}/${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}.a ${FQ_REAL_NAME}.a
	@echo symlink ${FQ_LINK_NAME}.a
	rm -rf ${FQ_LINK_NAME}.a && ln -s ${FQ_REAL_NAME}.a ${FQ_LINK_NAME}.a
endif

${FQ_REAL_NAME}:	$(ALL_OBJECTS)
	@echo Building ${FQ_REAL_NAME}
	${MAKE_SHARED} ${LD_SONAME} -o ${@} ${^} $(TEMPLATESOBJS) $(PLATFORM_LIBRARIES) $(EXTRA_LINK_OPTIONS) $(ALLLIBS)
    ifneq (${FQ_SO_NAME},${FQ_REAL_NAME})
	@echo symlink ${FQ_SO_NAME} 
	rm -rf ${FQ_SO_NAME}   && ln -s ${FQ_REAL_NAME} ${FQ_SO_NAME}
    endif
	@echo symlink ${FQ_LINK_NAME}
	rm -rf ${FQ_LINK_NAME} && ln -s ${FQ_SO_NAME} ${FQ_LINK_NAME}

## Start OS390 ##
ifeq (${PLATFORM},OS390)
## Start OS390BATCH ##
ifeq (${OS390BATCH},1)
${BATCH_TARGET}:        $(ALL_OBJECTS)
	@echo Building ${BATCH_TARGET}
	${MAKE_SHARED} -o ${@} ${^} $(TEMPLATESOBJS) $(PLATFORM_LIBRARIES) $(EXTRA_LINK_OPTIONS) $(ALLLIBS)
else
	$(CP) ${LIBNAME}${VER}${OS390SIDEDECK} ${LIB}
endif
endif

## End OS390 and OS390BATCH


clean:
	@echo "Making clean in obj ..."
	-rm -f $(ALL_OBJECTS) ${FQ_REAL_NAME}
ifneq ($(strip $(TEMPLATESREPOSITORY)),)
	-rm -f $(TEMPLATESREPOSITORY)/*.o
	-rm -f $(TEMPLATESREPOSITORY)/*.c
	-rm -f $(TEMPLATESREPOSITORY)/*.cs
	-rm -f $(TEMPLATESREPOSITORY)/*.he
endif
ifeq (${PLATFORM}, CYGWIN)
	-rm -f ${XML_LIB_DIR}/${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}.a
	-rm -f ${FQ_LINK_NAME}.a
	-rm -f ${FQ_REAL_NAME}.a
else
	-rm -f ${FQ_SO_NAME}
	-rm -f ${FQ_LINK_NAME}
endif


distclean:	clean
	-rm -f Makefile
	-rm -rf $(XML_OBJ_DIR)
ifneq ($(strip $(TEMPLATESREPOSITORY)),)
	-rm -rf $(TEMPLATESREPOSITORY)
endif


install:
ifeq (${OS390BATCH},1)
	@echo "Nothing to do for OS390BATCH ..."
else
	-mkdir -p ${DESTDIR}${PREFIX}/lib
ifeq (${PLATFORM}, CYGWIN)
	-mkdir -p ${DESTDIR}${PREFIX}/bin
	$(CP) ${FQ_SO_NAME} ${DESTDIR}${PREFIX}/bin
	$(CP) $(XML_LIB_DIR)/${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}.a ${DESTDIR}${PREFIX}/lib
	(cd ${DESTDIR}$(PREFIX)/lib; rm -f ${LINK_NAME}.a libxerces.dll.a; ln -s ${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}.a ${LINK_NAME}.a; ln -s ${LIBNAME}${SO_TARGET_VERSION}${SHLIBSUFFIX}.a libxerces.dll.a)
else
	$(CP) ${FQ_REAL_NAME} ${DESTDIR}$(PREFIX)/lib
	(cd ${DESTDIR}$(PREFIX)/lib; ln -s ${REAL_NAME} ${SO_NAME}; ln -s ${REAL_NAME} ${LINK_NAME})
endif
ifeq (${PLATFORM},OS390)
	$(CP) ${LIBNAME}${VER}${OS390SIDEDECK} ${DESTDIR}$(PREFIX)/lib
endif
endif