Skip to content

Commit

Permalink
Top-level CMake
Browse files Browse the repository at this point in the history
  • Loading branch information
David Goodwin committed Apr 16, 2021
1 parent 58f155d commit 5395203
Show file tree
Hide file tree
Showing 9 changed files with 260 additions and 38 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/build
/.vscode
*.so
85 changes: 85 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * 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.
# * Neither the name of NVIDIA CORPORATION nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
# EXPRESS 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 COPYRIGHT OWNER OR
# 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.

cmake_minimum_required(VERSION 3.17)

project(tritonclient LANGUAGES C CXX)

#
# Options
#
option(TRITON_ENABLE_CC_HTTP "Enable C++ HTTP client libraries" OFF)
option(TRITON_ENABLE_CC_GRPC "Enable C++ GRPC client libraries" OFF)
option(TRITON_ENABLE_GPU "Enable GPU support in libraries" OFF)

set(TRITON_CORE_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/core repo")
set(TRITON_COMMON_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/common repo")

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()

#
# Dependencies
#
include(FetchContent)

FetchContent_Declare(
repo-common
GIT_REPOSITORY https://github.com/triton-inference-server/common.git
GIT_TAG ${TRITON_COMMON_REPO_TAG}
GIT_SHALLOW ON
)
FetchContent_Declare(
repo-core
GIT_REPOSITORY https://github.com/triton-inference-server/core.git
GIT_TAG ${TRITON_CORE_REPO_TAG}
GIT_SHALLOW ON
)
FetchContent_MakeAvailable(repo-common repo-core)

if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC)
add_subdirectory(src/c++/library)
endif() # TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC

if(TRITON_ENABLE_CC_HTTP)
add_custom_target(cc-http ALL)
add_dependencies(cc-http httpclient httpclient_static)
endif() # TRITON_ENABLE_CC_HTTP

if(TRITON_ENABLE_CC_GRPC)
add_custom_target(cc-grpc ALL)
add_dependencies(cc-grpc grpcclient grpcclient_static)
endif() # TRITON_ENABLE_CC_GRPC

#add_subdirectory(src/c++/library)
#if(NOT ${TRITON_CLIENT_SKIP_EXAMPLES})
# add_subdirectory(examples)
# add_subdirectory(perf_analyzer)
# # FIXME: Control building the client test with a
# # separate cmake flag.
# add_subdirectory(tests)
#endif() # TRITON_CLIENT_SKIP_EXAMPLES
25 changes: 25 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* 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.
* Neither the name of NVIDIA CORPORATION nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
EXPRESS 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 COPYRIGHT OWNER OR
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.
32 changes: 31 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,31 @@
# client
<!--
# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * 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.
# * Neither the name of NVIDIA CORPORATION nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
# EXPRESS 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 COPYRIGHT OWNER OR
# 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.
-->

[![License](https://img.shields.io/badge/License-BSD3-lightgrey.svg)](https://opensource.org/licenses/BSD-3-Clause)

# Triton Clients
88 changes: 65 additions & 23 deletions src/c++/library/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ cmake_minimum_required (VERSION 3.18)

find_package(Threads REQUIRED)

if(${TRITON_ENABLE_GRPC})
if(${TRITON_ENABLE_CC_GRPC})
#
# libgrpcclient.so and libgrpcclient_static.a
#
Expand Down Expand Up @@ -199,9 +199,9 @@ if(${TRITON_ENABLE_GRPC})
DESTINATION include
)

endif() # TRITON_ENABLE_GRPC
endif() # TRITON_ENABLE_CC_GRPC

if(${TRITON_ENABLE_HTTP})
if(${TRITON_ENABLE_CC_HTTP})
#
# libhttpclient.so and libhttpclient_static.a
#
Expand Down Expand Up @@ -345,30 +345,72 @@ if(${TRITON_ENABLE_HTTP})
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
endif() # TRITON_ENABLE_HTTP
endif() # TRITON_ENABLE_CC_HTTP

# cmake configuration
include (CMakePackageConfigHelpers)
set(_LIB_CMAKE_DIR lib/cmake/TRITON)
install(
EXPORT triton-export
FILE TRITONTargets.cmake
NAMESPACE TRITON::
DESTINATION ${_LIB_CMAKE_DIR}
include(GNUInstallDirs)
set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/TritonClient)

if(${TRITON_ENABLE_CC_GRPC})
install(
TARGETS
grpcclient
grpcclient_static

EXPORT
triton-client-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/TRITONConfigVersion.cmake
VERSION ${TRITON_VERSION}
COMPATIBILITY ExactVersion
endif() # TRITON_ENABLE_CC_GRPC

if(${TRITON_ENABLE_CC_HTTP})
install(
TARGETS
httpclient
httpclient_static

EXPORT
triton-client-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
configure_package_config_file (
${CMAKE_CURRENT_LIST_DIR}/cmake/TRITONConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/TRITONConfig.cmake
INSTALL_DESTINATION ${_LIB_CMAKE_DIR}
endif() # TRITON_ENABLE_CC_HTTP

install(
EXPORT
triton-client-targets
FILE
TritonClientTargets.cmake
NAMESPACE
TritonClient::
DESTINATION
${INSTALL_CONFIGDIR}
)

include(CMakePackageConfigHelpers)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/cmake/TritonClientConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/TritonClientConfig.cmake
INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
)

install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/TRITONConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/TRITONConfigVersion.cmake
DESTINATION ${_LIB_CMAKE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/TritonClientConfig.cmake
DESTINATION
${INSTALL_CONFIGDIR}
)

#
# Export from build tree
#
export(
EXPORT
triton-client-targets
FILE
${CMAKE_CURRENT_BINARY_DIR}/TritonClientTargets.cmake
NAMESPACE
TritonClient::
)

export(PACKAGE TritonClient)
37 changes: 37 additions & 0 deletions src/c++/library/cmake/TritonClientConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * 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.
# * Neither the name of NVIDIA CORPORATION nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
# EXPRESS 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 COPYRIGHT OWNER OR
# 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.

include(CMakeFindDependencyMacro)

get_filename_component(
TRITONCLIENT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH
)

list(APPEND CMAKE_MODULE_PATH ${TRITONCLIENT_CMAKE_DIR})

if(NOT TARGET TritonClient::triton-client)
include("${TRITONCLIENT_CMAKE_DIR}/TritonClientTargets.cmake")
endif()
8 changes: 4 additions & 4 deletions src/python/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

cmake_minimum_required (VERSION 3.18)

if(${TRITON_ENABLE_HTTP})
if(${TRITON_ENABLE_CC_HTTP})
install(
PROGRAMS
simple_http_health_metadata.py
Expand All @@ -46,7 +46,7 @@ if(${TRITON_ENABLE_HTTP})
DESTINATION python
)
endif() # TRITON_ENABLE_GPU
endif() # TRITON_ENABLE_HTTP
endif() # TRITON_ENABLE_CC_HTTP

if(${TRITON_ENABLE_GRPC})
install(
Expand Down Expand Up @@ -77,7 +77,7 @@ if(${TRITON_ENABLE_GRPC})
endif() # TRITON_ENABLE_GPU
endif() # TRITON_ENABLE_GRPC

if(${TRITON_ENABLE_HTTP} OR ${TRITON_ENABLE_GRPC})
if(${TRITON_ENABLE_CC_HTTP} OR ${TRITON_ENABLE_CC_GRPC})
install(
PROGRAMS
ensemble_image_client.py
Expand All @@ -86,4 +86,4 @@ if(${TRITON_ENABLE_HTTP} OR ${TRITON_ENABLE_GRPC})
memory_growth_test.py
DESTINATION python
)
endif() # TRITON_ENABLE_HTTP || TRITON_ENABLE_GRPC
endif() # TRITON_ENABLE_CC_HTTP || TRITON_ENABLE_CC_GRPC
12 changes: 6 additions & 6 deletions src/python/library/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ add_subdirectory(tritonclient)
# Needed for the backwards-compatibility
# Remove when moving completely to the
# new structure.
if(${TRITON_ENABLE_GRPC})
if(${TRITON_ENABLE_CC_GRPC})
file(COPY tritongrpcclient DESTINATION .)
endif() # TRITON_ENABLE_GRPC
if(${TRITON_ENABLE_HTTP})
endif() # TRITON_ENABLE_CC_GRPC
if(${TRITON_ENABLE_CC_HTTP})
file(COPY tritonhttpclient DESTINATION .)
endif() # TRITON_ENABLE_HTTP
endif() # TRITON_ENABLE_CC_HTTP
file(COPY tritonclientutils DESTINATION .)
if (NOT WIN32)
file(COPY tritonshmutils DESTINATION .)
Expand All @@ -63,12 +63,12 @@ if(${TRITON_ENABLE_GRPC})
)
endif() # TRITON_ENABLE_GRPC

if(${TRITON_ENABLE_HTTP})
if(${TRITON_ENABLE_CC_HTTP})
set(WHEEL_DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/tritonclient/http
${WHEEL_DEPENDS}
)
endif() # TRITON_ENABLE_HTTP
endif() # TRITON_ENABLE_CC_HTTP

#
# Generic Wheel file
Expand Down
8 changes: 4 additions & 4 deletions src/python/library/tritonclient/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@

cmake_minimum_required (VERSION 3.18)

if(${TRITON_ENABLE_HTTP})
if(${TRITON_ENABLE_CC_HTTP})
file(COPY http DESTINATION .)
endif() # TRITON_ENABLE_HTTP
endif() # TRITON_ENABLE_CC_HTTP

if(${TRITON_ENABLE_GRPC})
if(${TRITON_ENABLE_CC_GRPC})
file(COPY grpc DESTINATION .)
endif() # TRITON_ENABLE_GRPC
endif() # TRITON_ENABLE_CC_GRPC

add_subdirectory(utils)

0 comments on commit 5395203

Please sign in to comment.