# Find json-rcp-cpp 
#
# Find the json-rpc-cpp includes and library
# 
# if you nee to add a custom library search path, do it via via CMAKE_PREFIX_PATH 
# 
# This module defines
#  JSON_RCP_CPP_INCLUDE_DIRS, where to find header, etc.
#  JSON_RCP_CPP_LIBRARIES, the libraries needed to use json-rpc-cpp.
#  JSON_RPC_CPP_SERVER_LIBRARIES, the libraries needed to use json-rpc-cpp-server
#  JSON_RPC_CPP_CLIENT_LIBRARIES, the libraries needed to use json-rpc-cpp-client
#  JSON_RCP_CPP_FOUND, If false, do not try to use json-rpc-cpp.

# only look in default directories
find_path(
	JSON_RPC_CPP_INCLUDE_DIR 
	NAMES jsonrpccpp/server.h
	PATH_SUFFIXES jsonrpc
	DOC "json-rpc-cpp include dir"
)

find_library(
	JSON_RPC_CPP_COMMON_LIBRARY
	NAMES jsonrpccpp-common
	DOC "json-rpc-cpp common library"
)

find_library(
	JSON_RPC_CPP_SERVER_LIBRARY
	NAMES jsonrpccpp-server
	DOC "json-rpc-cpp server library"
)

find_library(
	JSON_RPC_CPP_CLIENT_LIBRARY
	NAMES jsonrpccpp-client
	DOC "json-rpc-cpp client library"
)

# these are the variables to be uses by the calling script
set (JSON_RPC_CPP_INCLUDE_DIRS ${JSON_RPC_CPP_INCLUDE_DIR})
set (JSON_RPC_CPP_LIBRARIES ${JSON_RPC_CPP_COMMON_LIBRARY} ${JSON_RPC_CPP_SERVER_LIBRARY} ${JSON_RPC_CPP_CLIENT_LIBRARY})
set (JSON_RPC_CPP_SERVER_LIBRARIES ${JSON_RPC_CPP_COMMON_LIBRARY} ${JSON_RPC_CPP_SERVER_LIBRARY})
set (JSON_RPC_CPP_CLIENT_LIBRARIES ${JSON_RPC_CPP_COMMON_LIBRARY} ${JSON_RPC_CPP_CLIENT_LIBRARY})

# debug library on windows
# same naming convention as in qt (appending debug library with d)
# boost is using the same "hack" as us with "optimized" and "debug"
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
	find_library(
		JSON_RPC_CPP_COMMON_LIBRARY_DEBUG
		NAMES jsonrpccpp-commond
		DOC "json-rpc-cpp common debug library"
	)
	
	find_library(
		JSON_RPC_CPP_SERVER_LIBRARY_DEBUG
		NAMES jsonrpccpp-serverd
		DOC "json-rpc-cpp server debug library"
	)

	find_library(
		JSON_RPC_CPP_CLIENT_LIBRARY_DEBUG
		NAMES jsonrpccpp-clientd
		DOC "json-rpc-cpp client debug library"
	)

	set (JSON_RPC_CPP_LIBRARIES
		optimized ${JSON_RPC_CPP_COMMON_LIBRARY}
		optimized ${JSON_RPC_CPP_SERVER_LIBRARY}
		optimized ${JSON_RPC_CPP_CLIENT_LIBRARY}
		debug ${JSON_RPC_CPP_COMMON_LIBRARY_DEBUG}
		debug ${JSON_RPC_CPP_SERVER_LIBRARY_DEBUG}
		debug ${JSON_RPC_CPP_CLIENT_LIBRARY_DEBUG}
	)
	
	set (JSON_RPC_CPP_SERVER_LIBRARIES
		optimized ${JSON_RPC_CPP_COMMON_LIBRARY}
		optimized ${JSON_RPC_CPP_SERVER_LIBRARY}
		debug ${JSON_RPC_CPP_COMMON_LIBRARY_DEBUG}
		debug ${JSON_RPC_CPP_SERVER_LIBRARY_DEBUG}
	)

	set (JSON_RPC_CPP_CLIENT_LIBRARIES
		optimized ${JSON_RPC_CPP_COMMON_LIBRARY}
		optimized ${JSON_RPC_CPP_CLIENT_LIBRARY}
		debug ${JSON_RPC_CPP_COMMON_LIBRARY_DEBUG}
		debug ${JSON_RPC_CPP_CLIENT_LIBRARY_DEBUG}
	)

endif()

# handle the QUIETLY and REQUIRED arguments and set JSON_RPC_CPP_FOUND to TRUE
# if all listed variables are TRUE, hide their existence from configuration view
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(json_rpc_cpp DEFAULT_MSG
    JSON_RPC_CPP_COMMON_LIBRARY JSON_RPC_CPP_SERVER_LIBRARY JSON_RPC_CPP_CLIENT_LIBRARY JSON_RPC_CPP_INCLUDE_DIR)                             
mark_as_advanced (JSON_RPC_CPP_COMMON_LIBRARY JSON_RPC_CPP_SERVER_LIBRARY JSON_RPC_CPP_CLIENT_LIBRARY JSON_RPC_CPP_INCLUDE_DIR)