Blame CMakeLists.txt

Packit Service 569379
cmake_minimum_required(VERSION 2.6)
Packit Service 569379
Packit Service 569379
# Inspired and referenced from https://blog.kitware.com/cmake-and-the-default-build-type
Packit Service 569379
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
Packit Service 569379
	message(STATUS "Setting build type to 'Release' as none was specified.")
Packit Service 569379
	set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
Packit Service 569379
	set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
Packit Service 569379
		"MinSizeRel" "RelWithDebInfo")
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
project("openscap")
Packit Service 569379
set(OPENSCAP_VERSION_MAJOR "1")
Packit Service 569379
set(OPENSCAP_VERSION_MINOR "3")
Packit Service 569379
set(OPENSCAP_VERSION_PATCH "3")
Packit Service 569379
Packit Service 569379
if(OPENSCAP_VERSION_SUFFIX)
Packit Service 569379
	set(OPENSCAP_VERSION "${OPENSCAP_VERSION_MAJOR}.${OPENSCAP_VERSION_MINOR}.${OPENSCAP_VERSION_PATCH}_${OPENSCAP_VERSION_SUFFIX}")
Packit Service 569379
else()
Packit Service 569379
	set(OPENSCAP_VERSION "${OPENSCAP_VERSION_MAJOR}.${OPENSCAP_VERSION_MINOR}.${OPENSCAP_VERSION_PATCH}")
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# libtool versioning
Packit Service 569379
# See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details
Packit Service 569379
Packit Service 569379
## increment if the interface has additions, changes, removals.
Packit Service 569379
set(LT_CURRENT 27)
Packit Service 569379
Packit Service 569379
## increment any time the source changes; set 0 to if you increment CURRENT
Packit Service 569379
set(LT_REVISION 0)
Packit Service 569379
Packit Service 569379
## increment if any interfaces have been added; set to 0
Packit Service 569379
## if any interfaces have been changed or removed. removal has
Packit Service 569379
## precedence over adding, so set to 0 if both happened.
Packit Service 569379
set(LT_AGE 2)
Packit Service 569379
Packit Service 569379
math(EXPR LT_CURRENT_MINUS_AGE "${LT_CURRENT} - ${LT_AGE}")
Packit Service 569379
Packit Service 569379
set(SONAME ${LT_CURRENT_MINUS_AGE}.${LT_AGE}.${LT_REVISION})
Packit Service 569379
set(SOVERSION ${LT_CURRENT_MINUS_AGE})
Packit Service 569379
Packit Service 569379
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
Packit Service 569379
Packit Service 569379
message(STATUS "OpenSCAP ${OPENSCAP_VERSION}")
Packit Service 569379
message(STATUS "(see ${CMAKE_SOURCE_DIR}/docs/developer/developer.adoc for build instructions)")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
# Strictly speaking in-source will work but will be very messy, let's
Packit Service 569379
# discourage our users from using them
Packit Service 569379
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
Packit Service 569379
	message(FATAL_ERROR "In-source builds are not supported! Please use out of source builds:\n"
Packit Service 569379
		"$ cd openscap\n"
Packit Service 569379
		"$ rm CMakeCache.txt\n"
Packit Service 569379
		"$ cd build\n"
Packit Service 569379
		"$ cmake ../\n"
Packit Service 569379
		"$ make -j4"
Packit Service 569379
		)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# In Microsoft Visual Studio, store built binaries to a single directory.
