diff options
-rw-r--r-- | CMakeLists.txt | 51 | ||||
-rw-r--r-- | cmake/version.cmake | 21 | ||||
-rw-r--r-- | utils/CMakeLists.txt | 8 | ||||
-rw-r--r-- | utils/config.h.in (renamed from utils/config.h) | 16 | ||||
-rw-r--r-- | utils/libsmartcols/src/libsmartcols.h | 7 |
5 files changed, 71 insertions, 32 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 76439db..08b0138 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,14 @@ cmake_minimum_required(VERSION 3.10) -# set the project name -project(xloop) +# include CMake macros +set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include(version) + +# define root CMake project +project(xloop + DESCRIPTION "xloop Kernel modules and utility" + HOMEPAGE_URL "https://git.openslx.org/openslx-ng/xloop.git/" + LANGUAGES C) # define project specific settings set(BLK_DEV_XLOOP_MIN_COUNT 8 @@ -13,35 +20,49 @@ set(XLOOP_MAJOR 120 message(STATUS "Number of xloop devices to pre-create at init time is " ${BLK_DEV_XLOOP_MIN_COUNT}) message(STATUS "Major number for xloop devices is " ${XLOOP_MAJOR}) +# set supported build configurations +set(CMAKE_CONFIGURATION_TYPES Debug Release) + # set compilation in debug mode as default configuration if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Debug") + set(CMAKE_BUILD_TYPE Debug) + message(STATUS "Build type is not set. Defaulting to ${CMAKE_BUILD_TYPE} build!") endif() -# define packaging -if(NOT CMAKE_BUILD_TYPE MATCHES Debug) - set(CPACK_GENERATOR "DEB") - set(CPACK_SOURCE_GENERATOR "TGZ") - set(CPACK_IGNORE_FILES "*.gitignore") - set(CPACK_PACKAGE_NAME "xloop") - set(CPACK_PACKAGE_DESCRIPTION "xloop Kernel modules and utility") - set(CPACK_PACKAGE_VERSION_MAJOR 0) - set(CPACK_PACKAGE_VERSION_MINOR 1) +# get versions to define project version +get_kernel_version(LINUX_KERNEL_VERSION) +get_repository_version(REPOSITORY_VERSION) +set(VERSION ${LINUX_KERNEL_VERSION}-${REPOSITORY_VERSION}) + +# define packaging if Release build is enabled +if(${CMAKE_BUILD_TYPE} MATCHES Release) + set(CPACK_GENERATOR "DEB;TGZ") + set(CPACK_SOURCE_GENERATOR "TGZ;ZIP") + set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) + set(CPACK_MONOLITHIC_INSTALL True) + set(CPACK_IGNORE_FILES ".git*") + set(CPACK_PACKAGE_VERSION ${VERSION}) set(CPACK_PACKAGE_SECTION admin) set(CPACK_PACKAGE_VENDOR "University of Freiburg") set(CPACK_PACKAGE_CONTACT "Christian Rößler <christian.roessler@rz.uni-freiburg.de>") - set(CPACK_PACKAGE_HOMEPAGE_URL "https://git.openslx.org/openslx-ng/xloop.git/") set(CPACK_PACKAGE_CHECKSUM SHA256) - set(CPACK_STRIP_FILES TRUE) - set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CMAKE_SYSTEM_PROCESSOR}) + set(CPACK_STRIP_FILES True) + set(CPACK_SET_DESTDIR True) + set(CMAKE_INSTALL_PREFIX /usr) + # set DEB generator specific packaging options set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/package/deb/postinst "depmod -a\n") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/package/deb/postrm "depmod -a\n") set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${CMAKE_CURRENT_BINARY_DIR}/package/deb/postinst ${CMAKE_CURRENT_BINARY_DIR}/package/deb/postrm) + # include CPack functionality include(CPack) endif() # add subprojects add_subdirectory(kernel) add_subdirectory(utils) + +# print version information +message(STATUS "Configured ${CMAKE_PROJECT_NAME} in version ${VERSION}") diff --git a/cmake/version.cmake b/cmake/version.cmake new file mode 100644 index 0000000..da3951d --- /dev/null +++ b/cmake/version.cmake @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# CMake macros to get version numbers +# Copyright (C) 2020 Manuel Bentele <development@manuel-bentele.de> +# + +# macro to get Linux kernel version +macro(get_kernel_version LINUX_KERNEL_VERSION) + execute_process(COMMAND uname -r + OUTPUT_VARIABLE UNAME_RESULT + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" LINUX_KERNEL_VERSION ${UNAME_RESULT}) +endmacro(get_kernel_version) + +# macro to get short hash of latest commit +macro(get_repository_version REPOSITORY_VERSION) + execute_process(COMMAND git rev-parse --short HEAD + OUTPUT_VARIABLE SHORT_HASH_RESULT + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX MATCH "[0-9a-fA-F]+" REPOSITORY_VERSION ${SHORT_HASH_RESULT}) +endmacro(get_repository_version) diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index df83a7a..1388f2b 100644 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -7,8 +7,12 @@ project(xloop-utils) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) -# add include of config.h to each source file -add_compile_options(-include ${CMAKE_CURRENT_SOURCE_DIR}/config.h) +# prepare date for configuring config.h +string(TIMESTAMP DATE "%d-%b-%Y") + +# configure configuration config.h and add it to each source file +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) +add_compile_options(-include ${CMAKE_CURRENT_BINARY_DIR}/config.h) # add xloop specific compile options add_definitions(-DCONFIG_BLK_DEV_XLOOP_MIN_COUNT=${BLK_DEV_XLOOP_MIN_COUNT} -DXLOOP_MAJOR=${XLOOP_MAJOR}) diff --git a/utils/config.h b/utils/config.h.in index f74c162..40b8d34 100644 --- a/utils/config.h +++ b/utils/config.h.in @@ -694,19 +694,19 @@ /* #undef HAVE___SECURE_GETENV */ /* libblkid date string */ -#define LIBBLKID_DATE "23-Jul-2020" +#define LIBBLKID_DATE "@DATE@" /* libblkid version string */ -#define LIBBLKID_VERSION "2.36.97" +#define LIBBLKID_VERSION "@VERSION@" /* libfdisk version string */ -#define LIBFDISK_VERSION "2.36.97" +#define LIBFDISK_VERSION "@VERSION@" /* libmount version string */ -#define LIBMOUNT_VERSION "2.36.97" +#define LIBMOUNT_VERSION "@VERSION@" /* libsmartcols version string */ -#define LIBSMARTCOLS_VERSION "2.36.97" +#define LIBSMARTCOLS_VERSION "@VERSION@" /* Should login chown /dev/vcsN? */ /* #undef LOGIN_CHOWN_VCS */ @@ -736,7 +736,7 @@ #define PACKAGE_NAME "util-linux" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "util-linux 2.36.97-87ac5-dirty" +#define PACKAGE_STRING "util-linux @VERSION@" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "util-linux" @@ -745,7 +745,7 @@ #define PACKAGE_URL "http://www.kernel.org/pub/linux/utils/util-linux/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.36.97-87ac5" +#define PACKAGE_VERSION "@VERSION@" /* Should pg ring the bell on invalid keys? */ #define PG_BELL 1 @@ -848,7 +848,7 @@ /* #undef USE_VENDORDIR */ /* Version number of package */ -#define VERSION "2.36.97-87ac5" +#define VERSION "@VERSION@" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ diff --git a/utils/libsmartcols/src/libsmartcols.h b/utils/libsmartcols/src/libsmartcols.h index 2b2c08f..5714bfa 100644 --- a/utils/libsmartcols/src/libsmartcols.h +++ b/utils/libsmartcols/src/libsmartcols.h @@ -19,13 +19,6 @@ extern "C" { #include <sys/types.h> /** - * LIBSMARTCOLS_VERSION: - * - * Library version string - */ -#define LIBSMARTCOLS_VERSION "2.36.97" - -/** * libscols_iter: * * Generic iterator |