You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

211 lines
5.4 KiB
CMake

# SPDX-License-Identifier: MIT
#
# Copyright (C) Koynov Stas - skojnov@yandex.ru
#
#
# This module try find the system gsoap
#
# This code sets the following variables:
#
# GSOAP_VERSION = gSOAP version
#
# GSOAP_INCLUDE_DIR = Full path to the main gSOAP header stdsoap2.h
# GSOAP_CUSTOM_DIR = Full path to gSOAP custom serializers for various data types
# GSOAP_IMPORT_DIR = Full path to gSOAP import-ed header files for soapcpp2 compiler
# GSOAP_PLUGIN_DIR = Full path to gSOAP plug-ins for advanced features
# GSOAP_WS_DIR = Full path to gSOAP WS-typemap.dat and WS-* protocol schemas for plug-in development
#
# GSOAP_C_LIBRARY = Full path to libgsoap.a
# GSOAP_CK_C_LIBRARY = Full path to libgsoapck.a
# GSOAP_SSL_C_LIBRARY = Full path to libgsoapssl.a
# GSOAP_CXX_LIBRARY = Full path to libgsoap++.a
# GSOAP_CK_CXX_LIBRARY = Full path to libgsoapck++.a
# GSOAP_SSL_CXX_LIBRARY = Full path to libgsoapssl++.a
#
# GSOAP_WSDL2H = Full path to wsdl2h binary tool
# GSOAP_SOAPCPP2 = Full path to soapcpp2 binary tool
#
# GSOAP_FOUND = set to true if gsoap was found successfully
message(STATUS "Searching gSOAP")
find_path(GSOAP_INCLUDE_DIR
NAMES stdsoap2.h
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/include ${GSOAP_DIR}/include/*
DOC "The main gSOAP header"
)
find_path(GSOAP_CUSTOM_DIR
NAMES chrono_duration.cpp
HINTS ${GSOAP_DIR}/custom /usr/share/gsoap/custom
DOC "gSOAP custom serializers for various data types"
)
find_path(GSOAP_IMPORT_DIR
NAMES wsa.h
HINTS ${GSOAP_DIR}/import /usr/share/gsoap/import
DOC "gSOAP import-ed header files for soapcpp2 compiler"
)
find_path(GSOAP_PLUGIN_DIR
NAMES wsaapi.h
HINTS ${GSOAP_DIR}/plugin /usr/share/gsoap/plugin
DOC "gSOAP plug-ins for advanced features"
)
find_path(GSOAP_WS_DIR
NAMES typemap.dat
HINTS ${GSOAP_DIR}/WS /usr/share/gsoap/WS
DOC "gSOAP WS-typemap.dat and WS-* protocol schemas for plug-in development"
)
# user want use only static library
if(DEFINED USE_GSOAP_STATIC_LIB)
set(CMAKE_FIND_LIBRARY_SUFFIXES_OLD ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
endif()
# C Library
find_library(GSOAP_C_LIBRARY
NAMES gsoap
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/lib ${GSOAP_DIR}/lib64
${GSOAP_DIR}/lib32
)
find_library(GSOAP_CK_C_LIBRARY
NAMES gsoapck
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/lib ${GSOAP_DIR}/lib64
${GSOAP_DIR}/lib32
)
find_library(GSOAP_SSL_C_LIBRARY
NAMES gsoapssl
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/lib ${GSOAP_DIR}/lib64
${GSOAP_DIR}/lib32
)
# C++ Library
find_library(GSOAP_CXX_LIBRARY
NAMES gsoap++
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/lib ${GSOAP_DIR}/lib64
${GSOAP_DIR}/lib32
)
find_library(GSOAP_CK_CXX_LIBRARY
NAMES gsoapck++
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/lib ${GSOAP_DIR}/lib64
${GSOAP_DIR}/lib32
)
find_library(GSOAP_SSL_CXX_LIBRARY
NAMES gsoapssl++
HINTS ${GSOAP_DIR} ${GSOAP_DIR}/lib ${GSOAP_DIR}/lib64
${GSOAP_DIR}/lib32
)
# restore old value for CMAKE_FIND_LIBRARY_SUFFIXES
if(DEFINED USE_GSOAP_STATIC_LIB)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_OLD})
unset(CMAKE_FIND_LIBRARY_SUFFIXES_OLD)
endif()
# gSOAP tools
find_program(GSOAP_WSDL2H
NAMES wsdl2h
HINTS ${GSOAP_DIR}/wsdl ${GSOAP_DIR}/bin
)
find_program(GSOAP_SOAPCPP2
NAMES soapcpp2
HINTS ${GSOAP_DIR}/src ${GSOAP_DIR}/bin
)
# Try get gSOAP version
execute_process(COMMAND ${GSOAP_SOAPCPP2} "-V"
OUTPUT_VARIABLE GSOAP_STRING_VERSION
ERROR_VARIABLE GSOAP_STRING_VERSION
)
string(REGEX MATCH "[0-9]*\\.[0-9]*\\.[0-9]*" GSOAP_VERSION ${GSOAP_STRING_VERSION})
unset(GSOAP_STRING_VERSION)
# Show find results
message(STATUS "GSOAP_VERSION = ${GSOAP_VERSION}")
if(DEFINED GSOAP_DIR)
message(STATUS "GSOAP_DIR = ${GSOAP_DIR}")
endif()
message(STATUS "GSOAP_INCLUDE_DIR = ${GSOAP_INCLUDE_DIR}")
message(STATUS "GSOAP_CUSTOM_DIR = ${GSOAP_CUSTOM_DIR}")
message(STATUS "GSOAP_IMPORT_DIR = ${GSOAP_IMPORT_DIR}")
message(STATUS "GSOAP_PLUGIN_DIR = ${GSOAP_PLUGIN_DIR}")
message(STATUS "GSOAP_WS_DIR = ${GSOAP_WS_DIR}")
message(STATUS "GSOAP_C_LIBRARY = ${GSOAP_C_LIBRARY}")
message(STATUS "GSOAP_CK_C_LIBRARY = ${GSOAP_CK_C_LIBRARY}")
message(STATUS "GSOAP_SSL_C_LIBRARY = ${GSOAP_SSL_C_LIBRARY}")
message(STATUS "GSOAP_CXX_LIBRARY = ${GSOAP_CXX_LIBRARY}")
message(STATUS "GSOAP_CK_CXX_LIBRARY = ${GSOAP_CK_CXX_LIBRARY}")
message(STATUS "GSOAP_SSL_CXX_LIBRARY = ${GSOAP_SSL_CXX_LIBRARY}")
message(STATUS "GSOAP_SOAPCPP2 = ${GSOAP_SOAPCPP2}")
message(STATUS "GSOAP_WSDL2H = ${GSOAP_WSDL2H}")
# -----------------------------------------------------
# handle the QUIETLY and REQUIRED arguments and set GSOAP_FOUND to TRUE if
# all listed variables are TRUE
# -----------------------------------------------------
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(gSOAP DEFAULT_MSG
GSOAP_C_LIBRARY
GSOAP_SSL_C_LIBRARY
GSOAP_CXX_LIBRARY
GSOAP_SSL_CXX_LIBRARY
GSOAP_INCLUDE_DIR
GSOAP_CUSTOM_DIR
GSOAP_IMPORT_DIR
GSOAP_PLUGIN_DIR
GSOAP_SOAPCPP2
GSOAP_WSDL2H
)
mark_as_advanced(
GSOAP_C_LIBRARY
GSOAP_CK_C_LIBRARY
GSOAP_SSL_C_LIBRARY
GSOAP_CXX_LIBRARY
GSOAP_CK_CXX_LIBRARY
GSOAP_SSL_CXX_LIBRARY
GSOAP_INCLUDE_DIR
GSOAP_CUSTOM_DIR
GSOAP_IMPORT_DIR
GSOAP_PLUGIN_DIR
GSOAP_SOAPCPP2
GSOAP_WSDL2H
)