Packit Service 569379
# We need to build all the binaries in a single directory on Windows, because
Packit Service 569379
# vcpkg tool fails to fetch dependent DLLs (libxml, libcurl, etc.) if
Packit Service 569379
# oscap.exe is build to a different directory than openscap.dll.
Packit Service 569379
# See the discussion in https://github.com/Microsoft/vcpkg/issues/1002
Packit Service 569379
if(MSVC)
Packit Service 569379
	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Packit Service 569379
	set(CMAKE_PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Packit Service 569379
	set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Packit Service 569379
	set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# ---------- INCLUDES CMAKE MODULES
Packit Service 569379
Packit Service 569379
include(GNUInstallDirs)
Packit Service 569379
include(FindPkgConfig)
Packit Service 569379
include(CheckLibraryExists)
Packit Service 569379
include(CheckFunctionExists)
Packit Service 569379
include(CheckIncludeFile)
Packit Service 569379
include(CheckCSourceCompiles)
Packit Service 569379
include(CMakeDependentOption)
Packit Service 569379
Packit Service 569379
# ---------- DEPENDENCIES
Packit Service 569379
Packit Service 569379
find_package(ACL)
Packit Service 569379
if(ACL_FOUND)
Packit Service 569379
	check_library_exists("${ACL_LIBRARY}" acl_extended_file "" HAVE_ACL_EXTENDED_FILE)
Packit Service 569379
	check_include_file(acl/libacl.h HAVE_ACL_LIBACL_H)
Packit Service 569379
	check_include_file(sys/acl.h HAVE_SYS_ACL_H)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
find_package(AptPkg)
Packit Service 569379
Packit Service 569379
find_package(Blkid)
Packit Service 569379
if(BLKID_FOUND)
Packit Service 569379
	check_library_exists("${BLKID_LIBRARY}" blkid_get_tag_value "" HAVE_BLKID_GET_TAG_VALUE)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
find_package(Cap)
Packit Service 569379
if(CAP_FOUND)
Packit Service 569379
	check_library_exists("${CAP_LIBRARIES}" cap_get_pid "" HAVE_CAP_GET_PID)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
find_package(CURL)
Packit Service 569379
find_package(DBus)
Packit Service 569379
find_package(Doxygen)
Packit Service 569379
find_package(GConf)
Packit Service 569379
find_package(Ldap)
Packit Service 569379
find_package(OpenDbx)
Packit Service 569379
find_package(PCRE REQUIRED)
Packit Service 569379
find_package(PerlLibs)
Packit Service 569379
find_package(Popt)
Packit Service 569379
Packit Service 569379
find_package(Procps)
Packit Service 569379
if(PROCPS_FOUND)
Packit Service 569379
	check_library_exists("${PROCPS_LIBRARY}" dev_to_tty "" HAVE_DEV_TO_TTY)
Packit Service 569379
	check_include_file(proc/devname.h HAVE_PROC_DEVNAME_H)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# According to CMake documentation:
Packit Service 569379
# https://cmake.org/cmake/help/latest/module/FindPythonInterp.html
Packit Service 569379
# If calling both find_package(PythonInterp) and find_package(PythonLibs),
Packit Service 569379
# call find_package(PythonInterp) first to get the currently active Python
Packit Service 569379
# version by default with a consistent version of PYTHON_LIBRARIES.
Packit Service 569379
find_package(PythonInterp 3)
Packit Service 569379
find_package(PythonLibs 3)
Packit Service 569379
Packit Service 569379
set(PREFERRED_PYTHON_PATH "${PYTHON_EXECUTABLE}")
Packit Service 569379
set(PYTHON3_PATH "${PYTHON_EXECUTABLE}")
Packit Service 569379
Packit Service 569379
find_package(RPM)
Packit Service 569379
if(RPM_FOUND)
Packit Service 569379
	check_library_exists("${RPM_LIBRARY}" rpmReadConfigFiles "" HAVE_RPMREADCONFIGFILES)
Packit Service 569379
	check_library_exists("${RPM_LIBRARY}" headerFormat "" HAVE_HEADERFORMAT)
Packit Service 569379
	check_library_exists("${RPMIO_LIBRARY}" rpmFreeCrypto "" HAVE_RPMFREECRYPTO)
Packit Service 569379
	check_library_exists("${RPM_LIBRARY}" rpmFreeFilesystems "" HAVE_RPMFREEFILESYSTEMS)
Packit Service 569379
	check_library_exists("${RPM_LIBRARY}" rpmVerifyFile "" HAVE_RPMVERIFYFILE)
Packit Service 569379
	set(HAVE_RPMVERCMP 1)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
find_package(SELinux)
Packit Service 569379
find_package(SWIG)
Packit Service 569379
find_package(LibXml2 REQUIRED)
Packit Service 569379
find_package(LibXslt REQUIRED)
Packit Service 569379
find_package(BZip2)
Packit Service 569379
Packit Service 569379
# PThread
Packit Service 569379
if (WIN32)
Packit Service 569379
	find_package(ZLIB REQUIRED)
Packit Service 569379
	find_package(pthread CONFIG REQUIRED)
Packit Service 569379
	set(CMAKE_THREAD_LIBS_INIT ${PThreads4W_LIBRARY})
Packit Service 569379
else()
Packit Service 569379
	find_package(Threads REQUIRED)
Packit Service 569379
endif()
Packit Service 569379
set(CMAKE_THREAD_PREFER_PTHREAD)
Packit Service 569379
set(THREADS_PREFER_PTHREAD_FLAG)
Packit Service 569379
set(THREADS_USE_PTHREADS_WIN32 TRUE)
Packit Service 569379
check_library_exists(pthread pthread_timedjoin_np "" HAVE_PTHREAD_TIMEDJOIN_NP)
Packit Service 569379
check_library_exists(pthread pthread_setname_np "" HAVE_PTHREAD_SETNAME_NP)
Packit Service 569379
check_library_exists(pthread pthread_getname_np "" HAVE_PTHREAD_GETNAME_NP)
Packit Service 569379
Packit Service 569379
# WITH_CRYPTO
Packit Service 569379
set(WITH_CRYPTO "gcrypt" CACHE STRING "gcrypt|nss3")
Packit Service 569379
if(NOT (${WITH_CRYPTO} EQUAL "nss3"))
Packit Service 569379
	# gcrypt
Packit Service 569379
	find_package(GCrypt)
Packit Service 569379
else()
Packit Service 569379
	# nss3
Packit Service 569379
	find_package(NSS)
Packit Service 569379
endif()
Packit Service 569379
if(GCRYPT_FOUND OR NSS_FOUND)
Packit Service 569379
	set(CRYPTO_FOUND TRUE)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
find_package(Libyaml)
Packit Service 569379
if(EXISTS ${CMAKE_SOURCE_DIR}/yaml-filter/CMakeLists.txt)
Packit Service 569379
	message(STATUS "yaml-filter was found")
Packit Service 569379
	set(YAML_FILTER_FOUND TRUE)
Packit Service 569379
else()
Packit Service 569379
	message(STATUS "yaml-filter was not found")
Packit Service 569379
	set(YAML_FILTER_FOUND FALSE)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
check_library_exists(rt clock_gettime "" HAVE_CLOCK_GETTIME)
Packit Service 569379
check_function_exists(posix_memalign HAVE_POSIX_MEMALIGN)
Packit Service 569379
check_function_exists(memalign HAVE_MEMALIGN)
Packit Service 569379
check_function_exists(fts_open HAVE_FTS_OPEN)
Packit Service 569379
check_function_exists(strsep HAVE_STRSEP)
Packit Service 569379
check_function_exists(strptime HAVE_STRPTIME)
Packit Service 569379
Packit Service 569379
check_include_file(syslog.h HAVE_SYSLOG_H)
Packit Service 569379
check_include_file(stdio_ext.h HAVE_STDIO_EXT_H)
Packit Service 569379
check_include_file(shadow.h HAVE_SHADOW_H)
Packit Service 569379
check_include_file(sys/systeminfo.h HAVE_SYS_SYSTEMINFO_H)
Packit Service 569379
check_include_file(getopt.h HAVE_GETOPT_H)
Packit Service 569379
check_include_file(sys/mman.h HAVE_MMAN_H)
Packit Service 569379
check_include_file(sys/uio.h HAVE_UIO_H)
Packit Service 569379
check_include_file(sys/xattr.h HAVE_SYS_XATTR_H)
Packit Service 569379
check_include_file(attr/xattr.h HAVE_ATTR_XATTR_H)
Packit Service 569379
Packit Service 569379
# HAVE_ATOMIC_BUILTINS
Packit Service 569379
check_c_source_compiles("#include <stdint.h>\nint main() {uint16_t foovar=0; uint16_t old=1; uint16_t new=2;__sync_bool_compare_and_swap(&foovar,old,new); return __sync_fetch_and_add(&foovar, 1); __sync_fetch_and_add(&foovar, 1);}" HAVE_ATOMIC_BUILTINS)
Packit Service 569379
if(NOT HAVE_ATOMIC_BUILTINS)
Packit Service 569379
	message(WARNING "!!! Compiler does not support atomic builtins. Atomic operation will be emulated using mutex-based locking. !!!")
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
mark_as_advanced(ENV_PRESENT VALGRIND_PRESENT)
Packit Service 569379
find_program(ENV_PRESENT env)
Packit Service 569379
find_program(VALGRIND_PRESENT valgrind)
Packit Service 569379
find_program(ASCIIDOC_EXECUTABLE asciidoc)
Packit Service 569379
find_program(SED_EXECUTABLE sed)
Packit Service 569379
find_program(GIT_EXECUTABLE git)
Packit Service 569379
Packit Service 569379
# ---------- CORE FEATURE SWITCHES
Packit Service 569379
if(WIN32 OR APPLE)
Packit Service 569379
	option(ENABLE_SCE "enables Script Check Engine - an alternative checking engine that lets you use executables instead of OVAL for checks" OFF)
Packit Service 569379
else()
Packit Service 569379
	option(ENABLE_SCE "enables Script Check Engine - an alternative checking engine that lets you use executables instead of OVAL for checks" ON)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# ---------- OVAL FEATURE SWITCHES
Packit Service 569379
Packit Service 569379
option(ENABLE_PROBES "build OVAL probes - each probe implements an OVAL test" TRUE)
Packit Service 569379
set(SEAP_MSGID_BITS 32 CACHE STRING "Size of SEAP_msgid_t in bits [32|64]")
Packit Service 569379
cmake_dependent_option(ENABLE_PROBES_INDEPENDENT "build OVAL probes for independent (cross platform) OVAL tests" ON "ENABLE_PROBES" OFF)
Packit Service 569379
# On some platforms (Windows..) UNIX ends up being empty instead of "false"
Packit Service 569379
set(IS_UNIX FALSE)
Packit Service 569379
if (UNIX)
Packit Service 569379
    set(IS_UNIX TRUE)
Packit Service 569379
endif()
Packit Service 569379
cmake_dependent_option(ENABLE_PROBES_UNIX "build OVAL probes for the UNIX OVAL tests" ${IS_UNIX} "ENABLE_PROBES" OFF)
Packit Service 569379
string(COMPARE EQUAL ${CMAKE_SYSTEM_NAME} "Linux" IS_LINUX)
Packit Service 569379
cmake_dependent_option(ENABLE_PROBES_LINUX "build OVAL probes for the Linux OVAL tests" ${IS_LINUX} "ENABLE_PROBES" OFF)
Packit Service 569379
string(COMPARE EQUAL ${CMAKE_SYSTEM_NAME} "Solaris" IS_SOLARIS)
Packit Service 569379
cmake_dependent_option(ENABLE_PROBES_SOLARIS "build OVAL probes for the Solaris OVAL tests" ${IS_SOLARIS} "ENABLE_PROBES" OFF)
Packit Service 569379
set(IS_WIN32 FALSE)
Packit Service 569379
if (WIN32)
Packit Service 569379
    set(IS_WIN32 TRUE)
Packit Service 569379
endif()
Packit Service 569379
cmake_dependent_option(ENABLE_PROBES_WINDOWS "build OVAL probes for the Windows OVAL tests" ${IS_WIN32} "ENABLE_PROBES" OFF)
Packit Service 569379
Packit Service 569379
# INDEPENDENT PROBES
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_ENVIRONMENTVARIABLE "Independent environmentvariable probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_ENVIRONMENTVARIABLE58 "Independent environmentvariable58 probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_FAMILY "Independent family probe" ON "ENABLE_PROBES_INDEPENDENT" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_FILEHASH "Independent filehash probe" ON "ENABLE_PROBES_INDEPENDENT; CRYPTO_FOUND; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_FILEHASH58 "Independent filehash58 probe" ON "ENABLE_PROBES_INDEPENDENT; CRYPTO_FOUND; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_SQL "Independent sql probe" ON "ENABLE_PROBES_INDEPENDENT; OPENDBX_FOUND; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_SQL57 "Independent sql57 probe" ON "ENABLE_PROBES_INDEPENDENT; OPENDBX_FOUND; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_SYSTEM_INFO "Independent system info probe" ON "ENABLE_PROBES_INDEPENDENT" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT "Independent textfilecontent probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT54 "Independent textfilecontent54 probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_VARIABLE "Independent variable probe" ON "ENABLE_PROBES_INDEPENDENT" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_XMLFILECONTENT "Independent xmlfilecontent probe" ON "ENABLE_PROBES_INDEPENDENT; NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT "Independent yamlfilecontent probe" ON "ENABLE_PROBES_INDEPENDENT; LIBYAML_FOUND; YAML_FILTER_FOUND; NOT WIN32" OFF)
Packit Service 569379
Packit Service 569379
# UNIX PROBES
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_DNSCACHE "Unix dnscache probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_FILE "Unix file probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_FILEEXTENDEDATTRIBUTE "Unix fileextendedattribute probe" ON "ENABLE_PROBES_UNIX; HAVE_SYS_XATTR_H OR HAVE_ATTR_XATTR_H" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_GCONF "Unix gconf probe" ON "ENABLE_PROBES_UNIX; GCONF_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_INTERFACE "Unix interface probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_PASSWORD "Unix password probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_PROCESS "Unix process probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_PROCESS58 "Unix process58 probe" ON "ENABLE_PROBES_UNIX; CAP_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_ROUTINGTABLE "Unix routingtable probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_RUNLEVEL "Unix runlevel probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_SHADOW "Unix shadow probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_SYMLINK "Unix symlink probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_SYSCTL "Unix sysctl probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_UNAME "Unix uname probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_UNIX_XINETD "Unix xinetd probe" ON "ENABLE_PROBES_UNIX" OFF)
Packit Service 569379
Packit Service 569379
# LINUX PROBES
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_DPKGINFO "Linux dpkginfo probe" ON "ENABLE_PROBES_LINUX; APTPKG_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_IFLISTENERS "Linux iflisteners probe" ON "ENABLE_PROBES_LINUX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_INETLISTENINGSERVERS "Linux inetlisteningservers probe" ON "ENABLE_PROBES_LINUX" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_PARTITION "Linux partition probe" ON "ENABLE_PROBES_LINUX; BLKID_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_RPMINFO "Linux rpminfo probe" ON "ENABLE_PROBES_LINUX; RPM_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_RPMVERIFY "Linux rpmverify probe" ON "ENABLE_PROBES_LINUX; RPM_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_RPMVERIFYFILE "Linux rpmverifyfile probe" ON "ENABLE_PROBES_LINUX; RPM_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_RPMVERIFYPACKAGE "Linux rpmverifypackage probe" ON "ENABLE_PROBES_LINUX; RPM_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_SELINUXBOOLEAN "Linux selinuxboolean probe" ON "ENABLE_PROBES_LINUX; SELINUX_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_SELINUXSECURITYCONTEXT "Linux selinuxsecuritycontext probe" ON "ENABLE_PROBES_LINUX; SELINUX_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_SYSTEMDUNITDEPENDENCY "Linux systemdunitdependency probe" ON "ENABLE_PROBES_LINUX; DBUS_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_LINUX_SYSTEMDUNITPROPERTY "Linux systemdunitproperty probe" ON "ENABLE_PROBES_LINUX; DBUS_FOUND" OFF)
Packit Service 569379
Packit Service 569379
# SOLARIS PROBES
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_SOLARIS_ISAINFO "Solaris isainfo probe" ON "ENABLE_PROBES_SOLARIS" OFF)
Packit Service 569379
Packit Service 569379
# WINDOWS PROBES
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_WINDOWS_ACCESSTOKEN "Windows accesstoken probe" ON "ENABLE_PROBES_WINDOWS" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_WINDOWS_REGISTRY "Windows registry probe" ON "ENABLE_PROBES_WINDOWS" OFF)
Packit Service 569379
cmake_dependent_option(OPENSCAP_PROBE_WINDOWS_WMI57 "Windows wmi57 probe" ON "ENABLE_PROBES_WINDOWS" OFF)
Packit Service 569379
Packit Service 569379
Packit Service 569379
# ---------- EXECUTABLES / UTILITIES SWITCHES
Packit Service 569379
Packit Service 569379
option(ENABLE_OSCAP_UTIL "build the oscap utility, oscap is the core utility for evaluation and processing of SCAP data" TRUE)
Packit Service 569379
Packit Service 569379
set(OSCAP_DOCKER_PYTHON ${PYTHON_EXECUTABLE} CACHE STRING "path to the Python interpreter for oscap-docker")
Packit Service 569379
cmake_dependent_option(ENABLE_OSCAP_UTIL_DOCKER "enables the oscap-docker utility, this lets you scan containers and container images" ON "NOT WIN32" OFF)
Packit Service 569379
if(ENABLE_OSCAP_UTIL_DOCKER AND NOT BZIP2_FOUND)
Packit Service 569379
	set(ENABLE_OSCAP_UTIL_DOCKER FALSE)
