Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 17 additions & 25 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,47 +5,35 @@ project(kcron C)

set(LANGUAGES "C")

################################
# Testing (CTest)
enable_testing()
include(CTest)

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Build type (Debug, Release, RelWithDebInfo, MinSizeRel)" FORCE
)
message(STATUS "Build type not specified, defaulting to RelWithDebInfo")
endif()

message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")

execute_process(COMMAND git describe --abbrev=0 OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)

####
# CMake modules
include(FeatureSummary)

set_package_properties(kcron PROPERTIES
URL "https://github.com/fermitools/kcron"
DESCRIPTION "A utility for getting Kerberos credentials in scheduled jobs")

execute_process(COMMAND git describe --abbrev=0 OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)

####
set(CPACK_PACKAGE_NAME "fermilab-util_${CMAKE_PROJECT_NAME}")
set(CPACK_PACKAGE_CONTACT "fermilab <servicedesk@fnal.gov>")
set(CPACK_PACKAGE_DESCRIPTION A utility for getting Kerberos credentials in scheduled jobs)
set(CPACK_RPM_PACKAGE_DESCRIPTION A utility for getting Kerberos credentials in scheduled jobs)
set(CPACK_PACKAGE_DESCRIPTION "A utility for getting Kerberos credentials in scheduled jobs")
set(CPACK_PACKAGE_VERSION ${VERSION})
set(CPACK_PACKAGE_RELEASE 1)

set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE)
set(CPACK_RPM_PACKAGE_LICENSE MIT)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_RPM_PACKAGE_RELOCATABLE OFF)
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}")

set(CPACK_GENERATOR "RPM")
include(CPack)

####
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Build type (Debug, Release, RelWithDebInfo, MinSizeRel)" FORCE
)
message(STATUS "Build type not specified, defaulting to RelWithDebInfo")
endif()

message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")

### Require out-of-source builds
file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH)
if(EXISTS "${LOC_PATH}")
Expand All @@ -58,6 +46,10 @@ endif(EXISTS "${LOC_PATH}")
include(doc/CMakeLists.txt)
include(src/C/CMakeLists.txt)
include(src/shell/CMakeLists.txt)

# Testing (CTest)
enable_testing()
include(CTest)
add_subdirectory(test)

####
Expand Down
14 changes: 11 additions & 3 deletions src/C/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -285,12 +285,20 @@ add_executable(client-keytab-name)
#############################
# Installation Configuration

# init-kerberos-client-dir also needs cap_chown,cap_dac_override set via
# setcap post-install (file capabilities aren't expressible via install()).
install(TARGETS init-kerberos-client-dir DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kcron
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install(TARGETS create-empty-client-keytab DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kcron
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install(TARGETS client-keytab-name DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/kcron
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)

message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}")
message(STATUS "Install libexec: ${CMAKE_INSTALL_LIBEXECDIR}")
Expand Down
7 changes: 5 additions & 2 deletions src/shell/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ cmake_minimum_required (VERSION 3.11)

include(GNUInstallDirs)

install(FILES ${PROJECT_SOURCE_DIR}/src/shell/kcron.sysconfig DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/sysconfig RENAME kcron)
install(FILES ${PROJECT_SOURCE_DIR}/src/shell/kcrondestroy ${PROJECT_SOURCE_DIR}/src/shell/kcroninit DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES ${PROJECT_SOURCE_DIR}/src/shell/kcron.sysconfig DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/sysconfig RENAME kcron
PERMISSIONS OWNER_READ OWNER_WRITE
GROUP_READ
WORLD_READ)
install(PROGRAMS ${PROJECT_SOURCE_DIR}/src/shell/kcrondestroy ${PROJECT_SOURCE_DIR}/src/shell/kcroninit DESTINATION ${CMAKE_INSTALL_BINDIR})

#
# All CTest registrations for the shell utilities (syntax checks, sourcing,
Expand Down
Loading