|
Packit |
7bb4b2 |
PROJECT (createrepo_c C)
|
|
Packit |
7bb4b2 |
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.10)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
include(GNUInstallDirs)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
|
|
Packit |
7bb4b2 |
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -ggdb -g -Wall -Wextra -Og")
|
|
Packit |
7bb4b2 |
IF(NOT CMAKE_BUILD_TYPE)
|
|
Packit |
7bb4b2 |
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
|
|
Packit |
7bb4b2 |
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
|
|
Packit |
7bb4b2 |
FORCE)
|
|
Packit |
7bb4b2 |
ENDIF(NOT CMAKE_BUILD_TYPE)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
IF(CMAKE_BUILD_TYPE AND CMAKE_BUILD_TYPE STREQUAL "DEBUG")
|
|
Packit |
7bb4b2 |
MESSAGE("Build type is set do DEBUG! (Used flags: \"${CMAKE_C_FLAGS_DEBUG}\")")
|
|
Packit |
7bb4b2 |
ENDIF()
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
option(BUILD_LIBCREATEREPO_C_SHARED "Build libcreaterepo_c as a shared library" ON)
|
|
Packit |
7bb4b2 |
if(NOT BUILD_LIBCREATEREPO_C_SHARED)
|
|
Packit |
7bb4b2 |
set(CMAKE_POSITION_INDEPENDENT_CODE 1)
|
|
Packit |
7bb4b2 |
endif()
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
option(CREATEREPO_C_INSTALL_DEVELOPMENT "Install createrepo_c development files." ON)
|
|
Packit |
7bb4b2 |
option(CREATEREPO_C_INSTALL_MANPAGES "Install createrepo_c man-pages." ON)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Add path with own cmake modules
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR})
|
|
Packit |
7bb4b2 |
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
SET(G_LOG_DOMAIN "C_CREATEREPOLIB")
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Find necessary libraries
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
find_package(BZip2 REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(CURL REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(GLIB2 REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(GTHREAD2 REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(Libmagic REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(LibXml2 REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(LZMA REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(OpenSSL REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(Sqlite3 REQUIRED)
|
|
Packit |
7bb4b2 |
find_package(ZLIB REQUIRED)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Add include dirs
|
|
Packit |
7bb4b2 |
|
|
Packit Service |
28c109 |
include_directories(${BZIP2_INCLUDE_DIRS})
|
|
Packit Service |
28c109 |
include_directories(${CURL_INCLUDE_DIRS})
|
|
Packit |
7bb4b2 |
include_directories(${GLIB2_INCLUDE_DIRS})
|
|
Packit |
7bb4b2 |
include_directories(${LIBXML2_INCLUDE_DIR})
|
|
Packit |
7bb4b2 |
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
Packit Service |
28c109 |
include_directories(${ZLIB_INCLUDE_DIR})
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
IF (RPM_PATH)
|
|
Packit |
7bb4b2 |
SET (RPM_PATH "/home/tmlcoch/git/rpm")
|
|
Packit |
7bb4b2 |
include_directories("${RPM_PATH}/include/")
|
|
Packit |
7bb4b2 |
SET(RPMDB_LIBRARY "${RPM_PATH}/rpmio/.libs/librpmio.so"
|
|
Packit |
7bb4b2 |
"${RPM_PATH}/lib/.libs/librpm.so")
|
|
Packit |
7bb4b2 |
message("Using custom RPM: ${RPMDB_LIBRARY}")
|
|
Packit |
7bb4b2 |
ELSE (RPM_PATH)
|
|
Packit |
7bb4b2 |
# rpm:
|
|
Packit |
7bb4b2 |
FIND_LIBRARY (RPMDB_LIBRARY NAMES rpmdb)
|
|
Packit |
7bb4b2 |
IF (NOT RPMDB_LIBRARY)
|
|
Packit |
7bb4b2 |
FIND_LIBRARY (RPMDB_LIBRARY NAMES rpm)
|
|
Packit |
7bb4b2 |
IF (NOT RPMDB_LIBRARY)
|
|
Packit |
7bb4b2 |
MESSAGE(FATAL_ERROR "No Rpm library installed")
|
|
Packit |
7bb4b2 |
ENDIF (NOT RPMDB_LIBRARY)
|
|
Packit |
7bb4b2 |
ENDIF (NOT RPMDB_LIBRARY)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# rpmio:
|
|
Packit |
7bb4b2 |
FIND_LIBRARY (RPMIO_LIBRARY NAMES rpmio)
|
|
Packit |
7bb4b2 |
IF (RPMIO_LIBRARY)
|
|
Packit |
7bb4b2 |
SET(RPMDB_LIBRARY ${RPMIO_LIBRARY} ${RPMDB_LIBRARY})
|
|
Packit |
7bb4b2 |
ELSE (RPMIO_LIBRARY)
|
|
Packit |
7bb4b2 |
MESSAGE(FATAL_ERROR "No Rpmio library installed")
|
|
Packit |
7bb4b2 |
ENDIF (RPMIO_LIBRARY)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
message("Using system RPM: ${RPMDB_LIBRARY}")
|
|
Packit |
7bb4b2 |
ENDIF (RPM_PATH)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# SuSE/Mageia/Mandriva legacy weak deps support
|
|
Packit |
7bb4b2 |
OPTION (ENABLE_LEGACY_WEAKDEPS "Enable legacy SUSE/Mageia/Mandriva weakdeps support?" ON)
|
|
Packit |
7bb4b2 |
IF (ENABLE_LEGACY_WEAKDEPS)
|
|
Packit |
7bb4b2 |
ADD_DEFINITIONS("-DENABLE_LEGACY_WEAKDEPS=1")
|
|
Packit |
7bb4b2 |
ENDIF (ENABLE_LEGACY_WEAKDEPS)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# drpm
|
|
Packit |
7bb4b2 |
OPTION (ENABLE_DRPM "Enable delta RPM support?" ON)
|
|
Packit |
7bb4b2 |
IF (ENABLE_DRPM)
|
|
Packit |
7bb4b2 |
pkg_check_modules(DRPM REQUIRED drpm>=0.4.0)
|
|
Packit |
7bb4b2 |
include_directories (${DRPM_INCLUDE_DIRS})
|
|
Packit |
7bb4b2 |
ADD_DEFINITIONS("-DCR_DELTA_RPM_SUPPORT")
|
|
Packit |
7bb4b2 |
ENDIF (ENABLE_DRPM)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# option to enable/disable python support
|
|
Packit |
7bb4b2 |
OPTION (ENABLE_PYTHON "Enable python support?" ON)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
OPTION (WITH_ZCHUNK "Build with zchunk support" ON)
|
|
Packit |
7bb4b2 |
IF (WITH_ZCHUNK)
|
|
Packit |
7bb4b2 |
pkg_check_modules(ZCK REQUIRED zck)
|
|
Packit |
7bb4b2 |
include_directories(${ZCK_INCLUDE_DIRS})
|
|
Packit |
7bb4b2 |
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_ZCHUNK")
|
|
Packit |
7bb4b2 |
SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DWITH_ZCHUNK")
|
|
Packit |
7bb4b2 |
ENDIF (WITH_ZCHUNK)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
OPTION (WITH_LIBMODULEMD "Build with libmodulemd support" ON)
|
|
Packit |
7bb4b2 |
IF (WITH_LIBMODULEMD)
|
|
Packit |
7bb4b2 |
find_package(LIBMODULEMD REQUIRED)
|
|
Packit |
7bb4b2 |
include_directories(${LIBMODULEMD_INCLUDE_DIRS})
|
|
Packit |
7bb4b2 |
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_LIBMODULEMD")
|
|
Packit |
7bb4b2 |
SET (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DWITH_LIBMODULEMD")
|
|
Packit |
7bb4b2 |
ENDIF (WITH_LIBMODULEMD)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Threaded XZ Compression
|
|
Packit |
7bb4b2 |
# Note: This option is disabled by default, because Createrepo_c
|
|
Packit |
7bb4b2 |
# parallelize a lot of tasks (including compression) by default, this
|
|
Packit |
7bb4b2 |
# only adds extra threads on XZ library level which causes thread bloat
|
|
Packit |
7bb4b2 |
# and for most usecases doesn't bring any performance boost.
|
|
Packit |
7bb4b2 |
# On regular hardware (e.g. less-or-equal 4 cores) this option may even
|
|
Packit |
7bb4b2 |
# cause degradation of performance.
|
|
Packit |
7bb4b2 |
OPTION(ENABLE_THREADED_XZ_ENCODER "Enable threaded XZ encoder?" OFF)
|
|
Packit |
7bb4b2 |
IF (ENABLE_THREADED_XZ_ENCODER)
|
|
Packit |
7bb4b2 |
ADD_DEFINITIONS("-DENABLE_THREADED_XZ_ENCODER=1")
|
|
Packit |
7bb4b2 |
ENDIF (ENABLE_THREADED_XZ_ENCODER)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Get package version
|
|
Packit |
7bb4b2 |
INCLUDE (${CMAKE_SOURCE_DIR}/VERSION.cmake)
|
|
Packit |
7bb4b2 |
SET (VERSION "${CR_MAJOR}.${CR_MINOR}.${CR_PATCH}")
|
|
Packit |
7bb4b2 |
message("Package version: ${VERSION}")
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Default python version
|
|
Packit |
7bb4b2 |
if (NOT PYTHON_DESIRED)
|
|
Packit |
7bb4b2 |
set (PYTHON_DESIRED "3")
|
|
Packit |
7bb4b2 |
endif()
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Other files
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
OPTION(ENABLE_BASHCOMP "Install Bash autocompletions?" ON)
|
|
Packit |
7bb4b2 |
IF (ENABLE_BASHCOMP)
|
|
Packit |
7bb4b2 |
pkg_check_modules(BASHCOMP bash-completion)
|
|
Packit |
7bb4b2 |
IF (BASHCOMP_FOUND)
|
|
Packit |
7bb4b2 |
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=completionsdir bash-completion OUTPUT_VARIABLE BASHCOMP_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
Packit |
7bb4b2 |
message("Bash completion directory: ${BASHCOMP_DIR}")
|
|
Packit |
7bb4b2 |
INSTALL(FILES createrepo_c.bash DESTINATION ${BASHCOMP_DIR} RENAME createrepo_c)
|
|
Packit |
7bb4b2 |
INSTALL(CODE "
|
|
Packit |
7bb4b2 |
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink createrepo_c \$ENV{DESTDIR}${BASHCOMP_DIR}/mergerepo_c)
|
|
Packit |
7bb4b2 |
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink createrepo_c \$ENV{DESTDIR}${BASHCOMP_DIR}/modifyrepo_c)
|
|
Packit |
7bb4b2 |
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink createrepo_c \$ENV{DESTDIR}${BASHCOMP_DIR}/sqliterepo_c)
|
|
Packit |
7bb4b2 |
")
|
|
Packit |
7bb4b2 |
ELSEIF (BASHCOMP_FOUND)
|
|
Packit |
7bb4b2 |
INSTALL(FILES createrepo_c.bash DESTINATION "/etc/bash_completion.d")
|
|
Packit |
7bb4b2 |
message("Bash completion directory: /etc/bash_completion.d")
|
|
Packit |
7bb4b2 |
ENDIF (BASHCOMP_FOUND)
|
|
Packit |
7bb4b2 |
ENDIF (ENABLE_BASHCOMP)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Gen manpage
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
#message("Gen manpage")
|
|
Packit |
7bb4b2 |
#execute_process(COMMAND bash gen_manpage.sh src/cmd_parser.c ../doc/ WORKING_DIRECTORY utils/)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Add custom target for tests
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
ADD_CUSTOM_TARGET(tests)
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
# Subdirs
|
|
Packit |
7bb4b2 |
|
|
Packit |
7bb4b2 |
ADD_SUBDIRECTORY (src)
|
|
Packit |
7bb4b2 |
ADD_SUBDIRECTORY (doc)
|
|
Packit |
7bb4b2 |
ENABLE_TESTING()
|
|
Packit |
7bb4b2 |
ADD_SUBDIRECTORY (tests EXCLUDE_FROM_ALL)
|
|
Packit |
7bb4b2 |
|