Packit Service 569379
	message(SEND_ERROR "oscap-docker requires bzip2! Either disable oscap-docker or install bzip2")
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
cmake_dependent_option(ENABLE_OSCAP_UTIL_AS_RPM "enable the scap-as-rpm utility, this lets you package SCAP data as RPMs" ON "NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(ENABLE_OSCAP_UTIL_SSH "enables the oscap-ssh utility, this lets you scan remote machines over ssh" ON "NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(ENABLE_OSCAP_UTIL_VM "enables the oscap-vm utility, this lets you scan VMs and VM storage images" ON "NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(ENABLE_OSCAP_UTIL_PODMAN "enables the oscap-podman utility, this lets you scan Podman containers and container images" ON "NOT WIN32" OFF)
Packit Service 569379
cmake_dependent_option(ENABLE_OSCAP_UTIL_CHROOT "enables the oscap-chroot utility, this lets you scan entire chroots using offline scanning" ON "NOT WIN32" OFF)
Packit Service 569379
option(ENABLE_OSCAP_UTIL_AUTOTAILOR "enables the autotailor utility that is able to perform command-line tailoring" TRUE)
Packit Service 569379
Packit Service 569379
# ---------- TEST-SUITE SWITCHES
Packit Service 569379
Packit Service 569379
# Tests will be turned off on Windows, because the test suite uses bash
Packit Service 569379
# and other Linux-specific tools.
Packit Service 569379
if(WIN32)
Packit Service 569379
	# TODO: I hate that the doc string is duplicated but cmake doesn't support evaluating expressions :-/
Packit Service 569379
	option(ENABLE_TESTS "enables the test suite, use `ctest` to run it" FALSE)
Packit Service 569379
else()
Packit Service 569379
	option(ENABLE_TESTS "enables the test suite, use `ctest` to run it" TRUE)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
option(ENABLE_VALGRIND "enables Valgrind memory testing in the test-suite" FALSE)
Packit Service 569379
Packit Service 569379
option(ENABLE_MITRE "enables MITRE tests -- requires specific environment support -- see developer documentation for more details" FALSE)
Packit Service 569379
Packit Service 569379
# ---------- LANGUAGE BINDINGS
Packit Service 569379
cmake_dependent_option(ENABLE_PYTHON3 "if enabled, the python3 swig bindings will be built" ON "PYTHONINTERP_FOUND;SWIG_FOUND;PYTHONLIBS_FOUND" OFF)
Packit Service 569379
cmake_dependent_option(ENABLE_PERL "if enabled, the perl swig bindings will be built" ON "PERLLIBS_FOUND;SWIG_FOUND" OFF)
Packit Service 569379
Packit Service 569379
# ---------- NO IDEA WHAT THIS IS FOR
Packit Service 569379
set(WANT_BASE64 TRUE CACHE BOOL "wants builtin Base64")
Packit Service 569379
set(WANT_XBASE64 FALSE CACHE BOOL "wants builtin XBase64")
Packit Service 569379
Packit Service 569379
# ---------- Documentation
Packit Service 569379
Packit Service 569379
# Due to the time it takes to build documentation on every change,
Packit Service 569379
# we choose to disable documentation by default. Only when ENABLE_DOCS==TRUE
Packit Service 569379
# will docs be built and added to the `make install` target.
Packit Service 569379
Packit Service 569379
option(ENABLE_DOCS "enables documentation building -- suggests doxygen, asciidoc" FALSE)
Packit Service 569379
Packit Service 569379
# ---------- STATUS MESSAGES
Packit Service 569379
Packit Service 569379
message(STATUS " ")
Packit Service 569379
message(STATUS "CMake:")
Packit Service 569379
message(STATUS "generator: ${CMAKE_GENERATOR}")
Packit Service 569379
message(STATUS "source directory: ${CMAKE_SOURCE_DIR}")
Packit Service 569379
message(STATUS "build directory: ${CMAKE_BINARY_DIR}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "Core features:")
Packit Service 569379
message(STATUS "SCE: ${ENABLE_SCE}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "OVAL:")
Packit Service 569379
message(STATUS "base probe support: ${ENABLE_PROBES}")
Packit Service 569379
message(STATUS "SEAP msgid bit-size: ${SEAP_MSGID_BITS}")
Packit Service 569379
Packit Service 569379
message(STATUS "")
Packit Service 569379
message(STATUS "Independent probes: ${ENABLE_PROBES_INDEPENDENT}")
Packit Service 569379
message(STATUS "  Independent family probe: ${OPENSCAP_PROBE_INDEPENDENT_FAMILY}")
Packit Service 569379
message(STATUS "  Independent system info probe: ${OPENSCAP_PROBE_INDEPENDENT_SYSTEM_INFO}")
Packit Service 569379
message(STATUS "  Independent variable probe: ${OPENSCAP_PROBE_INDEPENDENT_VARIABLE}")
Packit Service 569379
Packit Service 569379
message(STATUS "")
Packit Service 569379
message(STATUS "Independent probes incompatible with WIN32 (WIN32 status: ${IS_WIN32})")
Packit Service 569379
message(STATUS "  Independent environmentvariable probe: ${OPENSCAP_PROBE_INDEPENDENT_ENVIRONMENTVARIABLE}") 
Packit Service 569379
message(STATUS "  Independent environmentvariable58 probe: ${OPENSCAP_PROBE_INDEPENDENT_ENVIRONMENTVARIABLE58}")
Packit Service 569379
message(STATUS "  Independent filehash probe: ${OPENSCAP_PROBE_INDEPENDENT_FILEHASH}")
Packit Service 569379
message(STATUS "  Independent filehash58 probe: ${OPENSCAP_PROBE_INDEPENDENT_FILEHASH58}")
Packit Service 569379
message(STATUS "  Independent sql probe (depends on opendbx): ${OPENSCAP_PROBE_INDEPENDENT_SQL}")
Packit Service 569379
message(STATUS "  Independent sql57 probe (depends on opendbx): ${OPENSCAP_PROBE_INDEPENDENT_SQL57}")
Packit Service 569379
message(STATUS "  Independent textfilecontent probe: ${OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT}")
Packit Service 569379
message(STATUS "  Independent textfilecontent54 probe: ${OPENSCAP_PROBE_INDEPENDENT_TEXTFILECONTENT54}")
Packit Service 569379
message(STATUS "  Independent xmlfilecontent probe: ${OPENSCAP_PROBE_INDEPENDENT_XMLFILECONTENT}")
Packit Service 569379
message(STATUS "  Independent yamlfilecontent probe (depends on libyaml, yaml-path): ${OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
Packit Service 569379
message(STATUS "Unix probes: ${ENABLE_PROBES_UNIX}")
Packit Service 569379
message(STATUS "  Unix dnscache probe: ${OPENSCAP_PROBE_UNIX_DNSCACHE}")
Packit Service 569379
message(STATUS "  Unix file probe: ${OPENSCAP_PROBE_UNIX_FILE}")
Packit Service 569379
message(STATUS "  Unix fileextendedattribute probe (depends on xattrh): ${OPENSCAP_PROBE_UNIX_FILEEXTENDEDATTRIBUTE}")
Packit Service 569379
message(STATUS "  Unix gconf probe (depends on gconf): ${OPENSCAP_PROBE_UNIX_GCONF}")
Packit Service 569379
message(STATUS "  Unix interface probe: ${OPENSCAP_PROBE_UNIX_INTERFACE}")
Packit Service 569379
message(STATUS "  Unix password probe: ${OPENSCAP_PROBE_UNIX_PASSWORD}")
Packit Service 569379
message(STATUS "  Unix process probe: ${OPENSCAP_PROBE_UNIX_PROCESS}")
Packit Service 569379
message(STATUS "  Unix process58 probe (depends on CAP): ${OPENSCAP_PROBE_UNIX_PROCESS58}")
Packit Service 569379
message(STATUS "  Unix routingtable probe: ${OPENSCAP_PROBE_UNIX_ROUTINGTABLE}")
Packit Service 569379
message(STATUS "  Unix runlevel probe: ${OPENSCAP_PROBE_UNIX_RUNLEVEL}")
Packit Service 569379
message(STATUS "  Unix shadow probe: ${OPENSCAP_PROBE_UNIX_SHADOW}")
Packit Service 569379
message(STATUS "  Unix symlink probe: ${OPENSCAP_PROBE_UNIX_SYMLINK}")
Packit Service 569379
message(STATUS "  Unix sysctl probe: ${OPENSCAP_PROBE_UNIX_SYSCTL}")
Packit Service 569379
message(STATUS "  Unix uname probe: ${OPENSCAP_PROBE_UNIX_UNAME}")
Packit Service 569379
message(STATUS "  Unix xinetd probe: ${OPENSCAP_PROBE_UNIX_XINETD}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "Linux probes: ${ENABLE_PROBES_LINUX}")
Packit Service 569379
message(STATUS "  Linux dpkginfo probe (depends on aptpkg): ${OPENSCAP_PROBE_LINUX_DPKGINFO}")
Packit Service 569379
message(STATUS "  Linux iflisteners probe: ${OPENSCAP_PROBE_LINUX_IFLISTENERS}")
Packit Service 569379
message(STATUS "  Linux inetlisteningservers probe: ${OPENSCAP_PROBE_LINUX_INETLISTENINGSERVERS}")
Packit Service 569379
message(STATUS "  Linux partition probe (depends on blkid): ${OPENSCAP_PROBE_LINUX_PARTITION}")
Packit Service 569379
message(STATUS "  Linux rpminfo probe (depends on rpm): ${OPENSCAP_PROBE_LINUX_RPMINFO}")
Packit Service 569379
message(STATUS "  Linux rpmverify probe (depends on rpm): ${OPENSCAP_PROBE_LINUX_RPMVERIFY}")
Packit Service 569379
message(STATUS "  Linux rpmverifyfile probe (depends on rpm): ${OPENSCAP_PROBE_LINUX_RPMVERIFYFILE}")
Packit Service 569379
message(STATUS "  Linux rpmverifypackage probe (depends on rpm): ${OPENSCAP_PROBE_LINUX_RPMVERIFYPACKAGE}")
Packit Service 569379
message(STATUS "  Linux selinuxboolean probe (depends on selinux): ${OPENSCAP_PROBE_LINUX_SELINUXBOOLEAN}")
Packit Service 569379
message(STATUS "  Linux selinuxsecuritycontext probe (depends on selinux): ${OPENSCAP_PROBE_LINUX_SELINUXSECURITYCONTEXT}")
Packit Service 569379
message(STATUS "  Linux systemdunitdependency probe (depends on dbus): ${OPENSCAP_PROBE_LINUX_SYSTEMDUNITDEPENDENCY}")
Packit Service 569379
message(STATUS "  Linux systemdunitproperty probe (depends on dbus): ${OPENSCAP_PROBE_LINUX_SYSTEMDUNITPROPERTY}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "Solaris probes: ${ENABLE_PROBES_SOLARIS}")
Packit Service 569379
message(STATUS "  Solaris isainfo probe: ${OPENSCAP_PROBE_SOLARIS_ISAINFO}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
Packit Service 569379
message(STATUS "Windows probes: ${ENABLE_PROBES_WINDOWS}")
Packit Service 569379
message(STATUS "  Windows accesstoken probe: ${OPENSCAP_PROBE_WINDOWS_ACCESSTOKEN}")
Packit Service 569379
message(STATUS "  Windows registry probe: ${OPENSCAP_PROBE_WINDOWS_REGISTRY}")
Packit Service 569379
message(STATUS "  Windows wmi57 probe: ${OPENSCAP_PROBE_WINDOWS_WMI57}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
Packit Service 569379
message(STATUS "Language bindings:")
Packit Service 569379
message(STATUS "python3 bindings: ${ENABLE_PYTHON3}")
Packit Service 569379
message(STATUS "perl bindings: ${ENABLE_PERL}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "Utilities:")
Packit Service 569379
message(STATUS "oscap: ${ENABLE_OSCAP_UTIL}")
Packit Service 569379
message(STATUS "oscap-docker: ${ENABLE_OSCAP_UTIL_DOCKER}")
Packit Service 569379
message(STATUS "scap-as-rpm: ${ENABLE_OSCAP_UTIL_AS_RPM}")
Packit Service 569379
message(STATUS "oscap-ssh: ${ENABLE_OSCAP_UTIL_SSH}")
Packit Service 569379
message(STATUS "oscap-vm: ${ENABLE_OSCAP_UTIL_VM}")
Packit Service 569379
message(STATUS "oscap-podman: ${ENABLE_OSCAP_UTIL_PODMAN}")
Packit Service 569379
message(STATUS "oscap-chroot: ${ENABLE_OSCAP_UTIL_CHROOT}")
Packit Service 569379
message(STATUS "autotailor: ${ENABLE_OSCAP_UTIL_AUTOTAILOR}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "Testing:")
Packit Service 569379
message(STATUS "tests: ${ENABLE_TESTS}")
Packit Service 569379
message(STATUS "valgrind: ${ENABLE_VALGRIND}")
Packit Service 569379
message(STATUS "MITRE: ${ENABLE_MITRE}")
Packit Service 569379
message(STATUS " ")
Packit Service 569379
Packit Service 569379
message(STATUS "Documentation:")
Packit Service 569379
message(STATUS "enabled: ${ENABLE_DOCS}")
Packit Service 569379
message(STATUS "doxygen: ${DOXYGEN_EXECUTABLE}")
Packit Service 569379
message(STATUS "asciidoc: ${ASCIIDOC_EXECUTABLE}")
Packit Service 569379
Packit Service 569379
# ---------- PATHS
Packit Service 569379
Packit Service 569379
if(WIN32)
Packit Service 569379
	# Windows installer does not allow full paths.
Packit Service 569379
	# The install path can be changed by user in Windows installer.
Packit Service 569379
	# We will use relative names - "schemas", "xsl" and "cpe"
Packit Service 569379
	# directories will be located in the same directory as oscap.exe.
Packit Service 569379
	set(OSCAP_DEFAULT_SCHEMA_PATH "schemas")
Packit Service 569379
	set(OSCAP_DEFAULT_XSLT_PATH "xsl")
Packit Service 569379
	set(OSCAP_DEFAULT_CPE_PATH "cpe")
Packit Service 569379
else()
Packit Service 569379
	set(OSCAP_DEFAULT_SCHEMA_PATH "${CMAKE_INSTALL_FULL_DATADIR}/openscap/schemas")
Packit Service 569379
	set(OSCAP_DEFAULT_XSLT_PATH "${CMAKE_INSTALL_FULL_DATADIR}/openscap/xsl")
Packit Service 569379
	set(OSCAP_DEFAULT_CPE_PATH "${CMAKE_INSTALL_FULL_DATADIR}/openscap/cpe")
Packit Service 569379
endif()
Packit Service 569379
set(OSCAP_TEMP_DIR "/tmp" CACHE STRING "use different temporary directory to execute sce scripts (default=/tmp)")
Packit Service 569379
Packit Service 569379
# ---------- RPATHS for linking
Packit Service 569379
Packit Service 569379
# see https://cmake.org/Wiki/CMake_RPATH_handling
Packit Service 569379
Packit Service 569379
# use, i.e. don't skip the full RPATH for the build tree
Packit Service 569379
set(CMAKE_SKIP_BUILD_RPATH FALSE)
Packit Service 569379
Packit Service 569379
# when building, don't use the install RPATH already
Packit Service 569379
# (but later on when installing)
Packit Service 569379
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
Packit Service 569379
Packit Service 569379
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
Packit Service 569379
Packit Service 569379
# add the automatically determined parts of the RPATH
Packit Service 569379
# which point to directories outside the build tree to the install RPATH
Packit Service 569379
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
Packit Service 569379
Packit Service 569379
# Turn on RPATH for OSX for policy warning
Packit Service 569379
set(CMAKE_MACOSX_RPATH ON)
Packit Service 569379
# ---------- CONFIGURATION
Packit Service 569379
Packit Service 569379
configure_file("config.h.in" "config.h")
Packit Service 569379
add_definitions(-DHAVE_CONFIG_H)
Packit Service 569379
if (MSVC)
Packit Service 569379
	# Disable some of Microsoft Visual Studio 2017 warnings
Packit Service 569379
	#
Packit Service 569379
	# Visual Studio recommends using some non-standard functions with _s suffix
Packit Service 569379
	# instead of standard functions, because they considered it more secure.
Packit Service 569379
	# However these functions are available only in Microsoft C Runtime.
Packit Service 569379
	# Therefore we disable this type of warnings.
Packit Service 569379
	# https://docs.microsoft.com/en-us/cpp/c-runtime-library/security-features-in-the-crt
Packit Service 569379
	add_definitions(-D_CRT_SECURE_NO_WARNINGS)
Packit Service 569379
	# Microsoft has renamed some POSIX functions in the CRT to conform with C99 rules for
Packit Service 569379
	# implementation-defined global function names. In most cases, a leading underscore was
Packit Service 569379
	# added to the POSIX function name to create a standard conformant name.
Packit Service 569379
	# If we use POSIX functions without leading underscore, a deprecation warning is shown.
Packit Service 569379
	# Therefore we disable this type of warnings.
Packit Service 569379
	# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4996
Packit Service 569379
	add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
Packit Service 569379
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -std=c99 -W -Wall -Wnonnull -Wshadow -Wformat -Wundef -Wno-unused-parameter -Wmissing-prototypes -Wno-unknown-pragmas -D_GNU_SOURCE -D_POSIX_C_SOURCE=200112L")
Packit Service 569379
endif()
Packit Service 569379
if(${CMAKE_SYSTEM_NAME} EQUAL "Solaris")
Packit Service 569379
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
Packit Service 569379
endif()
Packit Service 569379
if(WIN32)
Packit Service 569379
	# expose new WinAPI function appearing on Windows 7
Packit Service 569379
	# eg. inet_pton
Packit Service 569379
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_WIN32_WINNT=0x0600")
Packit Service 569379
endif()
Packit Service 569379
if(APPLE)
Packit Service 569379
	#full Single Unix Standard v3 (SUSv3) conformance (the Unix API)
Packit Service 569379
	add_definitions(-D_DARWIN_C_SOURCE)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
include_directories(
Packit Service 569379
	"compat/"
Packit Service 569379
	"src/"
Packit Service 569379
	"src/common/"
Packit Service 569379
	"src/common/public/"
Packit Service 569379
	"src/CPE/public/"
Packit Service 569379
	"src/CVE/public/"
Packit Service 569379
	"src/CVRF/public/"
Packit Service 569379
	"src/CVSS/public/"
Packit Service 569379
	"src/DS/public/"
Packit Service 569379
	"src/OVAL/public/"
Packit Service 569379
	"src/OVAL/probes/public/"
Packit Service 569379
	"src/OVAL/probes/SEAP/"
Packit Service 569379
	"src/OVAL/probes/SEAP/public/"
Packit Service 569379
	"src/OVAL/"
Packit Service 569379
	"src/source/public/"
Packit Service 569379
	"src/XCCDF/"
Packit Service 569379
	"src/XCCDF/public/"
Packit Service 569379
	"src/XCCDF_POLICY/"
Packit Service 569379
	"src/XCCDF_POLICY/public/"
Packit Service dbffd5
	"yaml-filter/src/"
Packit Service 569379
	${CMAKE_BINARY_DIR} # config.h is generated to build directory
Packit Service 569379
	${LIBXML2_INCLUDE_DIR}
Packit Service 569379
	${PCRE_INCLUDE_DIRS}
Packit Service 569379
)
Packit Service 569379
Packit Service 569379
# Honor visibility properties for all target types
Packit Service 569379
# Run "cmake --help-policy CMP0063" for policy details
Packit Service 569379
if (POLICY CMP0063)
Packit Service 569379
	cmake_policy(SET CMP0063 NEW)
Packit Service 569379
else()
Packit Service 569379
	message(WARNING "It is not possible to correctly set symbol visibility in object files with your version of CMake. We recommend using CMake 3.3 or newer.")
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
function(set_oscap_generic_properties TARGET_OBJECT)
Packit Service 569379
	set_target_properties(${TARGET_OBJECT} PROPERTIES
Packit Service 569379
		# Make global variables and functions HIDDEN by default.
Packit Service 569379
		C_VISIBILITY_PRESET hidden
Packit Service 569379
		CXX_VISIBILITY_PRESET hidden
Packit Service 569379
		POSITION_INDEPENDENT_CODE ON    # Compile this object code position independent.
Packit Service 569379
	)
Packit Service 569379
	target_compile_definitions(${TARGET_OBJECT} PRIVATE OSCAP_BUILD_SHARED)
Packit Service 569379
endfunction()
Packit Service 569379
Packit Service 569379
if(OPENSCAP_PROBE_INDEPENDENT_YAMLFILECONTENT)
Packit Service dbffd5
	add_library(yamlfilter_object OBJECT yaml-filter/src/yaml-path.c yaml-filter/src/yaml-path.h)
Packit Service 569379
	set_oscap_generic_properties(yamlfilter_object)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
add_subdirectory("compat")
Packit Service 569379
add_subdirectory("src")
Packit Service 569379
add_subdirectory("utils")
Packit Service 569379
add_subdirectory("docs")
Packit Service 569379
add_subdirectory("dist")
Packit Service 569379
add_subdirectory("schemas")
Packit Service 569379
add_subdirectory("xsl")
Packit Service 569379
add_subdirectory("cpe")
Packit Service 569379
add_subdirectory("swig")
Packit Service 569379
configure_file("run.in" ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/run @ONLY)
Packit Service 569379
configure_file("oscap_wrapper.in" ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/oscap_wrapper @ONLY)
Packit Service 569379
file(
Packit Service 569379
	COPY "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/run" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/oscap_wrapper"
Packit Service 569379
	DESTINATION ${CMAKE_BINARY_DIR}
Packit Service 569379
	FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
Packit Service 569379
)
Packit Service 569379
Packit Service 569379
if(NOT WIN32)
Packit Service 569379
	# pkgconfig file
Packit Service 569379
	configure_file("libopenscap.pc.in" "libopenscap.pc" @ONLY)
Packit Service 569379
	install(FILES
Packit Service 569379
		${CMAKE_CURRENT_BINARY_DIR}/libopenscap.pc
Packit Service 569379
		DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
Packit Service 569379
	)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# changelog
Packit Service 569379
if(GIT_EXECUTABLE AND SED_EXECUTABLE)
Packit Service 569379
	add_custom_target(changelog
Packit Service 569379
		COMMAND "${GIT_EXECUTABLE}" log | "${SED_EXECUTABLE}" '/^commit/d\; /^Merge/d' > "${CMAKE_BINARY_DIR}/ChangeLog"
Packit Service 569379
		COMMENT "Generating ChangeLog"
Packit Service 569379
	)
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# Ctest
Packit Service 569379
if(ENABLE_TESTS)
Packit Service 569379
	enable_testing()
Packit Service 569379
	add_subdirectory("tests")
Packit Service 569379
endif()
Packit Service 569379
Packit Service 569379
# CPack
Packit Service 569379
set(CPACK_SOURCE_PACKAGE_FILE_NAME "openscap-${OPENSCAP_VERSION}")
Packit Service 569379
set(CPACK_SOURCE_GENERATOR "TGZ")
Packit Service 569379
set(CPACK_SOURCE_IGNORE_FILES
Packit Service 569379
	"\\\\.git.*"
Packit Service 569379
	"build/"
Packit Service 569379
	"build-win32/"
Packit Service 569379
	"~$"
Packit Service 569379
	"\\\\CMakeLists.txt.user"
Packit Service 569379
)
Packit Service 569379
if(WIN32)
Packit Service 569379
	set(CPACK_GENERATOR WIX)
Packit Service 569379
	set(CPACK_WIX_PATCH_FILE "${CMAKE_SOURCE_DIR}/wix_patch.xml")
Packit Service 569379
endif()
Packit Service 569379
set(CPACK_PACKAGE_NAME "OpenSCAP")
Packit Service 569379
set(CPACK_PACKAGE_VENDOR "OpenSCAP Project")
Packit Service 569379
set(CPACK_PACKAGE_VERSION_MAJOR "${OPENSCAP_VERSION_MAJOR}")
Packit Service 569379
set(CPACK_PACKAGE_VERSION_MINOR "${OPENSCAP_VERSION_MINOR}")
Packit Service 569379
set(CPACK_PACKAGE_VERSION_PATCH "${OPENSCAP_VERSION_PATCH}")
Packit Service 569379
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/lgpl-2.1.rtf")
Packit Service 569379
set(CPACK_PACKAGE_CHECKSUM SHA512)
Packit Service 569379
Packit Service 569379
include(CPack)