# Copyright (C) 2007  University of Rostock
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA.

IF(COMMAND CMAKE_POLICY)
	CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND CMAKE_POLICY)

INCLUDE_DIRECTORIES(AFTER ${CMAKE_CURRENT_BINARY_DIR} ${GSOAP_INCLUDE_DIR} ${GSOAP_INCLUDE_DIR}/plugin ${DPWS_INCLUDES})


################################################################################
################################################################################
##                                                                            ##
## Build tools                                                                ##
##                                                                            ##
################################################################################
################################################################################

SET(DPWS_DEVICE_METADATATOC ${CMAKE_CURRENT_SOURCE_DIR}/deviceMetadataToC.xslt CACHE PATH "")
SET(DPWS_DEVICE_METADATATOH ${CMAKE_CURRENT_SOURCE_DIR}/deviceMetadataToH.xslt CACHE PATH "")
SET(DPWS_HOSTED_METADATATOC ${CMAKE_CURRENT_SOURCE_DIR}/hostedMetadataToC.xslt CACHE PATH "")
SET(DPWS_HOSTED_METADATATOH ${CMAKE_CURRENT_SOURCE_DIR}/hostedMetadataToH.xslt CACHE PATH "")

################################################################################
# embedwsdl                                                                    #
################################################################################
IF(NOT CMAKE_CROSSCOMPILING)

  ADD_EXECUTABLE(embedwsdl embedwsdl.c)

  GET_TARGET_PROPERTY(EMBEDWSDL_BINARY embedwsdl LOCATION)
  SET(DPWS_EMBEDWSDL ${EMBEDWSDL_BINARY} CACHE PATH "")

  INSTALL(TARGETS embedwsdl RUNTIME DESTINATION bin)

ELSE(NOT CMAKE_CROSSCOMPILING)

  FIND_PROGRAM(DPWS_EMBEDWSDL
               NAMES embedwsdl
               PATHS ${DPWS_EMBEDWSDL_PATH}
               NO_DEFAULT_PATH
               NO_CMAKE_ENVIRONMENT_PATH
               NO_CMAKE_PATH
               NO_SYSTEM_ENVIRONMENT_PATH
               NO_CMAKE_SYSTEM_PATH)

  IF(NOT DPWS_EMBEDWSDL)
    SET(ERROR_MSG "${ERROR_MSG} can't find host executable embedwsdl in ${DPWS_EMBEDWSDL_PATH}")
  ENDIF(NOT DPWS_EMBEDWSDL)
  
ENDIF(NOT CMAKE_CROSSCOMPILING)

# required for tools to depend on embedwsdl
ADD_CUSTOM_TARGET(tool_embedwsdl DEPENDS ${DPWS_EMBEDWSDL})

################################################################################
# ws4d_wsdl2gsoap_c.sh                                                         #
################################################################################

CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ws4d_wsdl2gsoap_c.sh.in
               ${CMAKE_CURRENT_BINARY_DIR}/ws4d_wsdl2gsoap_c.sh
               @ONLY)

INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/ws4d_wsdl2gsoap_c.sh DESTINATION bin)

################################################################################
# ws4d_genmessages.sh                                                          #
################################################################################

CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/ws4d_genmessages.sh.in
               ${CMAKE_CURRENT_BINARY_DIR}/ws4d_genmessages.sh
               @ONLY)

INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/ws4d_genmessages.sh DESTINATION bin)


FILE(WRITE ${EXECUTABLE_OUTPUT_PATH}/HostExecutables.cmake "SET(DPWS_EMBEDWSDL_PATH ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH \"\")\n")
FILE(APPEND ${EXECUTABLE_OUTPUT_PATH}/HostExecutables.cmake "MARK_AS_ADVANCED(DPWS_EMBEDWSDL_PATH)")

INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/HostExecutables.cmake DESTINATION share/ws4d-gSOAP)

IF(CMAKE_CROSSCOMPILING)
  # In case of crosscompiling the cmake_executable_suffix is set for the target
  # platform. Since the embedwsdl tool should have a suffix for the host
  # platform we have to get the filename extension to correctly rename the
  # embedwsdl programm.
  GET_FILENAME_COMPONENT(HOST_EXECUTABLE_SUFFIX "${DPWS_EMBEDWSDL}" EXT)
  INSTALL(PROGRAMS ${DPWS_EMBEDWSDL} DESTINATION bin RENAME "embedwsdl_host${HOST_EXECUTABLE_SUFFIX}")
ENDIF(CMAKE_CROSSCOMPILING)	

INSTALL(FILES deviceMetadataToC.xslt deviceMetadataToH.xslt hostedMetadataToC.xslt hostedMetadataToH.xslt invert.xslt DESTINATION share/ws4d-gSOAP)

MARK_AS_ADVANCED(
	DPWS_EMBEDWSDL
	DPWS_DEVICE_METADATATOC
	DPWS_DEVICE_METADATATOH
	DPWS_HOSTED_METADATATOC
	DPWS_HOSTED_METADATATOH
)

