diff --git a/README.md b/README.md index 7ad7c18..73da2f9 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ cd ${CLIENT_REPO_ROOT}/kubernetes # Build mkdir build cd build -cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lib .. +cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. make sudo make install ``` diff --git a/kubernetes/CMakeLists.txt b/kubernetes/CMakeLists.txt index 79a5a12..2f9de32 100644 --- a/kubernetes/CMakeLists.txt +++ b/kubernetes/CMakeLists.txt @@ -28,7 +28,11 @@ else() endif() set(pkgName "kubernetes") -set(VERSION 0.0.1) # this default version can be overridden in PreTarget.cmake + +# this default version can be overridden in PreTarget.cmake +set(PROJECT_VERSION_MAJOR 0) +set(PROJECT_VERSION_MINOR 0) +set(PROJECT_VERSION_PATCH 1) find_package(CURL 7.58.0 REQUIRED) if(CURL_FOUND) @@ -1230,6 +1234,8 @@ set(HDRS include(PreTarget.cmake OPTIONAL) +set(PROJECT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") + # Add library with project file with project name as library name add_library(${pkgName} ${SRCS} ${HDRS}) # Link dependent libraries @@ -1246,22 +1252,22 @@ include(PostTarget.cmake OPTIONAL) # installation of libraries, headers, and config files if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in) - install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX}) + install(TARGETS ${pkgName} DESTINATION lib) else() include(GNUInstallDirs) - install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX} EXPORT ${pkgName}Targets) + install(TARGETS ${pkgName} DESTINATION lib EXPORT ${pkgName}Targets) foreach(HDR_FILE ${HDRS}) get_filename_component(HDR_DIRECTORY ${HDR_FILE} DIRECTORY) get_filename_component(ABSOLUTE_HDR_DIRECTORY ${HDR_DIRECTORY} ABSOLUTE) file(RELATIVE_PATH RELATIVE_HDR_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${ABSOLUTE_HDR_DIRECTORY}) - install(FILES ${HDR_FILE} DESTINATION include/${RELATIVE_HDR_PATH}) + install(FILES ${HDR_FILE} DESTINATION include/${pkgName}/${RELATIVE_HDR_PATH}) endforeach() include(CMakePackageConfigHelpers) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${pkgName}/${pkgName}ConfigVersion.cmake" - VERSION "${VERSION}" + VERSION "${PROJECT_VERSION_STRING}" COMPATIBILITY AnyNewerVersion ) @@ -1293,6 +1299,9 @@ else() ) endif() +# make installation packages +include(Packing.cmake OPTIONAL) + # Setting file variables to null set(SRCS "") set(HDRS "") diff --git a/kubernetes/Packing.cmake b/kubernetes/Packing.cmake new file mode 100644 index 0000000..766160d --- /dev/null +++ b/kubernetes/Packing.cmake @@ -0,0 +1,22 @@ +set(CPACK_PACKAGE_NAME lib${pkgName}) + +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) + +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_PACKAGE_DESCRIPTION_SUMMARY}) +set(CPACK_PACKAGE_VENDOR ${PROJECT_PACKAGE_VENDOR}) +set(CPACK_PACKAGE_CONTACT ${PROJECT_PACKAGE_CONTACT}) +set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${PROJECT_PACKAGE_MAINTAINER}) + +set(CPACK_VERBATIM_VARIABLES YES) + +set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) + +set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) + +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + +set(CPACK_DEB_COMPONENT_INSTALL YES) + +include(CPack) \ No newline at end of file diff --git a/kubernetes/PreTarget.cmake b/kubernetes/PreTarget.cmake index 9a84000..93ea00e 100644 --- a/kubernetes/PreTarget.cmake +++ b/kubernetes/PreTarget.cmake @@ -1,39 +1,46 @@ -set(VERSION 0.0.1) - -# config.h checks -include(ConfigureChecks.cmake) -configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) - -list(APPEND SRCS - config/kube_config_model.c - config/kube_config_yaml.c - config/kube_config_util.c - config/kube_config.c - config/incluster_config.c - config/exec_provider.c - config/authn_plugin/authn_plugin_util.c - config/authn_plugin/authn_plugin.c - watch/watch_util.c - websocket/wsclient.c - websocket/kube_exec.c - src/generic.c - src/utils.c) - -list(APPEND HDRS - config/kube_config_common.h - config/kube_config_model.h - config/kube_config_yaml.h - config/kube_config_util.h - config/kube_config.h - config/incluster_config.h - config/exec_provider.h - config/authn_plugin/authn_plugin_util.h - config/authn_plugin/authn_plugin.h - watch/watch_util.h - websocket/wsclient.h - websocket/kube_exec.h - include/generic.h - src/utils.c) - -find_package(libwebsockets CONFIG REQUIRED) +set(PROJECT_VERSION_MAJOR 0) +set(PROJECT_VERSION_MINOR 0) +set(PROJECT_VERSION_PATCH 1) + +set(PROJECT_PACKAGE_DESCRIPTION_SUMMARY "The Kubernetes client library for the C programming language.") +set(PROJECT_PACKAGE_VENDOR "https://github.com/kubernetes-client") +set(PROJECT_PACKAGE_CONTACT "https://github.com/kubernetes-client/c") +set(PROJECT_PACKAGE_MAINTAINER "https://github.com/kubernetes-client/c") + +# config.h checks +include(ConfigureChecks.cmake) +configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) + +list(APPEND SRCS + config/kube_config_model.c + config/kube_config_yaml.c + config/kube_config_util.c + config/kube_config.c + config/incluster_config.c + config/exec_provider.c + config/authn_plugin/authn_plugin_util.c + config/authn_plugin/authn_plugin.c + watch/watch_util.c + websocket/wsclient.c + websocket/kube_exec.c + src/generic.c + src/utils.c) + +list(APPEND HDRS + config/kube_config_common.h + config/kube_config_model.h + config/kube_config_yaml.h + config/kube_config_util.h + config/kube_config.h + config/incluster_config.h + config/exec_provider.h + config/authn_plugin/authn_plugin_util.h + config/authn_plugin/authn_plugin.h + watch/watch_util.h + websocket/wsclient.h + websocket/kube_exec.h + include/generic.h + include/utils.h) + +find_package(libwebsockets CONFIG REQUIRED) find_package(yaml CONFIG REQUIRED) \ No newline at end of file